はじめに
みなさん、こんにちは
torihaziです
さて今回は Vimを使ってこの記事を書いてみることにしました。
ただ画像埋め込みはこっちでやりました。
vimとはなんぞや
という方に説明すると linuxとかのCLIでよくお世話になるテキストエディタのことです。
慣れないと扱いが難しいですが、慣れたら頼もしい子なので
ぜひ勉強してあげてみてください。
目次(ここをクリック)
- はじめに
- Vimを使う前に
- Vimを使ってみる(vimtutorを通して)
- 終わりに
Vimを使う前に
私の環境について
今回の私の環境は下記の通りです。
Linux初学者の方はふーんと読み飛ばしてください。
仮想2Core/1GB メモリ/SSD 50GB
AlmaLinux release 9.3 (Shamrock Pampas Cat)
Vimがあるか
vimがあるかないかは次のコマンドで確認できます。
ある場合は次のような表示が出ます。
# dnf list installed vim-enhanced vim-enhanced.x86_64 2:8.2.2637-20.el9_1 @appstream
入っていない場合(ここをクリック)
私は最初入っていなかったのでインストールを行いました。
その際はvim-enhanced.x86_64
という人がいるので
その人を下記コマンドでダウンロードしてみてください。
# dnf search vim (<= 対象があるか調べるコマンド) ~~ vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements ~~ # dnf install vim-enhanced (<= 対象をインストールするコマンド) インストール状況を示す表示がなされます。 しばらく経つとインストール完了を示す表示がなされます。 # dnf list installed vim-enhanced(<=インストールされているか確認するコマンド) vim-enhanced.x86_64 2:8.2.2637-20.el9_1 @appstream # dnf repoquery --list vim-enhanced (<=インストールしたことによって追加されたファイルを確認するコマンド) ~~~ /usr/bin/vim (<=今回のメイン) ~~~ /usr/bin/vimtutor(<=vimのチュートリアルをするのに必要)
Vimを使ってみる(vimtutorを通して)
インストールもできたことなので、実際に使ってみましょう。
今回はvimtutor
というvimのチュートリアルができるものがあるので
それを元に説明していきます。(読むだけじゃ慣れないので実際に使いましょう)
ターミナルで vimtutor
と入力して実行してみましょう。
すると次のような画面が表示されます。
(英語なんですね。日本語って書いてあったのに。)
Lesson 1 vimの基礎
Lesson 1.1 カーソルを動かす
ご存知のようにCLIではマウスが使えません。
そのため普段テキストファイルをいじる要領で
違う行の違う文字をマウスでクリックしてもだめです。
キーボード上のキーを押すことで移動します。
移動方法は次の通りです。
- kもしくは矢印上キーを押すと、カーソルが上に移動
- lもしくは矢印右キーを押すと、カーソルが右に移動
- jもしくは矢印下キーを押すと、カーソルが下に移動
- hもしくは矢印左キーを押すと、カーソルが左に移動
この項目のレッスン内容は次の通りです。
慣れるまでカーソルを動かしてみんしゃい。
j を押し続けると次のレッスンに行けまっせ。
矢印下を押しても行けまっせ。
後述しますが、vimには幾つかのモードがあります。
もしvimをいじっていておかしいなと思ったら escキー
を押してください。
そうするとインサートモードでもビジュアルモードでもなく通常のモードに戻ります。
ちなみに矢印キーよりもhjklの方が早いみたいです。(本当でしょうか。信じ難いです)
※vimのモードについて(ここをクリック)
vimのモードについて最初から容赦なくバシバシ使われるので
各モードの見分け方について簡単に説明します。詳細は後述します。
vimには
- 通常モード
- 挿入モード(インサートモードともいう)
- ビジュアルモード
の3つのモードがあります。
この3つの見分け方は vimの画面の左下を見てください。
通常モードでは何も表示されませんが、
挿入モードであればINSERT、ビジュアルモードであればVISUALと画面左下に表示されます。
通常モードであると後述する保存するコマンド:wq
が入力できます。
VISUALモードは:wq
などが入力できません。
INSERTモードは:wq
などが入力できません。ファイルにそのまま追記されます。
1.1の総括
vimを使ったカーソル移動手段は
hjklキー
か矢印キー
不安に感じたら
escキー
で通常モードへ
Lesson 1.2 vimから抜ける
vimから抜ける手段は次の通りです。
以下はvimtutorの説明と少し違いますがこれだけではだめなので追加説明です。
escキー
を押して、通常モードへ- 次のいずれかで閉じる
- vimで開いたファイルを何もせず閉じる場合は
:q
を入力してEnter
を押す - 追記修正したものを保存して閉じる場合は
:wq
を入力してEnter
を押す - 追記修正したものを保存せずに閉じる場合は
:q!
を押してEnter
を押す
- vimで開いたファイルを何もせず閉じる場合は
自分が行いたいことによってコマンドを使い分けてください。
またこれ以外にも閉じる方法はあります。
ただこれだけでも実務は可能なので興味がある人は調べてみてください。
1.2の総括
vimを抜ける場合は
通常モード
に移ってから:q
、:wq
、:q!
のいずれかを入力してEnter
Lesson 1.3 テキストの編集 - 削除編
1.3の総括
カーソル下のテキストを削除するためには
通常モード
でxキー
です。
Lesson 1.4 テキストの編集 - 挿入編
1.4の総括
カーソル下にテキストを追加するためには
通常モード
でiキー
です。
挿入モード
から戻る場合はescキー
です。
Lesson 1.5 テキストのの編集 - 追記編
1.5の総括
行末にテキストを追加するためには
通常モード
でAキー
です。
挿入モード
から戻る場合はescキー
です。
Lesson 1.6 ファイルを編集する
1.6の総括
新規ファイルを編集するには ターミナルで
vim 新規ファイル名
です。すでにあるファイルを編集するには ターミナルで
vim 編集対象ファイル名
です。編集したファイルを保存するためには
通常モード
で:wqキー
です。
Lesson1の総括
Lesson 2 へ行く前にさらっとおさらいしましょう。
- vimでカーソルを動かすには?
- そもそもファイルをvimで開くには?
- カーソルが当たっている箇所の文字を削除するには?またそれは何モードで?
- カーソルが当たっている箇所に文字を挿入するには?
- 行末に文字を追記するには?
- 保存しないで閉じる、保存して閉じるためには?
これがさらっとできれば次に行きましょう
Lesson2
Lesson2.1 削除のd - その1
ここからはテキストを削除するための他の方法を学びます。
今回は dw
です。(コロン:
はいらないので注意)
dw
は通常モード
で使用し、カーソルが当たっている単語を削除します。
are
を削除するために通常モード
でd
と打つと、画面右下にd
と表示されます。
続けてw
と入力すると、are
が削除されます。
もしd
を押して、やっぱやめたとする場合はescキー
を押すと入力を初期化できます。
削除してしまって、戻す!!となったら通常モード
でu
押せば戻ります。
2.1の総括
単語を削除するには 通常モードで
dw
戻す際は
u
Lesson2.2 削除のd - その2
カーソルが当たっている行でカーソル以降の文章行末までを丸々削除することができます。
やり方は 通常モード
で任意の場所でd$
を入力します。
例示されているSomeのe
にカーソルを当てて d$
を入力してみた結果です。
2.2の総括
カーソルがある行でカーソルが当たっている文字以降を削除するには 通常モードで
d$
Lesson2.3 削除の dの仕様について
ここではこれまで学んできた削除コマンドであるd
の仕様に関する説明となります。
削除コマンドd
は後ろにe
やw
、$
をつけることで挙動が異なります。
w
: カーソルが当たっているところから次の単語の初めの文字を除くところまで削除します。e
: カーソルが当たっているところからその単語の最後まで削除します。$
: カーソルが当たっている文字以降を行末まで削除します。
このうち、wとeがわかりづらいかと思うので解説します。
今、Pressingのeにカーソルが当たっている状態です。
dw
はPressingのessing
(just前のスペース含む)まで、
de
はPressingのessing
(just前のスペースは含まない)まで削除します。
必要に応じて使い分けてください
2.3の総括
削除コマンドには
dw
、de
、d$
がある
Lesson 2.4 回数を付与する
もっと早くカーソル移動したいというそこのあなた
朗報です。もっと早く移動できる方法があります。
w
で次々と単語の先頭に行けるが、2w
とすると2単語先の先頭に行けるe
で次々と単語の末尾に行けるが、3e
とすると3単語先の末尾に行ける0
とすれば、行頭に行ける
2.4の総括
回数を表す数字を付与するとその回数分コマンドを実行してくれる
Lesson 2.5 回数をつける - その2
※これは私も初めて知りました。
d2w
とすることで、dw
を2回分してくれるそうです。
ちなみに2dw
でも同じ挙動でした。
2.5の総括
d2w
も2dw
も同じ。dw
2回分
Lesson 2.6 行削除
行を消したいなら、dd
でカーソルがある行を丸々削除できます。
これも2行消したいなら 2dd
です。
2.6の総括
行削除は
dd
、2行削除は2dd
Lesson 2.7 戻すコマンド
エクセルとかでも1つ戻るってありますよね。あれです。
1つ戻るにはu
、全戻しはU(大文字)
とあります。
※個人的にはu
は使いますが、全戻しなら:q!
で最初からやり直すことがほとんどです。
2.7の総括
戻りたければ
u
押しとけば OK。
Lesson 2 の総括
dw
とde
とd$
は何が違う?- 1行削除をするのは? じゃあ2行なら?
- 1つ戻りたいなら、何を押せばいい?
さらっとやって次に行きましょう。
最初から全てを理解する必要はありません。
私もまだ全ては理解しきれていません。一緒に頑張りましょう。
Lesson 3 vim編集編(個人的に最もためになった)
Lesson 3.1 貼り付けの p
タイトルの如く、テキストの貼り付けが p
で行うことができます。
例えばdd
で1行削除したものを別の箇所に挿入したい場合は
通常モード
で挿入したい箇所の1行上にカーソルを当ててp
を入力します。
※これは個人的によく使います。
3.1の総括
通常モードにおけるテキスト貼り付けは
p
を入力するなお入力前に
dd
等でテキストを切り取っておくことが必要。
Lesson 3.2 置き換えの r
※これは革命でした。知らなかったです。
カーソルが当たっている箇所の文字G を Hに変えたいという場合
そんな時は Gにカーソルを当てて rH
と打てば解決
3.2の総括
文字置き換えは置き換え対象にカーソルを当てて
r○
(○は置き換えたい文字)
Lesson 3.3 単語書き換え
wptfd じゃなくて wordとしなければならない時
pからdをx
で消して、i
を押してordを追記する。
ということはせずにpにカーソルを当ててce
を押してください。
そうするとptfdが消えかつインサートモードにまでなります。
3.3の総括
単語書き換えであれば
ce
、一文書き換えならcc
が早い
Lesson 3.4 変更の c
Lesson3.3で少し学習した c
の深掘りです。
以前学習した削除のd
と同じような使い方が可能です。
- 単語を書き換えたい場合は書き換え対象の単語にカーソルを当てて
cw
orce
- カーソル以降の文章を行末まで丸々書き換えたい場合は
c$
3.4の総括
書き換えるなら
ce
、cw
、c$
、cc
Lesson 3 の総括
dd
で切り取ったものを貼り付けるためには?- カーソルが当たっている箇所の文字を書き換えるには?
c
と言えばどういうことができる?
暗記ゲーではありません。使わないと使えません。
Lesson 4
Lesson 4.1 hjklより大きく動く
今までvimにおける移動方法は hjklもしくは矢印キーによる1個ずつ移動しか知らなかった人へ。
そのやり方で1000行目にある変更対象を見に行きますか。
応援してます。下を押し続けていればきっと行けます。
なんてことはありません。日が暮れます。
ここからはもっと大きく動きましょう。
1000行目に行く方法は 1000G
と入力するだけです。
ちなみにファイル先頭に行くにはgg
、ファイル後尾に行くにはG
で行けます。
現在地を知りたい場合はCtrl G
(コントロールキーを押してG)です。
そうすると画面下側に今何行目で全体の~%ですよと表示が出ます。
※ちなみにvimに行数を表示させたい場合は通常モード
で:set number
とすれば出ます。Lesson2.4のイメージです。
4.1の総括
大きく動くなら
1000G
、G
、gg
。現在地はCtrl G
Lesson 4.2 検索の術
検索をするには/
を入力してその後に検索キーワードを入力します。
ヒットした場合n
で次の検索ヒット箇所へ、N
で1つ前の検索ヒット箇所へ行けます。
4.2の総括
検索するなら
/
スラッシュね。n
とN
で次行けるよ。
Lesson 4.3 いなくなった相方を求めて
たまに かっこの閉じ忘れでエラーになることがあります。
そんな時役に立つのが%
くん。
%
と入力するだけで(
の相方である)
がいるか探して、いたらその子にカーソルが当たります。
JSONファイルとかを書くときに役に立ちそうですね。
4.3の総括
()、{}、[]の相方探しは
%
押しておけ。
Lesson 4.4 置換ですよ、痴漢じゃなくて。
あっちにもこっちにも同じ文字の置き換えをしなきゃ。
そんな時があります。設定ファイルをいじったり、スクリプトをいじっているとあります。
そんな時役に立つのが置換のコマンド
書き方はやや特殊ですが、とても強い子です。
:%s/置換対象の文字/置換後の文字
: ファイル内で初めてヒットしたものを置換:%s/置換対象の文字/置換後の文字/g
: gとつけるとファイル内ヒットしたもの全て置換:%s/置換対象の文字/置換後の文字/c
: cとつけると置換するか確認できる(gcも同じかと)行数,行数s/置換対象の文字/置換後の文字/g
: 指定行範囲のうちヒットしたもの全て置換
※個人的には g
の一括置換を使うことが多いです。
4.4の総括
置換したきゃ
:%s/ / g
。慣れるしかない!
Lesson 4の総括
- 1000行目に飛ぶには?
- ファイル末尾に飛ぶには?なら先頭は?
- 前方検索は?後方検索は?(これは直接書いていません。画像にヒントが。)
- 置換したきゃ?
萎えてきましたか?Vimをマスターしようとしてはダメですよ。
vimはあくまでも手段です。vimを使って何がしたいのかそれをまず考えましょう。
私ならそうですね。vimだけで迷路を書きます😃
Lesson 5 (私はあまり使いません)
Lesson 5.1 外部コマンド実行方法
vimをしている最中にls
とかcat
を打ちたい時ってありますよね。(私はないです)
そんな時は :!
としてからOSのコマンドです。
:!ls
とすれば ls
の結果が出ますし、:!ls -l
としたらls -l
の結果がでます。
5.1の総括
vim中にOSコマンドするなら
:!
してから入力すること
Lesson 5.2 外部コマンドその2
vimをしている最中に、今編集しているそのファイルをある名前で保存したいとき
:w test
とすれば、testというファイル名で保存されます。
削除したい場合は :!rm test
です。(私は使ったことありません。)
5.2の総括
(再掲)vim中にOSコマンドするなら
:!
してから入力すること
Lesson 5.3 ビジュアルモード
通報モード
においてv
を押すとビジュアルモード
になります。
ここでは、範囲選択したテキストをそのまま別ファイルに保存する術を学びます。
v
をおしてカーソルを動かし、選択したら:
と入力- すると
:'<.'>
と画面下側に表示されるので続けてw ファイル名
と入力
そうするとLesson 5.2のようにファイルが保存されます。
ただし、ビジュアルモードでよく使うのは記述の通りd
やy
の時ですね。
5.3の総括
ビジュアルモードは範囲選択ができる
ビジュアルモードでよく使うのは
d
削除やy
コピーの時。
Lesson 5.4 外部ファイルの内容を導入する
Lesson 5.3で test というファイル名で保存したと思います。
そのtestの中身をそのまま今のvimに挿入したい時、:r test
とすれば
カーソルが当たっている下の行に挿入されます。
また挿入できるのはファイルだけではなくて、外部コマンドls
も可能です。
使い方は書いてある通り、:r !ls
です。するとls
の結果がそのまま挿入されます。
5.4の総括
:r
で外部ファイルや外部コマンドの結果をそのまま挿入できる
Lesson 5の総括
- 外部コマンドを実行するには?
- 編集中のファイルをある名前testで保存するには?
- vimから抜けないで、
ls
の結果をそのまま挿入するには?
少し難しくなってきましたね。 私も知らないことが多かったです。
これ便利だな、これは意味ないかもと自分の中で使い分けをしていってくださいね。
何度も言いますが、全部を使いこなす必要はないです。
Lesson 6
Lesson 6.1 1行上or下に挿入する(よく使います。)
カーソルの1行下に空1行挿入してから挿入モード
にするには o
カーソルの1行上に空1行挿入してから挿入モード
にするにはO
どちらもよく使います。
6.1の総括
o
とO
はよく使います。1行開けて挿入します。
Lesson 6.2 挿入するa と A
以前、挿入するときはi
やらo
やらO
やら学んだかと思いますが、まだあります。
a
はカーソルの右隣から追記できる挿入モード
に、
A
は行末から追記できる挿入モード
になることができます。
6.2の総括
挿入モードへは色々なキーから入ることができます。
Lesson 6.3 r の上位互換(ではないかもしれない)
こちらも以前学んだ置き換えのr
に近いものです。
r
は一文字しか置き換えることができませんでしたが、
R
にすればリプレイスモード
になり、現在のテキストを次々と置き換えることが可能です。
リプレイスモード
はインサートモード
に似た物だそうです。
6.3の総括
なんでも置き換えるモード、
R
で入れます。
Lesson 6.4 コピペ
新しく出てきましたy
はコピー担当です。
yy
とすれば1行丸々、yw
とすれば単語をコピーできます。
コピーしたものはp
で貼り付け可能です。
6.4の総括
コピーするなら
y
ですね。
Lesson 6.5 オプションを設定
ここでは検索時に役立つオプションを紹介します。
- 大文字小文字を区別しないで検索するためには 検索時に
:set ic
- 大文字小文字を区別して検索するためには検索時に
:set noic
- 検索してヒットした箇所を目立たせるためには
:set hls
or:set hlsearch
- 検索時入力中の文字で検索をかけ、それを目立たせるようにするには
:set is
or:set incseach
感動したのはincsearch
ですね。(インクリメンタルサーチというそうです。)
6.5の総括
検索時には色々オプションがあります。
便利なものが色々あるので調べてみてください。
Lesson 6の総括
o
とO
の違いは?a
とA
の違いは?- コピーするには?
リプレイスモード
になるためには?
お疲れ様でした。ここまで来れば怖いものなしです。
たくさん触って、使いこなしてやりましょう。
おまけ
ここに載っていなかったもの
私が知っているものでvimtutorには載っていなかったものがあったのでご紹介します。
vim外からコピーしたテキストの貼り付け方法です。
なんてことはありません。
Ctrl + C
か command + C
をしてから挿入モード
で command +v
です。
私はよく使ってます。(※Ctrl Cがダメなら alt c とかですね。)
終わりに
いかがだったでしょうか。
かなりロングコースだったと思います。
何度も言いますが、使わないと覚えません
あと、これマスターしたら少なくとも実務は余裕だと思います。
私も全くの未経験から vimを触り始めました。
きっかけはなんでもいいです。とにかく触りまくってください。
ただvimを完璧にマスターしてやる!!と意気込むと、ゴールが見えないので
お勧めしません。多分挫折します。
なのでとりあえずのゴールがあるものを目標にして勉強した方がいいです。
udemyのvimマスターのような講座などをお勧めします。
頑張ってください。応援してます。
(ちなみにこれはvimで書きました。プレビューが見えないのでとてもストレスでした。
画像、目次は流石にここにコピーして差し込みました...)