我正在寻找一种方法来重新映射在终端中执行命令的密钥(我正在使用 bash),以防止在生产服务器上执行意外命令。返回应该被禁用。
我在 .inputrc 中尝试了以下操作
RET : "Disabled"
"\C-e" : "\r"
但这不起作用,因为 Return 被映射回禁用状态。
完整的.inputrc
#set editing-mode vi
TAB: menu-complete
RET: ""
"\C-e": "\C-j"
"\e[Z": menu-complete-backward
"\C-w": forward-word
"\C-g": forward-word
"\C-g": "gd\015"
"\C-o": "h\015"
#"\C-b": backward-word
"\C-3": backward-char
set show-all-if-ambiguous on
set completion-ignore-case on
set meta-flag on
set input-meta on
set convert-meta on
set output-meta on
#"\C-pp": "cd -\015"
"\M-p": "cd -\015"
"\M-o": "ls\015"
"\C-w": forward-word
$if mode=vi
set keymap vi-command
"gg": beginning-of-history
"G": end-of-history
set keymap vi-insert #notice how the "jj" movement is
"jj": vi-movement-mode #after 'set keymap vi-insert'?
"\C-w": backward-kill-word
"\C-p": history-search-backward
$endif
答案1
RET : ""
然后从现在开始使用 Cj 输入命令。
答案2
要禁用 Return 键,您可以将以下内容添加到您的.inputrc
:
"\C-m":""
现在用于C-j
执行命令。
为了避免C-j
在增量搜索历史记录时点击两次(例如通过C-r
),请另外添加以下行:
set isearch-terminators '\C-['
这使得Esc
终止搜索C-j
并且accept-line
。
请参阅man 3 readline
了解更多详情。