2009-03-27 32 views
5

あるウィンドウから別のウィンドウに行を移動する簡単なコマンドはありますか?現在、私は一つのウィンドウに行き、ラインをヤンクしてから、別のウィンドウに貼り付けます。ウィンドウを別のウィンドウに移動する

私はウィンドウを切り替えることなくそれを行うことができるかどうかを知りたいと思います。

+0

あなたはあなたの問題でより記述する必要があります。切り取りと貼り付けの方が簡単ですか? –

+0

私は窓を切り替える必要がない何かを探しています。 –

+0

ウィンドウを切り替わらない場合、Vimは貼り付けたい場所をどのように知っていますか? – strager

答えて

7

私はマクロを使ってこのようなことをします。だから、qaのマクロを記録する。次に、ラインをヤンクするyy:バッファを切り替えるためのbnext、ラインをペーストするためのp、次にbnextをもう一度実行して元のバッファに戻します。次にqを押して録音を停止します。

コピーするには、ウィンドウを切り替えて貼り付けてから元の状態に戻してください。ただ@aを使うだけです。または、それをファンクションキー(map @a)にマップします。

N.B.あなたが複数のバッファを持っていたコメントに気付いたので、明らかにマクロを記録する必要があります。

+0

私はそうする必要があります。マクロを使用するかスクリプトを書く。 –

+0

私はそれがこのようにしてかなりシームレスであることがわかります。 Vimマクロはあなたの友人です;)。 – RedBlueThing

1

これが可能かどうかは疑問です。しかし興味深い記事はabout 100 Vim commandsです。あなたが興味を持っているかどうかは、すべてのプログラマーが知っているはずです。

2

vimdiffを使用すると、diffputまたはdiffgetを使用してバッファ間の変更をコピーできます。マニュアルから:

There are two commands to copy text from one buffer to another. The result is 
that the buffers will be equal within the specified range. 


         *:diffg* *:diffget* 
:[range]diffg[et] [bufspec] 
    Modify the current buffer to undo difference with another 
    buffer. If [bufspec] is given, that buffer is used. 
    Otherwise this only works if there is one other buffer in diff 
    mode. 
    See below for [range]. 


         *:diffpu* *:diffput* 
:[range]diffpu[t] [bufspec] 
    Modify another buffer to undo difference with the current 
    buffer. Just like ":diffget" but the other buffer is modified 
    instead of the current one. 
    See below for [range]. 
+0

私はvimdiffを学んでいます(私はWindowsで をマージするためにBeyond Compareを使用しました)、そしてvimdiffはマージのための素晴らしいツールになります。 オンザフライでのプログラミングはありません。この種のスクリプトには スクリプトを書いてはいけません。いくつかのviコマンドを学ぶことは非常に痛い ではありません。 –

1

あなたはこのマッピングを試みることができる:

nmap <C-y> Y<C-w>wp<C-w>w 
関連する問題