如何启用用 Tmux、Neovim 和 Alacritty 删除前一个单词?

如何启用用 Tmux、Neovim 和 Alacritty 删除前一个单词?

我使用 alacritty 终端和带有 tmux 的 neovim 编辑器。

起初Ctrl+ Backspace(用于删除前一个)在终端中根本不起作用。因此添加了以下行alacritty.yml

key_bindings:
  - { key: Back, mods: Control, chars: "\x17" }

这使得 alacritty 中的键绑定得以实现。现在它删除了终端中的一个单词。所以我在 neovim 键绑定中添加了以下内容:

vim.keymap.set("i", "^H", "<C-W>", { desc = "Delete previous word", noremap = true, silent = true })

这在 neovim 中启用了它。但是当我打开vim时多路复用器,它不起作用。我尝试添加以下内容

  • bind-key -n C-BSpace send-keys C-BSpace
  • bind-key -n C-BSpace send-keys ^H
  • bind-key -n ^H send-keys ^H
  • bind-key -n ^H send-keys C-BSpace

似乎没什么作用。我在网上查找任何其他答案,但找不到有类似问题的人。

因此,在我在 alacritty 中设置选项之前,当我运行时$ cat(或先按Ctrl+ V),然后按Ctrl+Backspace它会显示我^H,但是在 alacritty 中添加该键绑定后,它不再这样做,它直接开始删除它之前的单词。但 neovim 不做这个工作。

我还尝试了$ cat两个不同的终端(xfce4-terminal 和 terminator),并且都给了我^H.我不知道如何在这些终端中设置键绑定。只需在这些终端中按Ctrl+Backspace就可以像单个 一样操作Backspace,它在 tmux 上也可以执行相同的操作(在这些终端上使用时)。

编辑[已解决]:我在 tmux 配置中为 Ctrl-W 设置了绑定。正如其中一条评论所建议的:

当 Ctrl-w 已经在 neovim 的插入模式和命令行中删除了前一个单词时,为什么还要这样做呢?

我的答案是因为我已经将绑定设置为 Ctrl-W,所以我尝试删除该键绑定,并且它有效。我的配置:

alacritty.yml:

key_bindings:
  - { key: Back, mods: Control, chars: "\x17" }

nvim/init.lua:

vim.keymap.set("i", "^H", "<C-W>", { noremap = true, silent = true })

这两个组合实际上解决了这个问题。但是当 vim 将 Ctrl-Backspace 转换为 Ctrl-W 时,并且因为我在 tmux 配置中将 Ctrl-W 设置为绑定,所以我认为 tmux 可能会干扰该特定绑定。我不知道。但这就是我修复它的方法。

相关内容