2017-08-21 109 views
2

工作我天真地寫了這個:VIM映射只noremap

" Fast saving and closing current buffer without closing windows displaying the 
" buffer 
nmap <leader>wq :w!<cr>:Bclose<cr> 

但它不會,即使有任何覆蓋這方面的工作:

n ,wq   :w!<CR>:Bclose<CR> " result of `map ,wq` 

它的工作,雖然有以下幾點:

nnoremap <leader>wq :w!<cr>:Bclose<cr> 

我覺得我在這裏錯過了一些非常基本的東西。

鏈接到完整的conf:https://github.com/AdrienGiboire/dotfiles/blob/master/.vimrc

它仍然凌亂我目前返工吧:)

+0

記住顯示/鏈接你的配置文件? – Kent

+0

@Kent,按要求添加鏈接:) –

+0

什麼「不起作用」?有錯誤嗎?它是否保存,但不關閉?如果您手動鍵入映射的右側會發生什麼? –

回答

2

我測試了這一點,據我可以告訴正是由於這種映射的突破:

nnoremap : ; 

我相信,在運行時,它變成你的地圖變成

;w!<cr>;Bclose<cr> 

noremap表格阻止,wq映射映射其中的字符,因此它不會將:轉換爲;,正如其他情況一樣。這正是noremap存在的一種情況,以避免出現問題。

我按照一般的規則是始終使用noremap形式,除非我知道具體的原因我不應該,因爲有這麼多的情況下,像這樣的會引起問題的,而且很難調試。

+0

棒極了。做得好。現在我明白了:)我可能會堅持你的規則。謝謝! –

+0

實際的規則很簡單:只有當你想要其他映射時才使用遞歸映射;否則使用非遞歸映射。 – romainl