vim命令行中使用alt+backspace键按单词删除

问题描述 投票:0回答:7

有没有办法在vim命令行中使用

alt+backspace
?当必须单独退格
/very/long/file/path
而不是使用alt+退格键按单词删除时,它会变得不守规矩。

vim
7个回答
29
投票

尝试使用

<c-w>
Ctrl + W)删除单词或使用
<c-u>
Ctrl + U)删除行。


3
投票

http://vim.wikia.com/wiki/Map_Ctrl-Backspace_to_delete_previous_word

:imap <C-BS> <C-W>

设置ctrl退格键,我得看看怎么做alt


2
投票

当然,就像这样简单:

if has('gui_running')
    imap     <M-BS> <C-W>
    cnoremap <M-BS> <C-W>
else
    imap     <Esc><BS> <C-W>
    cnoremap <Esc><BS> <C-W>
endif

这里的技巧是要知道,给定一个假设的 foo 键,在按下 Alt+foo 组合后,许多终端将发送一个 Escape 代码,后跟 foo。显然也有例外——某些终端确实会发送 vim 可以识别为 Alt 的内容。但是,如果

imap <M-BS> <C-W>
映射在终端中不适合您,那么您的终端很可能会发送 Esc,因此组合
imap <Esc><BS> <C-W>
应该适合您。

您可以通过评估

:help map-alt-keys

在 vim 文档中阅读更多相关信息

1
投票

如果您位于路径的尽头,您可以点击

B
,然后点击
dW
(区分大小写)。这会将您跳转到单词的开头(忽略斜杠),然后删除该单词(再次忽略斜杠)。

希望这有帮助。


1
投票

Vim 无法接收替代输入。 skeept的答案似乎是最好的选择。

参见这个答案

Alt/Meta 键在 Vim 和大多数终端中都有问题,请参阅我的这个答案以了解情况概述(Meta 和 Alt 的情况相同)。

简而言之,Vim 根本接收不到 Alt:按 Alt+Backspace 与按 Backspace 完全相同。

无论如何,从长远来看,学习并习惯 Vim 的默认按键映射对你来说会更好。


0
投票

标记为正确的答案与大多数 UI 编辑器中 Alt + BackSpace 的行为不符。与此行为相对应的 vim 快捷键是

db
- 又名删除后面(一个单词?!),
dw
会删除前面的单词,这将是大多数 ui 程序中的 (Altr 或 Ctrl ) Del 快捷键。 这些工作方式基本上与
w
相同 - 将光标移动到单词开头,然后
b
,将光标移回单词开头 ...

免责声明:我已经使用我的 .vimrc 超过 10 年了。 ,这可能会有一些奇怪的变化,也会改变默认行为......


-1
投票

x 那么 w 也应该按单词退格。 d 然后 w 也会删除光标所在的当前单词。

© www.soinside.com 2019 - 2024. All rights reserved.