Hen*_*k N 54 vim tmux modifier-keys
这一切都在 OS X 上的 iTerm2 中。
我曾经有过
export TERM='xterm-256color'
Run Code Online (Sandbox Code Playgroud)
在我的.bashrc
. 这意味着 tmux 中的 Vim 确实使用了 256 种颜色。
一旦我添加
set -g xterm-keys on
Run Code Online (Sandbox Code Playgroud)
然后带有修饰符的键盘快捷键在 Vim 中运行良好。即:shift+left/right
我映射到切换 Vim 选项卡,ctrl+up/down
我映射到移动(“气泡”)行,并且shift+left/right
在命令行模式下开箱即用以逐字跳转(例如,在键入类似的内容时:e foo bar baz
)。
然而,这种设置有问题,即Vim的背景颜色只能说明后面的文字,提到这里。
所以我删除了
export TERM='xterm-256color'
Run Code Online (Sandbox Code Playgroud)
从我的.bashrc
,而不是把它放在我的.tmux.conf
:
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
这修复了 Vim 的背景颜色,但破坏了键盘快捷键 - 他们做了意想不到的事情(移动光标,删除文本)。
通过使用ctrl+v
插入来自组合键逐字输出(如描述在这里),我是能够解决它:
map [1;5A <C-Up>
map [1;5B <C-Down>
map [1;2D <S-Left>
map [1;2C <S-Right>
cmap [1;2D <S-Left>
cmap [1;2C <S-Right>
Run Code Online (Sandbox Code Playgroud)
这使快捷方式有效,但感觉不是正确的解决方案。谁能告诉我这里发生了什么以及如何解决它?
Chr*_*sen 84
您需要设置tmux窗口选项,xterm-keys
以便tmux将这些密钥传递到其终端。你可能想把它放在你的~/.tmux.conf
:
set-window-option -g xterm-keys on
Run Code Online (Sandbox Code Playgroud)
当 TERM 是xterm
-something 时,Vim通常会自动设置对这些键的处理,但由于 TERM 是screen-256color
. 您可以~/.vimrc
像这样手动配置这些键:
if &term =~ '^screen'
" tmux will send xterm-style keys when its xterm-keys option is on
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
Run Code Online (Sandbox Code Playgroud)
至少这样您就不必映射所有不同的组合。
归档时间: |
|
查看次数: |
29862 次 |
最近记录: |