簡體   English   中英

奇怪的行為:Vim 以命令行模式啟動

[英]Weird behaviour: Vim starts in command line mode

我的 Vim (8.0) 已開始以命令模式啟動,值為:2R

我將我的 vimrc 保存在一個 git 倉庫中,所以我檢查了以前的提交,直到我發現奇怪的行為停止了。 最后一個正常運行的提交和第一個出現錯誤的提交之間的 git diff 很簡單:

diff --git a/.vim/common.vim b/.vim/common.vim
index a5b2443..bb209c3 100644
--- a/.vim/common.vim
+++ b/.vim/common.vim
@@ -13,27 +13,28 @@ noremap ( zz
 nnoremap Y y$

 " Find my way around inside text objects
-map [[ "_yaB
-map ]] "_yaB%
-map [b "_yab
-map ]b "_yab%
-map [d "_ya]
-map ]d "_ya]%
+noremap [[ "_yaB
+noremap ]] "_yaB%
+noremap [b "_yab
+noremap ]b "_yab%
+noremap [d "_ya]
+noremap ]d "_ya]%

-map [s (
-map }s )
+noremap [s (
+noremap ]s )

 " Various C-macros
-nmap <C-n> nzz
-nmap <C-a> W50i <Esc>B50ldwBj
-nmap <C-u> ElldwBj
-nmap <C-f> }?function<Enter>{jVN/{<Enter>%
+nnoremap <C-n> nzz
+nnoremap <C-a> W50i <Esc>B50ldwBj
+nnoremap <C-u> ElldwBj
+nnoremap <C-f> }?function<Enter>{jVN/{<Enter>%
 nnoremap <C-c> mwA;<Esc>`w
 nnoremap <C-o> mwO<Esc>0Dj`w
 nnoremap <C-.> mwo<Esc>0Dk`w

 " Give it back
-nnoremap <C-p> <C-o>
+nnoremap <C-[> <C-o>
+nnoremap <C-]> <C-p>

 " for search highlighting
 set hlsearch

這種變化到底會如何導致這種行為?

相關: 啟動后 vim 命令行中的奇怪符號表明它是一個錯誤配置的TERM環境變量,但我當然沒有手動更改它,並且比較兩次提交的env輸出沒有顯示任何區別。

編輯:我將其追溯到該行

nnoremap <C-[> <C-o>

這一定是一個問題,因為我正在重新映射轉義鍵。 我很尷尬,我沒有想到這一點。

我仍然想知道這怎么可能體現在我所看到的行為中,因此歡迎提供任何解釋。

Linux 終端使用 ANSI 轉義序列(即以<Esc>開頭的字符串)向 Vim 發送特殊鍵,並作為應用程序查詢其功能的通信協議的一部分。 您的映射會干擾它,從而導致這些“奇怪”的行為。

因此,不要映射<Esc> 使用另一個鍵。 這個問題在 GVIM 中不那么明顯,但我也不推薦它。 如果您絕對需要<Esc>的映射,請僅在 Vim 完全啟動后定義它,通過:autocmd VimEnter * nnoremap <Esc> ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM