vim で指定行をジャグリング


ジャグリングなんて書くと訳わかりませんね。要するに、vim のビジュアルモードで指定した行を最短手順でコピペするプラグインの紹介です。

LineJuggler – Duplicate and move around lines. : vim online
http://www.vim.org/scripts/script.php?script_id=4140

インストール

このプラグインは Vimball 形式で配布されております。インストールがめんどいから嫌いなんですよね……これ。

次のようにすれば無理矢理にでも Vundle を併用可能です。

" Vimball でインストールするディレクトリを指定する
:let g:vimball_home = expand("~/.vim/bundle/vba-LineJuggler")
" インストール
:edit ~/Downloads/LineJuggler-1.21.vmb.gz
:source %
" インストールが終わったら .vimrc に次の行を追記する
Bundle 'vba-LineJuggler'

何ができるの?

このプラグインにより、ビジュアルモードで選択した行を 移動コピー したり、指定した行数分だけ 空行を追加 することが一つのコマンドで出来るようになります。

なんつーか……、エラいニッチなコマンドですよね。どのくらいの人がこれを必要としてるんでしょうか。でも、慣れると便利ですよ。

それではコマンドを解説していきましょう。

[<Space>
カーソルの上に [count] 行の空行を追加します。
]<Space>
カーソルの下に [count] 行の空行を追加します。
[e
こっからはちょっとわかりにくいです。ビジュアルモードで選択した範囲をカーソルの [count] 行上方へ移動させます。ノーマルモードで実行された場合は、カーソルのある行が選択されたものとして実行されます。
何のことやらわからないと思うので動画に撮ってみました。

どうでしょ。余計わかりにくいですかね。ビジュアルモードで選択したあと、11[e というコマンドで、範囲を 11 行上へ動かしています。
設定で行番号を相対行番号表示にしてあります。このプラグインを使う場合は、通常の行番号表示ではやりにくいです。
]e
[e の逆で、カーソルの下方に移動させます。
[E
ビジュアルモードで選択した範囲をカーソルの [count] 行上方から始まる行と交換します。
]E
[E の逆で、カーソルの下方と交換します。
[d
カーソルのある行、あるいは、ビジュアルモードで選択した範囲をカーソルの [count] 行上方に複製します。
]d
[d の逆で、カーソルの下方に複製します。
[D
カーソルのある行、あるいは、ビジュアルモードで選択した範囲をカーソルのすぐ下に [count] 回連続して挿入します。
]D
[D の逆で、カーソルの上方に [count] 回連続して挿入します。
[f
カーソルのある行から数えて、[count] 行下にある行をカーソルの直下に挿入します。
]f
カーソルのある行から数えて、[count] 行上にある行をカーソルの直下に挿入します。
[r
カーソルのある行から数えて、[count] 行下にある行をカーソルのある行に上書きします。
]r
カーソルのある行から数えて、[count] 行上にある行をカーソルのある行に上書きします。

正直全部覚えるのは大変ですね。内容もずいぶんマニアックです。僕が実際に使うのは [e]e[d]d、の 4 つくらいです。実際の編集作業ですぐに使うのは難しいかもしれませんが、マクロの中で使っていくと便利なんじゃないでしょうか。

コメントを残す