我遇到了一个奇怪的问题:
当 ssh 进入特定主机(从 OSX 到 RHEL5)时,vim 似乎忘记了如何退格,但仅限于 tmux 会话中,即:
ssh [email protected]
vim test
上面的退格键可以正常工作。
然而,这并没有:
ssh [email protected]
tmux
vim test
在插入模式下按退格键会出现 ^?这可能是什么问题?
答案1
您可能需要更改终端以^h
在您键入时发送Backspace
。
在终端的首选项中,该设置是配置文件的一部分,因此您可以为与该 RHEL5 系统的 SSH 连接设置专用配置文件。
答案2
您可以将退格键映射到您需要的键,就像 Kevin 所说的那样。看起来您需要将其映射到 ^?(而不是 ^H)
为此,请使用以下命令:
stty erase "^?"
这可以添加到您的启动脚本(.login
或.tcshrc
或.bashrc
,或其他文件,取决于您使用的 shell)。
答案3
为了修复 Apple M1 Pro OSX 12.4 上的退格键,我必须这样做
$(brew --prefix)/opt/ncurses/bin/infocmp tmux-256color > ~/tmux-256color.info
tic -xe tmux-256color ~/tmux-256color.info
问题:
https://github.com/tmux/tmux/issues/1257#issuecomment-581378716
https://gist.github.com/bbqtd/a4ac060d6f6b9ea6fe3aabe735aa9d95
答案4
我做了一个解决方法
在中创建别名
.alias
alias emacs(or vi)='stty erase "^H" emacs'
编写 shell 脚本
# filename tmuxsh stty ek cmd=$(which tmux) # tmux path session=$1 if [ $# = 0 ]; then $cmd ls exit 0 fi $cmd has -t $session 2> /dev/null if [ $? != 0 ]; then $cmd new -s $session exit 0 fi $cmd att -t $session exit 0
当然,您也可以创建一个别名, alias tm=tmuxsh
然后您就可以在 tmux 中或 tmux 外很好地使用 emacs/vi。
为什么在步骤 1 中创建 emacs 别名?因为如果只使用步骤 2,退出 tmux 到正常 shell 后,emacs/vi 也会遇到此问题。
这对我来说很有效。