Hack #223: テキストを直感的に移動、複製する
Posted at 2011/07/18ツイート
textmanip.vim を使えば、選択したテキストブロックを、直感的に移動、複製する事ができるようになります。
と書いても、「よくわからない」という反応が殆どだと思いますので、動画を用意してみました。
インストール
textmanip.vim は vim.org や、github から入手可能です。
また Vundle でもインストール可能です。
:BundleInstall t9md/vim-textmanip
設定
textmanip.vim はデフォルトのキーマップを自動で設定しませんのでユーザーが設定する必要があります。
筆者オススメのキーマップは下記です。vimrc
に設定します。
" 選択したテキストの移動
vmap <C-j> <Plug>(Textmanip.move_selection_down)
vmap <C-k> <Plug>(Textmanip.move_selection_up)
vmap <C-h> <Plug>(Textmanip.move_selection_left)
vmap <C-l> <Plug>(Textmanip.move_selection_right)
" 行の複製
vmap <M-d> <Plug>(Textmanip.duplicate_selection_v)
nmap <M-d> <Plug>(Textmanip.duplicate_selection_n)
その後なんでもいいので、テキストをビジュアルモードで選択し、コントロールキーを押したまま, hjlk を入力してみて下さい。
モノのように移動できましたよね?楽ですよね?便利ですよね?
<M-d>
を押すと、選択したテキストが下方向に複製されます。
ノーマルモードで <M-d>
を入力すると、カーソルのある行が複製されます。
<M-d>
は Altキー
を押しながら d
です。
Mac ユーザーの人は D-d
として、 COMMANDキー
を押しながら d
に設定するといいかもしれません。
※ 本当は C-d
を使いたかったのですが、ノーマルモードでの半ページスクロールとキーが被ってしまいます。
※ ビジュアルモードのみ vmap <C-d> <Plug>(Textmanip.duplicate_selection_v)
と設定するのも一つの手です。
ユースケース1
Markdown では整形済みテキスト(preブロック)をインデントで表現しますので、複数行をインデントする事がよくあります。
インデントしたいテキストを選択して、<C-l>
を数回押して、右にずらします。
ユースケース2
メソッド or 関数を別の引数で複数回呼び出すコードを書く場合を考えます。
例えば次のような関数呼出しがあり、
some_method("a", 1000)
下記のように引数を変えて複数回呼び出したいとします。
some_method("a", 1000)
some_method("b", 2000)
some_method("c", 3000)
まず、some_method("a", 1000)
の行にカーソルを合わせます。
<M-d>
を2回押して、行を複製します。
あとは引数を微修正すれば完了です。
もどる
blog comments powered by Disqus