2014-11-03 43 views
1

vim中的複製粘貼功能對我來說似乎有點不一致。命令yy,ddcc抽出/刪除整行。 DC命令從光標刪除到行尾,但是Y代替了整行。我想要Y的工作方式與DC相同。所以我把下面一行放在我的.vimrc中:在vim中重新映射「Y」

nmap Y y$ 

雖然它似乎沒有工作。我的第一個想法是,這是因爲一些插件干擾。我試圖把這個命令放到我的.vimrc的開頭和結尾,但沒有任何幫助。但是,如果我手動鍵入命令(而不是從.vimrc),它的工作原理。爲什麼是這樣?我如何完成這項工作?

+2

與線在你的vimrc結束,有什麼的'輸出:詳細的地圖Y'?順便說一句,考慮使用'nnoremap Y $'' – Kent 2014-11-03 20:42:48

回答

4

您的vimrc在加載插件之前加載,所以這並不排除插件重寫它。將.vim文件放入.vim/after/將在插件後加載,以便您可以通過這種方式測試該理論,以避免逐個刪除插件的路線。

正如Kent提到的那樣,您應該考慮使用nnoremap而不是nmap

+0

實際上,密鑰被YankRing插件覆蓋。從.vim/after開始映射它,但我真的需要'nmap'而不是'nnoremap',因爲當我在命令中使用'y'時,我希望YankRing能夠實際捕獲它。 – petersohn 2014-11-07 21:12:35

+0

YankRing文檔提到您可以添加以下功能: 函數! YRRunAfterMaps() nnoremap Y: YRYankCount'y $' endfunction 避免YankRing優先於映射。 – piro 2015-06-04 17:33:09

2

粘貼一個新的答案,因爲代碼未在上述答案的評論中格式化。

如果衝突YankRing你可以使用:

function! YRRunAfterMaps() 
    nnoremap Y :<C-U>YRYankCount 'y$'<CR> 
endfunction 
nnoremap Y y$ 

來源::help yankring-custom-maps