昨年、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... ヤンク(コピー)