最初はクソ使いにくかったVimが、ようやく普通に編集するレベルならVimを使えるようになってきました。
そこで最初のころに困ったり、不便さを感じるであろうことをまとめました。
編集系
ヤンクした内容が消えないようにする
ヤンクをした後に、d
とかx
を使って文字を消すと、ヤンクした内容が直前で消した内容で上書かれてしまいます。
こんな時は慌てずに"0p
とするとヤンクした内容が復活します。
これをいちいち打つのは面倒ですし、覚えにくいので、キーマッピングを設定します。
noremap PP "0p
<おまけ>レジスタについて
ヤンクした内容はレジスタに保存されます。
特に何も指定しない場合は無名レジスタに保存されるのですが、ヤンクした場合はヤンクレジスタという別の場所にも保存されます。
p
で貼付けをする時は通常無名レジスタを見ますが、レジスタの場所を指定することができるので、"0p
でヤンクレジスタから貼付ける、っていうことになります。
ヤンクレジスタはヤンクしない限り上書きされることはないです。
複数行が連続してインデントできない!
ビジュアルモードで選択して > を入力するとインデントができます。
が、ビジュアルモードが解除されてしまうため連続して入力することができません。
そこで以下の設定を.vimrc
に追加
vnoremap > >gv
vnoremap < <gv
他のエディタはやってくれるのに閉じ括弧を補完してくない
各種括弧を入力したときに、自動で括弧を閉じるようにしたいです。
Enterキーを押したときだけ補完をするようにしたいので下記のようにします。
inoremap {<Enter> {}<Left><CR><ESC><S-o>
inoremap [<Enter> []<Left><CR><ESC><S-o>
inoremap (<Enter> ()<Left><CR><ESC><S-o>
ちなみにautocloseっていうプラグインがあるからそっちをいれてもいいかも
https://github.com/Townk/vim-autoclose
対応する括弧を素早く移動したい
括弧の上で%
を実行すると、括弧の開始位置と終了位置を行き来できます。
ファイル操作系
別のファイルを開きたい
以外とvim使い始めはこの辺でつまずく、というか不便さを感じてしまうのでは、、、と思っています。
vimで他のファイルを開く時は、
- そのまま開く
- 画面を分割して開く
- タブで開く
の3種類あります。
:
入力後のコマンドモードでファイルを指定します。
個人的にはある程度横に分割していって、タブで開くみたいな感じでやってます。
そのまま開く
:e <ファイルパス>
画面を分割して開く
縦に分割
:vs <ファイルパス>
横に分割
:sp <ファイルパス>
ウィンドウ間の移動
<Ctrl>-ww
タブで開く
:tabnew <ファイルパス>
タブ間の移動
gt
開いたウィンドウを全部閉じる
:qa
ファイルを開くのをもう少しスムーズにやりたい
コマンドモードで%:h
とすると現在開いているファイルのパスが表示されます。
vimから他のファイルを開きたいときに重宝するので、こちらもキーマッピングします。
%%
と入力することで、%:h
と入力したときと同じ動作になります。
cnoremap <expr> %% getcmdtype() == ':' ? expand('%:h') . '/' : '%%'
検索系
単語として検索をマッチさせたい
aaa
aaabbb
aaa
bbb
上記のようなテキストが合った時に単純にaaaで検索するとaaabbbもヒットしてしまいます。
ここをヒットさせずに単語としてaaaのみを検索するようにするには、
コマンドモードで
/\v<aaa>
とします。
\vを使うことで<>
に特殊な意味を持たせることができます。
詳しくはvery magicとかで検索してみてください
検索結果のハイライトを消したい
:noh
no highlight の略かな
ESCキーにマッピングしてもいいですね
ビジュアルモードで選択中に開始位置がずれていた!ってとき
ビジュアルモードでo
でカーソル位置が選択開始位置に移動します。
もう一度oを押すとカーソルが選択終了位置に移動します。
この辺使いこなすときっと解決します。
ビジュアルモードで選択した範囲を検索したい
単語にカーソルを合わせて*
を入力すると、その単語で検索します。
これと同じようにビジュアルモードで選択して*
を押したときに選択した内容で検索をできるようにします。
ここはプラグインを使います。
NeoBundle 'nelstrom/vim-visual-star-search'
番外編:キーリピートを高速化
Mac限定の設定ですが、カーソル移動を速くすることでVimでの作業が断然スムーズになります。
システム環境設定 > キーボード で
キーのリピートとリピート入力認識までの時間を設定しましょう!
最後に
Vimは使えば使う程奥が深く、なんかvimをカスタマイズすることが目的になってないか?というような設定も多々見かけるんですが、その気持ちを少しずつわかってきました。
あんまりやりたくないのですが、、、
こんだけ書くなら晒せ!、っていわれそうなので一応vimrcを晒します。
php_vimってなってますが、phpはあんまり関係ないです。