【vim】複数行をカット、ヤンク(コピー)、ペースト
問題
viって、指定した範囲の複数行のカットや、複数行のコピペがものすごい面倒ですよね?
答え
mコマンドを使うと、割と簡単。
mコマンドはマークをつけるコマンド。「この行から、この行まで」ができるようになる。
マークはa-zの任意の文字を使えるが、開始(start)のsと、終了(end)のeぐらいがあれば、ほぼ事足りる。マーク1つで対応するときは何でも押しやすいキーでよい。
1、カット(もしくはヤンク)したい範囲の開始の行にカーソルを移動。
2、マークする(msと入力)。
3、カット(もしくはヤンク)したい範囲の終了の行にカーソルを移動。
4、マークする(meと入力)。
5、「:'s,'ed
」+ Enter でカット、「:'s,'ey
」+ Enter でヤンクできる。
もうちょっと短くすると、
1、カット(もしくはヤンク)したい範囲の開始の行にカーソルを移動。
2、マークする(msと入力)。
3、カット(もしくはヤンク)したい範囲の終了の行にカーソルを移動。
4、d's
でカット、y's
でヤンクできる。範囲はマークsの行から、現在のカーソルの行まで。
目測で行数を数えて、11行かな12行かな? → y12j などしていると、すごく面倒。
開始のマーク付け(ms
)、終了のマーク付け(me
)、カット、ヤンクのコマンド(:'s,'ed
や y's
) に慣れるべし。
lisper 2013年12月11日 10:14
visualモードじゃだめなんですかいの。
yoshimura 2013年12月11日 10:42
vi,vim,どこまで機能のあるvimかの表現があいまいですみません。
visualモードが使える環境で、visualモードを使いこなしている場合はそれでよいと思います。
redhat系のパッケージだと、vim-minimalかvim-enhancedではできることが違うので、vim-minimalでもできる方法を書きました。
yukimura1227 2014年7月12日 16:19
「vi 複数行 切り取り」で調べていたらたどり着きました。
参考にさせていただいたのでしばらく使っていたのですが、edコマンドを使ったらもっとシンプルにできたので、共有させていただきます。
例えば、20行目~30行目まで切り取るのであれば、以下のコマンドで実現できました。
「:20,30d]
※「:se nu」で行数を表示しておけば、さらに便利です。