tmux 中的 vim:抛出“E388”处于插入模式

tmux 中的 vim:抛出“E388”处于插入模式

我读到在 的插入模式下vim,可以使用<C-Left><C-Right>来逐字移动。这对我来说是可行的,但仅限于我不在终端分离器vim内运行的情况。tmux

当在里面时tmux<C-Left>反而会将我抛出插入模式并给出错误:

E388:找不到定义

帮助中解释说此错误与定义搜索有关。但是,我并不想搜索任何定义,我只想将一个单词向左移动。此外,它只会让<C-Right>我退出插入模式,这不是我想要的。

在某处读到这可能与有关set (no)esckeys,我尝试了此标志的两种设置,结果完全相同。此外,我已经看到了答案如何让 tmux 中的 Vim 中的 shift+箭头和 ctrl+箭头起作用?但它们似乎对我没有帮助。

我的当前.tmux.conf

# This File is : ~/.tmux.conf

# use "|" and "-" to do vertical/horizontal splits
# (press CTRL B and then - or |, CTRL D to close it)
unbind %
bind | split-window -h
bind - split-window -v

# use the vim motion keys to move between panes
# (press CTRL B and then h,j,k,l for the move)
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# use vim motion keys while in copy mode
# To copy, press CTRL B and then [, move, space, move, enter.
# To paste, press CTRL B and then ]
setw -g mode-keys vi

# make vim work properly inside tmux
setw -g xterm-keys on
set -g default-terminal "screen-256color"

.vimrc

" tabs, indentation, line numbering
set ts=4 sts=4 number autoindent sw=4

" sage is python
au BufNewFile,BufRead *.sage set filetype=python

if &term =~ '^screen'
  " Page keys http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/FAQ
  execute "set t_kP=\e[5;*~"
  execute "set t_kN=\e[6;*~"

  " Arrow keys http://unix.stackexchange.com/a/34723
  execute "set <xUp>=\e[1;*A"
  execute "set <xDown>=\e[1;*B"
  execute "set <xRight>=\e[1;*C"
  execute "set <xLeft>=\e[1;*D"
endif

答案1

您的 Vim 无法正确检测<C-Left>终端发送的键码(可能还有其他终端)。相反,它会分析这些代码,ESC使其退出插入模式,然后[D导致奇怪的错误。

您可以尝试调整TERM设置,但一般来说,很难让特殊键(如光标键和功能键)ShiftCtrl终端中的修饰键(如 和 )配合使用。(这些在 Ubuntu 上对我来说也不起作用gnome 终端)最简单的解决方法是改用图形 GVIM。

相关内容