回答:
コマンドを使用して、行の連続するスペースを改行で単純に置き換えることができます:s/\s\+/\r/g
。\s\+
1つ以上の空白文字を意味し\r
、改行です。詳細については:help :substitute
、および:help regexp
を参照してください。次のような行でコマンドを実行すると、
foo bar baz
あなたが得る:
foo
bar
baz
あなたがいる場合にhlsearch
有効で、あなたはどこにでも強調された空間で、あなたの画面を乱雑にしたくない、あなたはそれを避けるために、次のような小さな関数を書くことができます。
function! SplitLineNicely()
" Save previous value of last search register
let saved_last_search_pattern = @/
" :substitute replaces the content of the search register with the `\s\+`
" pattern highlighting all whitespaces in the file
substitute /\s\+/\r/g
" Restore previous search register
let @/ = saved_last_search_pattern
endfunction
\r
、見てください:help s/\r
。これは、文字通りの改行タイピングに置き換えることができます<c-v><cr>
。このコンテキストで\n
はnull文字:help s/\n
です。を参照してください。
replaces the content of the register
-どの登録?
vim
の置換を使用することは、おそらくタスクを実行するためのより良い方法の1つですが、マクロを使用することもできます。次のデータがあり、カーソルが行1のどこかにあるとします。
1 a b c d e f
~
通常モードでqq開始すると、を押すと、を介して呼び出し可能なマクロの記録が開始され@qます。その後qqに入力されたものは、前述の呼び出しを介して繰り返し可能になります。私たちの目標は、シームレスな繰り返しを可能にするのに十分一般的な通常のコマンドを記録することです。
したがって、入力0してカーソルを行の先頭fspaceに移動し、次にカーソルを最初のスペースに移動できます。これにより、と入力してrenter、次の結果を得ることができます。
1 a
2 b c d e f
~
q私たちの再利用可能なマクロは繰り返し準備ができているので、今すぐ打つことは良い考えです。多少恣意的に、改行で置き換えるスペースが4つ残っていることに注意してください。したがって4@q、を押すと、q
マクロが4回繰り返され、結果は次のようになります。
1 a
2 b
3 c
4 d
5 e
6 f
~
注方法で、我々はマクロを設定しているため、現在の行だけに影響を与えるとして、9000回以上のコマンドを繰り返し実行しても安全であったであろう、と最後のデータエントリの右側にはスペースがなかったことから、ということfspaceでしょう「うまく」失敗し、データが改行で置き換えられなくなります。
したがって、最初から繰り返すには:
qq0fspacerenterq9001@q
私たちの結果を提供します。
9001
ユーザー名をすばやく入力するためのキーがキーボードにあるのが大好きです。
Vimで行を分割する最も簡単な方法は、通常モードのコマンドですgq
(通常モードまたはビジュアルモードで両方の文字をすばやく連続して入力します)。
ビジュアルモードでは、選択されているものはすべて分割されますgq
。通常モードでは、動きに追従します。
たとえば、gql
1行を現在設定されている幅に分割します。分割線の幅を現在の設定とは異なるように設定するには、を使用できます:set textwidth=n
。ここn
で、は1行に含める文字数です。たとえば、終了10
したら通常の幅に戻します。
この情報は、モーションを使用して通常モードでラインを結合および分割する方法を示す、KholidfuによるYoutube ビデオから入手しました。