2012-08-22 40 views
1

摘要:掙扎的.vimrc一點和標記

let @c = "dd/##completed <CR> p" 

不工作,有什麼建議?


我記錄了一個宏,它刪除一行,移動到另一行(我的##完成部分)並將行粘貼到這裏。

這工作得很好,直到我意識到標記('c - 指向我的##完成部分)不會粘在文本上,而是粘到行本身上(顯然現在我想起來了)。

因此,我改變了我的.vimrc來執行搜索行##完成並粘貼下面的內容。

的代碼如下...

let @c = "dd/completed <CR> p" 

但是,這並不工作,而不是我提出我的命令行裏「/完成P」。因此,似乎vimrc沒有正確處理回車,我在這裏的語法錯了嗎?

或者,如果這是移動線條的可怕方式,任何人都可以提供更好的替代方案嗎?

回答

4

我不完全理解你的映射,但你需要在雙引號內寫\<CR>才能得到回車;反斜槓丟失。或者,你可以直接通過按Ctrl +V(或許多Windows安裝Q),其次是輸入插入。


一般來說,我不會預設寄存器(c,你錯誤地稱之爲「標記」)在.vimrc;如果你經常需要這個,通過:nnoremap定義一個映射。您可以將映射分配給任意空閒密鑰序列(並使用<Leader>;即反斜槓,您有一個空閒的啓動密鑰),但您只有26個已命名的寄存器。


要移動文本,請查看:move命令。這可能做你想要的:

:move /##completed 
+0

這是偉大的,正是我所需要的;缺少\ 是問題 –

+0

感謝您的編輯,這是比我更優雅的解決方案。 –

+0

好吧,我已經改變了這個太: '模式:nnoremap :移動/完成' ......一切都很好:) –