回答:
これらのカスタムコマンドはどうですか。
:command! -bang -range -nargs=1 -complete=file MoveWrite <line1>,<line2>write<bang> <args> | <line1>,<line2>delete _
:command! -bang -range -nargs=1 -complete=file MoveAppend <line1>,<line2>write<bang> >> <args> | <line1>,<line2>delete _
「テキストを新しいファイルに移動する」とは、現在のファイルからそのテキストを切り取り、そのテキストのみを含む新しいファイルを作成することを意味すると仮定します。
さまざまな例:
:1,1 w new_file
行番号1のテキストのみを含む新しいファイルを作成するには:5,50 w newfile
5行目から50行目までのテキストを含む新しいファイルを作成するには:'a,'b w newfile
マークからマークa
へのテキストを含む新しいファイルを作成するにはb
上記はテキストのみをコピーし、そのテキストを含む新しいファイルを作成します。その後、削除する必要があります。
これは、同じ範囲とd
コマンドを使用して実行できます。
:5,50 d
5行目から50行目までのテキストを削除するには:'a,'b d
マークからテキストを削除するためにa
マークしますb
またはdd、単一行の場合に使用します。
代わりに、ビジュアルモードを使用してテキストを選択:
し、テキストが選択されているときにヒットすると、コマンドラインに次のように表示されます。
:'<,'>
選択したテキストを示します。その後、コマンドを次のように展開できます。
:'<,'>w >> old_file
どちらます追加、既存のファイルにテキストを。次に、上記のように削除します。
:2,3 d | new +put! "
内訳:
:2,3 d
-2行目から3行目を削除します|
-技術的には、これは最初のコマンドの出力を2番目のコマンドにリダイレクトしますが、最初のコマンドは何も出力しないため、単にコマンドを連鎖させています。new
-新しいバッファを開きます+put! "
-名前のないレジスタ("
)の内容をバッファに入れます
!
)があるので、コンテンツは現在の行の前に配置されます。これにより、ファイルの最後に空行が生じます。これがないと、ファイルの上部に空の行があります。ビジュアルモードでテキストを選択し、を押しyてバッファに「ヤンク」(コピー)またはバッファdに「削除」(カット)します。
次に:split <new file name>
、vimウィンドウを分割し、を押しpてヤンクしたテキストを貼り付けます。通常どおりファイルを書き込みます。
スプリットを再び閉じるには、閉じたいスプリットを渡します:q
。
:x
代わりに分割を渡す場合、書き込みと終了を1つにまとめて、5つのステップにすることができます。:P