選択した領域をファイルに書き込む


11

視覚的に選択された領域をファイルに書き込みたいのですが。

例えば:

prefix [sample text
more text] suffix

[] 取得する必要のある選択されたブロックであり、次の内容を含む新しいファイルが作成されます。

sample text
more text

通常のwコマンドは行を使用するため'<,'>w! /tmp/test、接頭辞/接尾辞を含みます(`<,`>w! /tmp/test許可されていません)。

回答:


8

まず、ビジュアルセレクションを選択したレジスターにコピーします(vim用語では「ヤンク」とも呼ばれます)。たとえば、「z」を登録するためにコピーするには、視覚的な選択を行ってから、と入力し"zyます。

指定した場合、カーソルを移動せずに、最初の角括弧にカーソルを置いてと入力することにより、これを行うことができますv%"zy

内訳:v->ビジュアル選択を開始します。%->対応する中括弧に移動します。"z->レジスタ「z」を使用します。y->選択範囲をヤンク(コピー)します(この場合、レジスタ 'z'に)。

ビジュアル選択をコピーして「z」を登録したら、コマンドラインに移動して、次のように入力します。

call writefile(getreg('z', 1, 1), "some-file")

上書きではなくテキストを追加する場合は、次のように「a」フラグを使用できます。

call writefile(getreg('z', 1, 1), "some-file", "a") 

つまり、これを実行できる組み込みコマンドがないということですか?
laktak

@laktak私が見つけることができたわけではない... A split()getreg(.., 1, 1)リストを返すので、split()必要ありません。
muru

ありがとうございます-あなたは速すぎます:)私は私の間違いに気づき、あなたが応答している間にコメントを編集しました。
laktak 2017

2

コンテンツをコピーして新しいウィンドウを作成することもできます

Ctrl-w n ........... create a new window
p .................. paste

その後、必要に応じて保存できます


0
  1. Vimのヘルプによると(:h 10.3):

    注: ビジュアルモードを使用して行の一部を選択する場合、またはCTRL-Vを使用してテキストのブロックを選択する場合でも、コロンコマンドは行全体に適用されます。 これは、Vimの将来のバージョンで変更される可能性があります。

  2. Charles Campbellによるプラグインvis(#1195)は、ビジュアル(ブロック)選択にのみ:B {cmd}適用するコマンドを提供します{cmd}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.