今回は、私自身現在エンジニアとして働いていますが、Vim(Neovim)に関してはちょろっとコマンド知ってるくらいのほぼ初心者だったので、基本的なコマンドを備忘録としてまとめました。
VimとNeovimの違い(背景など)
- Vimは昔から使われているが、古くから開発されているので、動作とかがちょっと遅くなってきているだとか、複雑になってきているというところがあるので、過去に改善を積み重ねてきたVimを作り直し、軽量化や拡張性を考慮した新たなVimとしてNeovimがつくられた。
- Vimができることは、ほぼNeovimでできる
- 使い方はほぼ一緒なので、Vimを習得してもNeovimを習得してもスキルレベルはほぼ一緒
- 今後の世間の動向で切り替えれば良い
- Neovimの方がよりプラグインが豊富
Vim |
Neovim |
拡張しにくい |
拡張しやすい |
LSPサポート(他のプラグインに依存) |
LSPサポート(備わっている) |
Neovimのエイリアス設定
以下の手順で設定ファイルにエイリアスを記述する(VimコマンドでNeovimが起動するようにする)
# ①編集するファイルを開く
$ open -a TextEdit ~/.zshrc
または、
$ vim ~/.zshrc
# ②以下を追加▼(VimコマンドでNeovimが起動するようにエイリアス設定)
alias vi="nvim"
alias vim="nvim"
alias view="nvim -R"
# vimで編集した場合は、escキーでインサートモードから抜けたら :wq (保存して終了)を実行
# ③中身の確認
$ cat ~/.zshrc
# ④変更が反映されるよう保存
$ source ~/.zshrc
Vim(Neovim)の基本操作
移動系
vimコマンド |
実行結果 |
k (Normal Mode) |
↑に移動 |
j (Normal Mode) |
↓に移動 |
h (Normal Mode) |
←に移動 |
l (Normal Mode) |
→に移動 |
単語移動
vimコマンド |
実行結果 |
w |
単語の先頭に順移動 |
b |
単語の先頭に逆移動 |
e |
単語の末尾に順移動 |
ge |
単語の末尾に逆移動 |
編集系
- Viewモード
- 何か間違えてファイルを書き換えたくないけども、Vimの機能を使って移動したいとか、そういった時に使う
vimコマンド |
実行結果 |
i |
インサートモード |
a |
次の文字からインサートモード |
o |
選択行の下に空白を入れ、インサートモード (コメントを書く時などよく使う) |
O |
選択行に空白を入れ、インサートモード |
esc |
Normal mode |
:w ファイル名 |
名前をつけて保存 |
:w |
上書き保存 |
:q |
編集終了 |
:q! |
保存しないで編集終了 |
:wq |
保存して終了 |
view |
Viewモードで起動 |
削除系
vimコマンド |
実行結果 |
vim /tmp/test/test.txt |
ファイル指定で開く |
x(ノーマルモード) |
1文字削除 |
dd(ノーマルモード) |
1行削除(同時にコピーしてくれる) |
dw(ノーマルモード) |
単語の削除 |
cw(ノーマルモード) |
単語の削除(実行後インサートモード) |
2dd(ノーマルモード) |
2行削除(指定した数だけ行を削除) |
u(ノーマルモード) |
Undo(戻す) |
Control + r(ノーマルモード) |
Undo redo(進める) |
コピー・ペースト系
vimコマンド |
実行結果 |
yy(ノーマルモード) |
1行コピー |
:%y |
全行コピー |
p(ノーマルモード) |
下にペースト |
P(ノーマルモード) |
現在行にペースト👈よく使う! |
. |
直前に実行したコマンドを再度リピート |
v(ビジュアルモード) 移動してからy(yank) |
カーソル指定コピー |
検索・置換系
vimコマンド |
実行結果 |
/{検索したい文字列} 例) /hoge |
検索(検索結果の文字がハイライトで表示される) |
:noh |
ハイライトを消す |
:set hlsearch |
再度ハイライトを表示 |
n |
次の検索結果に移動 |
N |
前の検索結果に移動 |
R |
置換(あまり使わない) |
:%s/{検索したい文字列}/{置き換えたい文字列}/g |
一括置換 |
:%s/{検索したい文字列}/{置き換えたい文字列}/gc |
1箇所ずつ確認しながら置換 |
その他の移動(ファイル内移動)
vimコマンド |
実行結果 |
:set number |
行番号を表示 |
:10 |
10行目に移動 |
$ |
行末に移動 |
0 |
先頭に移動 |
^ |
インデントの先頭に移動 |
{ |
段落毎に上に移動 |
} |
段落毎に下に移動 |
[[ |
セクション毎に上に移動 |
]] |
セクション毎に下に移動 |
:1 もしくは gg |
ファイルの先頭に移動 |
G |
ファイルの最後に移動 |
Control + o |
移動前に戻る |
Vimのコマンドモードでスクリプトを実行
前提条件
vimで編集したPythonスクリプト(test.py)をvimのコマンドモードで実行したい時(Python3系をインストール済みとする)
-
vimのコマンドモードで実行する
- 一連の流れとして以下を入れてやる
:!python3 test.py
-
編集して再度実行を繰り返したい時
- i(インサートモード)で編集
-
:w
で変更内容を保存
-
:!!
で前に実行したコマンドを参照して実行
参考資料
現役シリコンバレーエンジニアが教える NeoVim(VIM) + Tmux + Zsh 入門 - Udemy