【发布时间】:2017-07-11 16:52:07
【问题描述】:
我喜欢在插入模式下更改光标形状,但是在通过 tmux 进行 ssh-ing 时我无法正确配置它。以下是我的发现:
- 当我在本地 tmux 会话之外 ssh 并在远程 tmux 会话之外打开 Vim 时,光标形状可以正常工作(插入模式下的垂直条)。
- 当我在本地 tmux 会话之外 ssh 并在远程 tmux 会话中打开 Vim 时,光标形状起作用。
- 当我在本地 tmux 会话中 ssh 并在远程 tmux 会话之外打开 Vim 时,光标形状被破坏(插入模式中的块)。
- 当我在本地 tmux 会话中 ssh 并在远程 tmux 会话中打开 Vim(嵌套 tmux;我的首选设置)时,光标形状被破坏。
- 当我在本地 tmux 会话中本地打开 Vim 时,cursorshape 工作(也就是说,tmux 和 ssh 的组合出现问题;本地 tmux 在本地很好)。
我的本地机器运行的是 OS X Sierra,而我的远程机器是 CentOS 7。我认为这些都是相关的 dotfile 设置,如果需要,将发布其他设置:
=== ~/.tmux.conf(在本地和远程机器上)===
set-option -g default-terminal "screen-256color"
set-option -g xterm-keys on
=== ~/.vimrc(在远程机器上)===
if empty($TMUX)
let &t_SI = "\<Esc>]50;CursorShape=1\x7" " Vertical bar in insert mode
let &t_EI = "\<Esc>]50;CursorShape=0\x7" " Block in normal mode
else
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\"
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\"
endif
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
附带说明,在任何这些情况下,光标形状似乎都无法与 mosh 一起使用。我认为这是一个 mosh 限制,但如果有人有办法让它与 mosh 一起工作,那将特别有帮助。
【问题讨论】:
-
如果你使用iTerm2,你可能想看看vitality.vim
-
我不喜欢使用 iTerm2 的 tmux 集成。如果没有这种整合,活力能帮助解决这个问题,我会试一试。
-
AFAIK,集成是独立的,不需要生命力。