2008-09-19 96 views
85

我想搜索$maximumTotalAllowedAfterFinish並將其替換爲$minimumTotalAllowedAfterFinish。而不是輸入長文本:在Vim中,有沒有辦法在搜索行中粘貼文本?

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

有沒有一種方法來複制下來,這些長變量名在搜索行,因爲,在命令行中我不能鍵入「p」粘貼?

+2

我想,tou還需要轉義第一個`$`,因爲這個caracter意味着行結束。 – 2011-09-19 20:28:10

+1

@LucM OP還可以在搜索模式中的任意位置使用'\ V`來禁用「魔術」字符。 – 2012-11-06 01:37:14

回答

102

您可以通過鍵入CTRL[R{0-9a-z"%#:-=.}插入寄存器裏的內容。通過鍵入CTRL-RCTRL-W您可以將當前單詞粘貼到光標下。參見:

:he cmdline-editing 

瞭解更多信息。

+5

感謝您的回答,對我來說最常見的一個是:`CTRL` +`R`` +`(因爲它代表剪貼板內容) – 2013-10-09 10:27:49

13

類型q:在新緩衝區中進入歷史編輯模式。然後編輯緩衝區的最後一行並按Enter執行它。

+1

所以這就是緩衝區的原因!謝謝(我總是在輸入時偶然發現它:q並且感到困惑) – gsk 2013-10-22 18:04:30

+1

`q /`也可用於訪問搜索歷史記錄並粘貼新搜索。 – 79E09796 2015-01-20 15:36:37

2

通常,可以做到這一點與鼠標選擇(也許Ctrl鍵Ctrl鍵Ç選擇之後),然後,當在命令/搜索線,中間鍵(或移位InsCtrlV)。

另一種方式,是寫在文本緩衝區的命令/搜索符合在文本緩衝區提供所有的編輯,從:和所有的話,就行了,這樣做:

"[email protected] 

這將整個命令行存儲在緩衝區a中,然後執行它。不過,它不會存儲在命令歷史記錄中。

嘗試在文本中創建緩衝區以下行如對上述按鍵的例子:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

最後,您可以輸入q:在文本緩衝區進入歷史編輯。

+0

+1爲提及鼠標 – 2008-11-10 12:48:14

40

複製它作爲正常的,然後做按Ctrl[R貼。還有很多其他按Ctrl的R快捷方式(例如,計算器,當前文件名,剪貼板中的內容)。輸入:help c_<C-R>要查看完整列表

3

或者在Vim緩衝區創建命令,如在緩衝區鍵入:

s/foo/bar/gci 

然後將其複製到一個已命名的寄存器中,其中"ayy(如果光標在該行上!)。

:[OPTIONAL_RANGE]@a 

我用它所有的時間:現在

您可以執行的「a」的內容從Vim的Ex命令符合註冊。

6

複製:
1)v(或高亮與小鼠,在視覺模式)
2)y(抽出)

粘貼:
1)/(搜索模式)
2)Ctrl + R + 0 (從抽取的寄存器粘貼)

0

您可以將光標置於要添加到模式的單詞上,然後按/進入任一搜索或命令模式,然後按Ctrl鍵- [RCtrl鍵W¯¯複製的字。 Source

相關問題