昨日まで知らなかったVimコマンド達

Vimコマンドについて少しだけ勉強した。折角だから備忘録として残すことにしよう

コマンド編

gj 問答無用で一つ下にカーソルを移動

jでカーソルを一行下に動かせるが、長い行が折れて複数行にまたがって表示されていた場合、直感と異なる動きをすることになる。データとしての一行下ではなく、表示されている一行下に移動するのでとても嬉しい。
デフォルトの移動をこれにするため、.vimrcにこれを追加した

nnoremap j gj
nnoremap k gk

gkは問答無用で一つ上に移動する

= インデントを整える

「どっかにあるんだろうな」とは思っていたが、今まで知らなかった。Pythonだと実感が沸かないけど、CとかPerlとか書くのに便利。
使い方は={motion}とか{visual}=とか。例えば

sub func{
my ($self, $arg) = @_; 
print $arg;
}

をvisualモードで選択するなりしてから、=を押すと

sub func{
    my ($self, $arg) = @_;
    print $arg;
}

となる。

V + !sort 選択範囲をソート

使うことがあるか分からないけど、例えばPythonのimport文を並び替えたりするのに使えるかも。例えば

import ZZZ 
import GGG 
import UUU 
import CCC 
import KKK 
import AAA 
import LLL 

をVで選択して、!sortと入力すると

import AAA
import CCC
import GGG
import KKK
import LLL
import UUU
import ZZZ

となる。

挿入モード編

Ctrl-o 一コマンド分だけ挿入モードを抜ける

入力中に1行だけ上にいきたいときとかに使う。これは便利。

Ctrl-d インデントを一つ下げる

Pythonだとif文の終わりとかをインデントを下げることで明示的に示す必要があるが、Vimのautoindentモードだと同じ深さから必ず行が始まるので、いままではいちいち削除していた。Ctrl-Dを使うとこれがちょっと楽になる。

Ctrl-t インデントを一つ上げる

Ctrl-dほとでは無いがこれも便利。Ctrl-dで下げ過ぎた場合とかに使うかも。

Ctrl-p 自動補完

テキスト入力中に該当しそうな単語を引っ張ってきてくれる。意外と便利