Bash
如何在 readline bash vi(vi shell 模式)中重新映射功能鍵?
關於 vi readline 中的映射功能鍵,我已經閱讀了這兩個 stackexchanges:
我有一個帶觸摸條的 MacBookPro。功能鍵始終打開,但與物理鍵不同,虛擬觸摸欄功能鍵是喜怒無常的,並且經常在我輸入的命令中註入垃圾(這在嘗試輸入下劃線時尤其成問題……我得到了很多,
F9
,F10
可能還有一些F11
)。我不使用這些鍵…所以我希望我可以禁用它們。但是,假設我可以讓他們簡單地走到行尾。這是我多次嘗試映射到行尾的嘗試之一(在插入模式下):
set editing-mode vi $if mode=vi set keymap vi-insert "<F9>": end-of-line $endif
在提示符下鍵入“asdf”的結果如下:
TT->~$ [] (arg: 20)
我已放置“
$$ $$",上面,在按 後游標仍然存在的地方
<F9>
,以防萬一。 我嘗試過的變體如下:
"<F9>": end-of-line
<F9>": end-of-line
20: end-of-line
"20": end-of-line
"arg: 20": end-of-line
(arg: 20): end-of-line
"(arg: 20)": end-of-line
更新:以下
.inputrc
現在正在“忽略”:set keymap vi-insert "\e[20~":redraw-current-line
這很瘋狂,但確實如此……我今天在一台新伺服器上,完全忘記了這個問題(以及隱藏在評論中的答案),我實際上是在Google上搜尋如何做到這一點。我正在為自己或在 vi 命令行中禁用功能鍵輸入時遇到問題的任何其他人發布我的答案:
- 創建或編輯您的
~/.inputrc
文件- 要通過(MacOS、Ubuntu、CentOS至少)禁用,請使用以下命令:
set keymap vi-insert "\e[19~":redraw-current-line "\e[20~":redraw-current-line "\e[21~":redraw-current-line "\e[22~":redraw-current-line "\e[23~":redraw-current-line
正如@mosvy 所指出的,重繪目前行可以防止煩人的“
(arg: 20)
”或“(arg: 21)
”破壞您的命令行輸入。