複製剪下和貼上
在 Vim 中,這些操作都是從什麼,你可能會在使用幾乎任何其他現代編輯器或字處理器(處理方式不同 Ctrl-C,Ctrl-X,Ctrl-V )。要理解,你需要了解一些關於暫存器和動作的知識。
注意:本節不包括視覺模式複製和剪下或範圍縮寫,因為這些超出了普通模式和基本編輯的範圍。
暫存器
Vim 使用暫存器的概念來處理程式本身內的文字移動。Windows 有一個用於此目的的剪貼簿,類似於 Vim 中的單個暫存器。在 Vim 中複製,剪下和貼上時,有一些方法可以使用類似的簡單編輯工作流程(你不必考慮暫存器),但也有更復雜的可能性。
暫存器的目標是命令的輸入/輸出,方法是在命令前加上 " 小寫字母和小寫字母名稱。
議案
Vim 中的動作是將游標位置移動到其他位置的任何命令。在普通模式下複製,剪下和貼上時,移動文字選擇的可能性僅受你對運動的瞭解。下面將舉例說明一些。
複製和剪下
基於複製和剪下操作的基本命令是 y (‘yank’,用於複製)和 d (‘delete’,用於剪下)。你將在下表中看到相似之處。
命令 | : | 描述 |
---|---|---|
y{motion} | 將動作指示的文字複製(‘yank’)到預設暫存器中 | |
yy |
當前行復制到預設的暫存器,面向行 | |
Y |
將當前行復制到預設暫存器(同義詞 yy ) | |
“ayiw | 將游標所在的單詞複製到暫存器’a’中 | |
20"byy | 從游標開始複製 20 行到暫存器’b’ | |
d{motion} | 將動作指示的文字剪下(‘刪除’)到預設暫存器中 | |
dd |
剪下當前行到預設暫存器,面向行 | |
D |
從游標切換到行尾到預設暫存器(不是同義詞 dd ) | |
“adiw | 將游標所在的字切入暫存器’a’ | |
20"bdd | 從游標開始剪下 20 行,進入暫存器’b’ |
注意:當複製或按行切割某些內容時,下面顯示的貼上行為將在當前行 (而不是游標) 之前或之後放置文字。以下示例澄清。
貼上
根據你要完成的任務,有幾種方法可以貼上到 Vim 中。
命令 | : | 描述 |
---|---|---|
p |
貼上游標後預設暫存器中的內容 | |
P |
貼上游標前預設暫存器中的內容 | |
“ap | 在游標後貼上暫存器’a’的內容 | |
“cP | 在游標前貼上暫存器’c’的內容 |
那麼,我如何執行一個真正簡單的剪下和貼上?
如果我有以下文字:
1 This line should be second
2 This line should be first
我可以通過將游標放在第 1 行並鍵入來進行最簡單的剪下和貼上 ddp。結果如下:
1 This line should be first
2 This line should be second
發生了什麼?dd ‘將第一行(行)剪下到預設暫存器中 - 一次只包含一個東西,比如 Windows 剪貼簿 - 並 p 在當前一行之後貼上該行,該行剛剛因 dd 命令而發生變化。
這是一個不太簡單的例子。我需要動一下幾句話。 (這是設計和不必要的,但你可以將此原則應用於更大的程式碼塊。)
1 These words order out are of
我可以重複 w 到’訂單’前面的’o’(或者 b 如果我輸入它並意識到我的錯誤)。
然後 “adaw 將’order’放在暫存器’a’中。
然後 w 到’是’進入’a’。
在此之後,我會輸入 “bdaw ‘are’到暫存器’b’。現在我顯示了這個:
1 These words out of
要清楚,現在’order’在暫存器’a’中,‘are’在暫存器’b’中,就像兩個單獨的剪貼簿一樣。
為了正確排列單詞,我輸入 b ‘out’中的’o’,然後 “bP 將’are’放在’out’前面的暫存器’b’中:
1 These words are out of
現在我輸入 A 到行的末尾,然後 Space Esc (假設’of’之後沒有空格) “ap 並將’order’放在它所屬的位置。
1 These words are out of order