2013-07-04 48 views
0

我有一個系統在vim中插入單個字符 - 我使用:nmap <Space> i_<Esc>r。 但是,由於某種原因,這似乎干擾了我對逃跑的重映射。我用:imap kj <Esc>重新映射了逃跑。插入單個字符重新映射

無論何時我按kj,vim都會在我的光標前面插入一個_,然後改變我按下空間的方式。我無法弄清楚爲什麼這些事情是這樣相互作用的。有人可以澄清一些事情嗎?我很感激。

這是我整個的vimrc

"general settings 
syntax on 
filetype plugin on 
set number 
set smd 
set ru 

"Leader 
let mapleader=',' 
nmap <Leader>w :w<Enter> 
nmap <leader>e :wq<Enter> 
nmap <leader>q :q!<Enter> 

"remappings 
nmap ; : 
imap kj <Esc> 
nmap <Space> i_<Esc>r 

"au comands 
au Filetype python source ~/.vim/scripts/python.vim 
au Filetype ruby source ~/.vim/scripts/ruby.vim 
au Filetype c source ~/.vim/scripts/c.vim 

回答

5

改變每nmapnnoremapimapinoremap,看看問題是否仍然存在。

檢查您沒有任何尾隨空白。

全文閱讀:h 40.1

閱讀chapter on "Strict mapping"瞭解Vimscript的艱難之路

+0

每個Vim用戶都應該閱讀那本書。即使你不打算編寫Vimscript,你也會學到更多關於如何有效使用Vim的知識。正如Steve Losh所說,應該始終使用'-noremap'變體。 – d11wtq

+0

這樣做,謝謝!我將把這本書加入我的清單。 – Brandon

2

您的映射中可能會出現尾隨空白。除了將*map更改爲*noremap之外,像@glts建議的那樣,它可能會改變從插入文本等行爲到僅將光標向前移動一個位置(默認行爲爲空格)的行爲,並且應該由@glts引用的鏈接解釋的另一個原因完成你應該做以下的一個突出尾部空格:

  1. set list listchars+=trail:-:這將在地方尾部空格的秀特別強調-
  2. 跑步搜索:/ $<CR>/,<Space>, $,<CR>)。
  3. 使用match運行搜索(可以放在vimrc中):let g:trailing_match_nr=matchadd('Error', '\s\+$'):這將突出顯示帶有Error突出顯示組的尾部空白。

確保您刪除所有通過以下某種方法突出顯示的不需要的尾部空白。我個人比較喜歡第一個。