我只是偶然注意到了这一点。
我用的是vi
readline模式(run set -o vi
in bash
)所以特别明显;在emacs
readline 模式下我不认为Esc做任何事情,但在vi
模式下它退出插入模式(进入正常模式)。
我没有看到Shift-Tab记录在 中man bash
,似乎它作为Esc密钥的解释比bash
. 可能在readline中?
它适用于 Mac OS X 和 Linux。
我在哪里可以找到这个文档?
我在 cygwin 环境的薄荷窗口中。
当我输入⎈ Ctrl+ Vthen↑键时,我得到了:^[[A
然后我 ssh 进入 Raspberry Pi,并立即退出。
现在我输入⎈ Ctrl+V然后↑键我得到:^[OA
~$ ^[[A
~$ ssh rasp
Last login: Tue Dec 24 12:08:16 2019 from 192.168.0.5
raspberrypi%
Connection to 192.168.0.12 closed.
~$ ^[OA
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解吗?
我在 Ubuntu 和 Arch 上使用 zsh shell 作为默认 shell。
我配置了一个快捷方式(向上箭头)以在 zsh shell 中自动完成历史记录,在我的 中使用以下行.zshrc
:
bindkey "^[[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
然而,当我.zshrc
在 Ubuntu 中启动和/或重新启动时,快捷方式不起作用(我只得到上一个命令,无论我开始输入什么),而在 Arch 上它工作得很好(我只得到最后一个以什么开头的命令)我打字)。
有谁知道如何解决这个问题?
在我重新映射Caps Lock
到的许多其他修改中Hyper
,一个来自Space-cadet 键盘的古老修饰键
。
但是我找不到如何将它用于 Tmux 中的键绑定的示例,它具有类似 Emacs 的键绑定定义,例如C-k
在它们两个中都定义了 Ctrl-k,所以我尝试了H-k
在 Emacs 中完美运行的方法,但是作为事实证明,不是在 Tmux 中。
来自我的确切绑定定义 .tmux.conf
bind-key -T copy-mode H-k send-keys -X -N 30 scroll-down
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
/home/attila/.tmux.conf:21: unknown key: H-k
Run Code Online (Sandbox Code Playgroud)
我知道有一个技巧可以将Hyper
键模仿为同时按下所有其他修饰键,但是我使用xcape,所以这不是一个选项。
在构建一个小的 Expect 脚本时,我注意到,执行脚本后,一些字符会自动出现在 bash 的输入中。我以前在其他程序上见过这种情况,但在这里我有一些可重现的东西。
我的期望脚本如下:
#!/usr/bin/expect
spawn ssh root@[lindex $argv 0]
expect "password:"
send "[lindex $argv 1]\r"
expect "~#"
Run Code Online (Sandbox Code Playgroud)
这是结果:
user@PC:~$ expect test.exp 192.168.0.2 root
spawn ssh root@192.168.0.2
root@192.168.0.2's password:
^[[51;117Rroot@device:~# user@PC:~$ ;117R
-bash: syntax error near unexpected token `;'
user@PC:~$
Run Code Online (Sandbox Code Playgroud)
正如您在输出的第五行中看到的那样,stdout ( ^[[51;117R
) 上有一些随机字符,其中一些泄漏到 shell 输入行 ( ;117R
) 上。如果我在执行 Expect 脚本后按 Enter 键,bash 会尝试解释该 ( ;117R
),就像我已将其输入到 bash 中一样。
我的问题是,这里发生了什么以及如何阻止它?
我xterm-keys
在 tmux 中启用了正常的 xterm 键绑定,例如使用Ctrl 箭头键进行全字移动。
但是,通过启用xterm-keys
它会导致Shift-Enter在vim
. 特别是,Shift-Enter在正常模式下按下可切换从光标位置开始的 13 个字母的大写,而与单词边界无关。在命令模式下按这些键会退出该模式,然后切换 13 个字母的大写。通常在 中vim
,此按键的结果是向下移动一行(正常模式)或执行任何输入的命令(命令模式),据我所知,这些是默认行为。
我转载空这个效果.tmux.conf
和.vimrc
文件,所以它不是其他配置设置的副作用。