2009-03-27 105 views
5

Có một lệnh đơn giản sẽ di chuyển các dòng từ cửa sổ này sang cửa sổ khác hay không. Hiện tại tôi đi đến một cửa sổ, yank dòng, và sau đó dán trong cửa sổ khác.các đường di chuyển từ cửa sổ này sang cửa sổ khác

Tôi muốn biết tôi có thể làm điều đó mà không cần chuyển đổi các cửa sổ hay không.

+0

Bạn nên mô tả nhiều hơn trong vấn đề của bạn. Bạn đang cố gắng tìm cách cắt và dán dễ dàng hơn? –

+0

Tôi đang tìm thứ gì đó không yêu cầu tôi chuyển cửa sổ. –

+0

Nếu bạn không chuyển đổi cửa sổ, làm thế nào Vim sẽ biết nơi bạn muốn dán? – strager

Trả lời

7

Tôi sẽ làm việc này với macro. Vì vậy, để ghi lại một macro cho a, qa. Sau đó, yy để yank dòng,: bnext để chuyển đổi bộ đệm, p để dán dòng, sau đó bnext một lần nữa để chuyển trở lại bộ đệm ban đầu (trên dòng bạn bắt đầu vào). Sau đó nhấn q để dừng ghi.

Vì vậy, để sao chép, chuyển đổi cửa sổ, sau đó dán lại, bạn chỉ cần sử dụng @a. Hoặc ánh xạ nó tới một phím chức năng (map @a).

N.B. Chỉ cần nhận thấy trong các ý kiến ​​bạn đã có nhiều bộ đệm, vì vậy rõ ràng bạn sẽ cần phải ghi lại vĩ mô của bạn cho phù hợp.

+0

Tôi đoán, đó là những gì tôi có thể phải làm. Sử dụng macro hoặc viết tập lệnh. –

+0

Tôi thấy nó là khá liền mạch làm theo cách này. Vim macro là bạn của bạn;). – RedBlueThing

1

Tôi nghi ngờ liệu điều này là có thể. Nhưng đây là một bài viết thú vị about 100 Vim commands mỗi lập trình viên nên biết nếu bạn quan tâm.

2

sử dụng vimdiff, bạn có thể sử dụng diffput hoặc diffget để sao chép các thay đổi giữa các bộ đệm. Từ hướng dẫn:

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

Tôi đang học vimdiff (Tôi đã sử dụng Beyond Compare để hợp nhất trong Windows) và vimdiff xảy ra là một công cụ tuyệt vời để hợp nhất. Không lập trình, khi đang hợp nhất. Tôi không muốn viết kịch bản cho loại điều này. Học một vài lệnh vi không phải là rất đau đớn. –

1

Bạn có thể thử bản đồ này:

nmap <C-y> Y<C-w>wp<C-w>w 
Các vấn đề liên quan