因此,作为一种解决方法,我们只是将Ctrl+映射Backspace到已经映射到. 因此,当您按下+时,它会被转换为+ ,而后者又会发送。我从这篇 SU 帖子中得到了这个解决方法的想法。CtrlWbackward-kill-wordCtrlBackspaceCtrlWbackward-kill-word
" Map Ctrl-Backspace to delete the previous word in insert mode.
" solution: https://vim.fandom.com/wiki/Map_Ctrl-Backspace_to_delete_previous_word
noremap! <C-BS> <C-w>
noremap! <C-h> <C-w>
请注意,这将在终端和默认的 emacs 模式下工作(如果Ctrl+W为您删除前面的单词,您正在使用该模式)。它不会在 bash 的 vi 模式下工作,也不会影响 vi/vim 本身。因此,这只是部分答案,但该 emacs 用户可以提供最好的答案。
这类事情由
readline
库管理,其行为可以通过~/.inputrc
. 编辑(或创建,如果它不存在)~/.inputrc
并添加此行:现在,打开一个新终端,它应该可以工作了。
解释
\C-H
实际上是Control+ BackSpace。您可以通过按Ctrl+V然后查看键码,即您要查找的键。你会看到BackSpace返回^H
。现在,应该可以通过使用 将Control+绑定BackSpace到删除前一个单词 (
backward-kill-word
orunix-word-rubout
)的 bash 函数"\C-H": backward-kill-word
。但是,我无法让它工作。它与不同的键("\C-E": backward-kill-word
例如,make Ctrl+ Edelete 前一个词)配合得很好,但出于某种原因,我无法让它与BackSpace.因此,作为一种解决方法,我们只是将Ctrl+映射Backspace到已经映射到. 因此,当您按下+时,它会被转换为+ ,而后者又会发送。我从这篇 SU 帖子中得到了这个解决方法的想法。CtrlW
backward-kill-word
CtrlBackspaceCtrlWbackward-kill-word
使用Alt+Backspace代替:它就像Ctrl+一样工作Backspace,不需要任何配置。
直到最近,gnome-terminal 在Backspace和Ctrl+上发出了相同的代码Backspace,因此您无法在应用程序中区分这两者。
这在 vte-0.42 中得到修复,它是今年秋天发布的 Gnome 3.18 的一部分。
如果您使用的是 Wily,则可以在Gnome3 Staging中找到更新的软件包。
[对于 gnome 终端]
使用
stty
工具,非常适合可视化绑定了哪些bash
键盘快捷键。查看您当前的 bash 键盘快捷键(我的系统输出):
我的输出:
werase
负责删除整个单词。运行它会设置
ctrl
+backspace
在按下时擦除一个单词。!注意:这会将此选项设置
only
为您当前的终端/bash 会话。为了应用这个permanently
,你需要.bashrc
在它的末尾添加以前的命令到文件。每次打开 gnome-terminal 时,都会加载 .bashrc 中的设置。
在此之后你就可以开始了。请享用。
[ 对于 vim 和 neovim ]
只需将其粘贴到
init.vim
或vim.rc
:这将在插入模式下工作,ofc。这就是为插入模式定义它的要点。
适用于
neovim 0.5
和lower
版本,也适用于standard vim
.它适用于我的机器。只需确保您使用 master 的 tmux 和 linuxbrew 的 nvim,并且 control+backspace 也适用于 bash 和 vim!
(也可以从 linuxbrew 获取 bash)