我的挣扎:
我正在将~/.inputrc
文件配置为与我的自定义 emacs 键绑定相同,并且我对 readline 的键序列感到非常困惑。
我的意思是,如果我想设置<up>
/ <down>
,我必须将其设置为"\e[A"
/"\e[B"
我怎样才能推断keyseq,<F1>..<F12>
或者即使我想绑定某些东西,比如用(kbd "C-x <M-f7>")
emacs术语来说(即:成为[control]+[x] [alt]+[f7]
一个keyseq)?
我想要的是:
有没有命令它可以告诉我键盘上某个键的转义序列是什么?如果没有命令,是否有其他资源(文章/表格/...)提供一些提示?
--> goal: replace <KEY SEQUENCE> with proper keyseq
"<f3>" : start-kbd-macro
"<S-f4>" : end-kbd-macro
"C-x <C-M-S-f4>" : dump-macro
"<f4>" : call-last-kbd-macro
... more keybindings ...
答案1
我找到了解决方案:使用emacs -nw
和功能insert-quoted
(默认绑定到Ctrl+ q)。
Ctrl+q ↑将导致^[[A
Ctrl+q F1^[[[A
然后中的行将~/.inputrc
如下(结果可能因环境而异 - 主要是 $TERM 变量):
"\e[[A": "pressed up key"
"\e[[[A": "pressed F1"
更改 .inputrc 的动机如下。
你不喜欢使用类似 emacs 的键来浏览行和历史记录吗?
我不喜欢,我更喜欢ErgoEmacs键绑定,因为它们合乎逻辑,而且我不仅在 Emacs 中而且在整个系统内使用它们。
"\ej": backward-char
"\el": forward-char
"\ei": previous-history
"\ek": next-history
"\eh": beginning-of-line
"\eH": end-of-line
"\eu": backward-word
"\eo": forward-word
"\eg": kill-line
"\eG": backward-kill-line
"\ee": backward-kill-word
"\er": kill-word
"\ed": backward-delete-char
"\ef": delete-char
"\ez": undo
"\ex": kill-region
"\ec": copy-region-as-kill
"\ev": yank
"\e;": forward-search-history
"\e:": reverse-search-history
我已经写过很多次“sudo aptitude install”(通常在全新安装之后),所以我有(M-a M-i
即Alt++ )作为它的快捷方式(因为同样的事情不会自动完成)a Altialias
"\ea\ei": "sudo aptitude install "
还有许多其他理由说明您应该拥有自己的~/.inputrc
...
答案2
Vim readline 文件类型和语法
我找到Vim有一个 readline 文件类型插件,它可以帮助重写你的.inputrc
.
该插件应该自动检测.inputrc
,如果没有,您可以调用:set filetype=readline
来选择它。
假设您有一个空行,"": readline-command
您可以在插入模式()中将光标放在“”引号内,i然后按Ctrl+插入许多更神奇的咒语。Vkeystroke-combination
假设语法完成已打开,您可以自动完成 readline 命令。