回答:
gJ
組み合わせは、これを行います。から:help gJ
:
[count]行を少なくとも2行で結合します。スペースを挿入または削除しないでください。
J
キーストロークを保存する場合は、に再バインドできます。
:nnoremap J gJ
これはスペースを削除しないことに注意してください。したがって、現在の行がスペースで終わるか、次の行が1つ以上のスペースで始まる場合、そのまま残ります。
そう:
Hello
world
になる:
Hello world
我々は可能性が使用しJx
、それはなり、この場合にはHelloworld
、それはすべてのケースでは動作しません。ヘルプから:
強調表示された行を、少なくとも2行で結合します。インデントを削除し、最大2つのスペースを挿入します
[...]
"gJ"を除くこれらのコマンドは、末尾に空白がないか、次の行が ')'で始まる場合を除き、1つのスペースを挿入します。
そのため、場合によっては複数のスペースが挿入されるか、スペースが挿入されません。私が見る限り、この動作を変更する簡単な方法はありません。gJ
常にスペースなしで結合するように変更する関数を作成しました。
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
参照::help J
、:help 'joinspaces'
マクロを作成して再利用します。
qaJxq
ここで、スペースなしで2行を結合する場所をa
使用し@aて、マクロを再生します。
@@前のマクロを繰り返します。したがって、@複数の行を結合するだけで構いません。
@a
できるのになぜ入力するのですJx
か?同じ回数のキーを押して、SHIFTを押します!
3@a
、3行を結合するために使用できますが、3Jx
3行をスペースで結合し、2行目と3行目のスペースを削除して、他の行の間にスペースを残します。
マージする行を選択し、通常モードでコロンを入力してExコマンドを入力し:
ます。次に、次のコマンドを入力します。
s/$\n\s*//gc
コマンド全体は同様に見えるはずです:
:'<,'>s/$\n\s*//gc
これは実際の微調整版である@のinsidepowerのコマンドスペースでインデントと同様に改行文字を置き換えます。
説明:
'<,'>
ビジュアルモードで選択された行のみを変更することを意味します。
/$\n\s*
ある正規表現パターンが。$
改行文字で終了し、その後に\n
未確定の空白があるマッチを探しています*
。
s/pattern//gc
各パターンを検索し、確認時に空の文字で置き換えるための代替コマンドです。
Vimの正規表現のフラグとメタキャラクターについて詳しくは、Vimリファレンスのこの章をご覧ください。