2013-02-22 99 views
1

正如問題所述,我的vim從刪除模式開始。如果我打開一個文件並點擊j開始導航,則會刪除第一行。vim爲什麼在刪除模式下啓動?

我已經分離出的問題降到這一行我.vimrc

nnoremap <silent> <esc> :noh<return><esc> 

我不明白爲什麼這甚至會引發刪除模式。最重要的是,我相信我添加了<silent>來指示vim在不執行它的情況下進行此綁定,但似乎並非如此。

爲什麼會出現這種情況?

(附帶說明,這個映射告訴VIM清除搜索亮點時,我打ESC)

回答

3

如果在終端運行此命令:

$ vim file.txt -c 'nnoremap <silent> <esc> :noh' 

它會在底部顯示此:

:noh[>1;3201;0c 

vim進入change-mode莫名其妙。


您可以更改<esc><F5>(或其他鍵)。 如果您使用gvim,則沒有問題。 這是由於終端特殊密鑰溢出造成的。

+1

當使用'+ termresponse'功能構建時,* Vim *向終端發送一個特殊的控制序列(參見':set t_RV?')。當你的終端仿真器看到這個序列時,它以ESC']> 1; 3201; 0c'的順序響應。 ESC被映射到':noh',並在命令行中獲得序列的其餘部分。通過OP的映射,其餘的序列被當作正常的命令,因此最後一個'c'開始一個改變命令。所以,這個ESC映射干擾了* xterm *(或其他)給* Vim *的查詢響應。 – 2013-02-22 10:50:07

+0

@ChrisJohnsen感謝您提供最終的鏈接。這三個數字的解釋在':h v:termresponse'中給出。這太糟糕了,即使閱讀幫助文件後,我也不明白什麼是術語響應。 – 2013-02-22 22:48:49

+0

我無法對此答案表示感謝。它使我找到了一個徹底解決這個問題的解決方案。對於其他人,我已經在另一個問題上發佈了[答案](http://stackoverflow.com/a/16027716/640517) – 2013-04-17 00:16:57

相關問題