在命令行模式下是否有“删除到单词起始边界”的快捷方式(类似于普通模式下的 dw)?我想将 C-Del 重新映射到它。如果没有,也许还有其他方法可以让 C-Del 工作?
答案1
找到了一些方法,有点尴尬:
function! CtrlDel()
let str = getcmdline()
let pos = getcmdpos()
let len = strlen(str)
let i = 0
while pos + i < len && str[pos + i] !~ "\\s"
let i = i + 1
endwhile
while pos + i < len && str[pos + i] =~ "\\s"
let i = i + 1
endwhile
return strpart(str, 0, pos - 1) . strpart(str, pos + i)
endfunction
cnoremap <c-del> <c-\>eCtrlDel()<cr>
它由一个替换整个命令行的函数和一个通过调用该函数的映射组成Ctrl-\e。
答案2
我认为dw
已经提供了您要查找的内容,即仅由“单词字符”(字母、数字和下划线)组成的“单词”。要处理带标点符号的单词,请使用dW
(大写W
)。