昨年、Vimを使える人間になりたいという気持ちからVimに入門した。
まずvimtutorをやり、またVim以外のエディタを使うことを禁止して慣れるようにした。
vimtuorのあとは実践Vimを読んだりしながら日常使いの中でVimに慣れていった。
また基本的にプラグインを追加することを禁止し、不用意な.vimrc
の編集も禁止して、素の状態のVimに慣れるように気を配っていた。
そんなこんなでVimに慣れようとしていたわけだが、最初期vimtutorをやるだけではなかなかキーバインドが覚えられず、とても編集速度が遅かったので、同時にメモに書き出すことで覚えていたようである。
このときのメモをここに供養する。書いた日付は2019/10/28。
Vim :help 日本語化
まず次のコマンドを実行
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
次に~/.vimrc
に次の内容を追記
" .vimrc
call plug#begin('~/.vim/plugged')
" A project which translate Vim documents into Japanese.
Plug 'vim-jp/vimdoc-ja'
call plug#end()
set helplang=ja,en
次にVimを立ち上げて:PlugInstall
と入力しプラグインをインストールする
参考: Vimをちゃんと知りたい!だからHelpを日本語化する!
.vimrcを無視する
.vimrcを書き換えて起動しなくなったら
$ vim -u NONE -N
# -u None ... .vimrcを読み込まない vi互換モードにする
# -N ...(nocompatible) vi互換モードをオフにする
. 直前の操作を繰り返す
ノーマルモード
直前のコマンドを繰り返す(カーソル移動はコマンドとみなされない) (ex.x
, dd
, >G
)
インサートモード
挿入モードに入った瞬間(i
を押す等)からノーマルモードに戻る(<Esc>
を押す)までの間のキーストロークが記録されている
.を押すことでこの一連の流れを再生できる
移動
h
... ←j
... ↓k
... ↑l
... →$
... 行末に移動w
... 次の単語へ移動gg
... ファイル先頭へ移動G
... ファイル末尾へ移動{数字}G
... {数字}行目に移動<Ctrl>G
... 現在のカーソル行を表示>G
... 現在の行からファイル末尾までのインデントを1段深くする
基本操作
x
... カーソル下の文字を削除dd
... 行頭から行末まで削除i
... インサートモードへ切り替えa
... カーソルの右隣でインサートモードへ切り替えA
... 行末に移動してインサートモードに切り替えo
... 次行を作りインサートモードへO
... 前行を作りインサートモードへu
... アンドゥ 戻るU
... 行単位でアンドゥ 戻る<Ctrl>R
... リドゥ 戻るの取り消し0
... 行頭へ移動p
... 貼り付け (削除したものを貼り付け 例えばdd
コマンドで削除した行等r
... 置き換え カーソル下の文字を一文字消して次に入力した一文字で置き換える。なお置き換え後もノーマルモードを維持するR
... 置換モード カーソル下を上書きして文字を挿入する escキーでノーマルモードに戻る%
... 対応する括弧へ移動yy
... 行をヤンクyw
... カーソル後ろの空白を含む単語をヤンク
モーション操作
d
ノーマルモードでモーション操作を行うとカーソル移動
d{モーション}
を行うと現カーソルからモーション先まで削除
d{数字}{モーション}
ないし{数字}d{モーション}
は等価で、数字個先のモーションの差示す場所まで削除する
e
c{モーション}
を行うと、現カーソルからモーション先まで削除して挿入モードに切り替え
モーション
w
... 空白を含む単語尾e
... 空白を含まない単語尾$
... 行末
コマンド
終了
:q!
... 内容を破棄して終了:wq
... 内容を保存して終了
書き込み
:w filename
... ファイルfilenameへ書き込み
検索
/hoge
... hogeを前方検索?hoge
... hogeを逆方向に検索- (検索した状態で)
n
... 次を検索 - (検索した状態で)
<Ctrl>o
... 一つ前の検索結果に戻る
置換
:s/before/after
... カーソル行の1つ目のbeforeをafterへ置換:s/before/after/g
... カーソル行の全てのbeforeをafterへ置換:3,5s/before/after/g
... 3行目から5行目の全てのbeforeをafterへ置換:%s/before/after/g
... ファイル内全てのbeforeをafterへ置換:%s/before/after/gc
... ファイル内全てのbeforeを都度確認しながらafterへ置換
検索/置換のオプション
:set ic
... 検索時に大文字小文字を区別しない(ignorecase):set is
... 検索フレーズに部分マッチしている部分を表示する(incsearch):set hls
... マッチする全てを強調表示する(hlsearch)
ターミナルコマンド実行
:!ls
... lsを実行(のちエンターでvimに戻る)
挿入
:r filename
... filenameの内容をカーソル位置へ挿入:r !ls
... lsの結果をカーソル位置へ挿入
help
:help
... helpウィンドウを開く:help hoge
... hogeに関するhelpを見る
候補と保管
:e<TAB>
... eから始まるコマンドを補完:e<Ctrl>d
... eから始まるコマンドを一覧表示
visualモード
v
... visualモードへ切り替え カーソルを移動させると、visualモード移行時のカーソルとの間が反転し選択される- (visualモードで短形選択時)
:'<,'>w filename
('<,'>
は自動で入力される) ... 短形選択部分をfilenameへ書き出し - (visualモードで短形選択時)
y
... ヤンク(コピー)