vimで行を上下に移動するコマンド(またはショートカット)とは何ですか?私の現在のワークフローは、行をヤンク(コピー)し、その行を削除してから、その行を配置(貼り付け)することです。
vimで行を上下に移動するコマンド(またはショートカット)とは何ですか?私の現在のワークフローは、行をヤンク(コピー)し、その行を削除してから、その行を配置(貼り付け)することです。
回答:
まず、ヤンクして削除する必要はありません。後者は、削除されたコンテンツを(デフォルトまたは指定された)レジスタに入れます。したがって、ddp
/ ddkP
は、行を1つ下/上に移動する一般的なコマンドです。
あるいは、:move
コマンド、つまり:move +1
/を使用できます:move -2
。これはレジスタを上書きせず、範囲全体を移動することもできます。キーマッピングを簡単に定義して、これを短縮できます。
(多くの場合、それらが付属していること、および追加の快適さ)あなたがプラグインを気にしない場合は、両方のティム教皇の障害のないプラグインと私のLineJugglerプラグインが提供]e
/ [e
マッピングが行(およびいくつかのより多く移動するには、さまざまな用途のためにティムさんが、鉱山は取り扱いに焦点を当てました行)。
最も簡単なのは、:m+
またはIngoが示唆したとおりの:m-2
略語です:move
。
または、視覚モード(V)を使用して、行(d/ x)を切り取り、貼り付ける前にカーソルを正しい場所に移動した後(p-カーソルの下、カーソルのP上)に貼り付けます(要約するとVxp/になりますVdp)。
ビジュアルモードで複数の行を移動する場合は、:m '>+1
(1行下に移動する)または:m '<-2
(1行上に移動する)を使用する必要があります。
便利なマッピングのサンプル(Shift+ ↑/ Shift+↓)は次のとおりです。
nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>
Sublime Text(Win / OSX)に似ています。
以下はvim wikiaで提案されたものです:
nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv
通常モードまたは挿入モードでは、Alt-jを押して現在の行を下に移動するか、Alt-kを押して現在の行を上に移動します。
行のブロックを視覚的に選択した後(たとえば、Vを押してからカーソルを下に移動)、Alt-jを押してブロック全体を下に移動するか、Alt-kを押してブロックを上に移動します。
こちらもご覧ください:
ddkP
、下に移動することは簡単です:ddp
。