自从我上次更新以来,我在.vimrc
中遇到了一个奇怪的错误。
每次我启动vim时都会以-- REPLACE --
模式启动,这真的很烦人。
我设法发现我的.vimrc
中的这一行导致了问题。
" Disable search highlighting temporally
nnoremap <esc> :nohl<cr>
当我评论这条线时,问题就消失了。
我对映射的错误感到困惑。它可以正常工作,但会导致vim在启动时进入-- REPLACE --
模式。
我目前根本没有启用插件。
答案 0 :(得分:4)
最好避免映射 Esc 键,因为它会导致奇怪的行为:
我一直在使用<leader><space>
来禁用突出显示,正如"Coming Home to Vim"所建议的那样,也许你也可以习惯它。
答案 1 :(得分:1)
我有同样的问题,尽管它在tmux内部,当我启动vi(aka vim)时,它将以REPLACE模式启动。罪魁祸首似乎是我一直在使用的TERMCAP定义:xterm-256color。
一旦我将TERM设置为其他值,vi(vim)即可正常工作。 甚至将TERM设置为“ ansi”也表现得更好。
我决定将TERM设置设置为“ screen-256color-s”,该设置可以根据需要工作。
有趣的TERMCAP定义。
答案 2 :(得分:1)
通过将以下内容附加到我的vimrc
文件中,我已经能够解决相同的问题:
" Terminal fixes
"
" These originate from some linux distribution's system vimrc. I can't say
" that I understand the details what's going on here, but without these
" settings, I've had problems like vim starting in REPLACE mode for
" TERM=xterm-256color (neovim is fine)
if &term =~? 'xterm'
let s:myterm = 'xterm'
else
let s:myterm = &term
endif
let s:myterm = substitute(s:myterm, 'cons[0-9][0-9].*$', 'linux', '')
let s:myterm = substitute(s:myterm, 'vt1[0-9][0-9].*$', 'vt100', '')
let s:myterm = substitute(s:myterm, 'vt2[0-9][0-9].*$', 'vt220', '')
let s:myterm = substitute(s:myterm, '\\([^-]*\\)[_-].*$', '\\1', '')
" Here we define the keys of the NumLock in keyboard transmit mode of xterm
" which misses or hasn't activated Alt/NumLock Modifiers. Often not defined
" within termcap/terminfo and we should map the character printed on the keys.
if s:myterm ==? 'xterm' || s:myterm ==? 'kvt' || s:myterm ==? 'gnome'
" keys in insert/command mode.
map! <ESC>Oo :
map! <ESC>Oj *
map! <ESC>Om -
map! <ESC>Ok +
map! <ESC>Ol ,
map! <ESC>OM
map! <ESC>Ow 7
map! <ESC>Ox 8
map! <ESC>Oy 9
map! <ESC>Ot 4
map! <ESC>Ou 5
map! <ESC>Ov 6
map! <ESC>Oq 1
map! <ESC>Or 2
map! <ESC>Os 3
map! <ESC>Op 0
map! <ESC>On .
" keys in normal mode
map <ESC>Oo :
map <ESC>Oj *
map <ESC>Om -
map <ESC>Ok +
map <ESC>Ol ,
map <ESC>OM
map <ESC>Ow 7
map <ESC>Ox 8
map <ESC>Oy 9
map <ESC>Ot 4
map <ESC>Ou 5
map <ESC>Ov 6
map <ESC>Oq 1
map <ESC>Or 2
map <ESC>Os 3
map <ESC>Op 0
map <ESC>On .
endif
https://gist.github.com/goerz/36015f27c2a5423c64a5f9dc03865f2c中还有更多类似的设置,可能也有帮助。根本原因是termcap / terminfo中的某些内容不正确