gpt4 book ai didi

vim - 奇怪的行为 : Vim starts in command line mode

转载 作者:行者123 更新时间:2023-12-04 17:41:18 24 4
gpt4 key购买 nike

我的 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

这种变化到底是如何导致这种行为的?

相关:Strange symbol in vim command line after start这表明它是配置错误的 TERM 环境变量,但我当然没有手动更改它并且比较两次提交的 env 的输出显示没有区别。

编辑:我追溯到那行

nnoremap <C-[> <C-o>

这一定是个问题,因为我正在重新映射转义键。我很尴尬,我没有考虑到这一点。

我仍然想知道这怎么可能在我看到的行为中体现出来,所以欢迎任何解释。

最佳答案

Linux 终端使用 ANSI 转义序列(即以 <Esc> 开头的字符串)向 Vim 发送特殊 key ,并作为应用程序查询其功能的通信协议(protocol)的一部分。您的映射会干扰它,从而导致这些“奇怪”的行为。

因此,不要映射 <Esc> 。使用另一把 key 。这个问题在 GVIM 中不太明显,但我也不推荐它。如果您绝对想要 <Esc> 的映射, 仅在 Vim 完全启动后通过 :autocmd VimEnter * nnoremap <Esc> ... 定义它

关于vim - 奇怪的行为 : Vim starts in command line mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com