2009-04-28 11 views
60

タイトルは非常にわかりやすいです。念のため、私は例を与える:ビジュアルモードのテキストブロックをVimのファイルに保存するにはどうしたらいいですか?

START BLOCK1 
something 
END BLOCK1 

START BLOCK2 
something 
somenthing... 
END BLOCK2 
  1. を私はいくつかの他にヤンクBLOCK1を保存することができますどのようにY
  2. を押してヤンクビジュアルモードでBLOCK1
  3. を選択しますファイル?

答えて

117

視線のいずれかで、保存したいテキストを選択するか、ビジュアルモードをブロックし、

:w new.txt 

入力したものだが、あなたが実際には上記だ正確に何を見ていないということ。 :を押すと、自動的に選択情報が入力されるコマンドラインに移動します。

:'<,'> 

ちょうど

:'<,'>w new.txt 

を取得するために、残り(w new.txt)を入力の上に運ぶ...と入力し、Enterキーを押します:それはこのような何かを見てみましょう。

+10

これは、行内の選択開始と終了位置を無視して、完全な行のみを書き込むため、期待される結果を提供しません。それに対する解決策はありますか?それ以外の場合は、もう一度メインの質問を提出するのが好きです。 – dronus

+1

@ dronus - あなたが何を求めているのかよく分かりません。これは、私の理解のために、OPが何を求めているかを質問します。 – Rook

+3

非線形ビジュアルモードで選択した場合、 ':w'は選択された範囲でタッチされたフルラインを書き出しますが、ラインの先頭または末尾の正確な範囲は書き出しません。たとえば、ブロック選択モードで幅の狭い列を選択した場合、またはビジュアルセレクトモードで1行の一部を選択した場合、 'y'が行の正しい部分をコピーする場合でもフルラインは':w'で書き込まれます。 – dronus

4

おそらくもっと簡単な方法ですが、新しいバッファ(またはタブ)を作成してpと貼り付けるだけです。 :newで新しいバッファを作成するか、:tabnewで新しいタブを作成することができます。 :w filenameで通常どおりバッファ/タブをファイルに書き込むことができます。

+1

上部に余分な行を削除するようにしてください! –

16

ブロックが選択されている場合、:'<,'>w other-fileを入力すると、選択したブロックのみがother-fileに書き込まれます。視覚モードで:を打つと'<,'>がコマンドラインに入力されますので、実際には:w other-fileと入力するだけです。

+1

Vimは、外部コマンドへのパイプラインを常に選択するので、unix/cygwinの 'cut'コマンドを使用することができます(空のバッファに貼り付けると、上部に余分な行が作成されます。選択内の各行の列NからMの長方形を選択するには、 ': '<,'> w!cut -cN-M> new.txt'を選択します。最高の投票回答と読者がその質問を理解していないように見えることは驚きです。 – mosh

2

コメント内の@dronusと同様に、:w !pbcopyの提案は、行全体をコピーするため正しくコピーされません。私が行の中のURLだけをコピーしたいのであれば、私はできないでしょう。ここでは、CTRL-Cを打つたびに、あなたのvimの中に選択した行をクリップボードにコピーされるように、あなたの.vimrcファイルに追加できるラインです:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR> 

あなたは何これについての詳細を読みたい場合はあなたはこれについて読むことができますmy blog

これは@rmeadorと同じ実装です。 @ソングスのソリューションと同様に

1

は、私は、これは使用してのようにそれを行うことを好む「:新しい」

vmap <C-c> y:new ~/.vimbuf<CR>VGp:x<CR>:!pbcopy < ~/.vimbuf<CR><CR> 
+0

pbcopyは私の知る限り、OSX上にのみ存在します。 Linuxや他のシステムにも同様のプログラムがありますが、名前が異なり、動作が異なります。 –

+0

うん、それはpbcopy実行可能ファイルの場合にのみ動作する:) だから全く害はない – chenkaie

関連する問題