Vim - 删除直到上一个单词(不包括前一个单词)



有没有办法删除直到vim中的前一个单词(而不删除前一个单词本身的部分)?

例如,使结果如下所示(管道字符"|"是光标位置):

before: one   two   three   |four
after:  one   two   three|four

再比如:

before: one   two   three   fo|ur
after:  one   two   three|ur

有没有办法做到这一点?

我想使用ge,但是它具有包容性,不太适合此应用程序。请改用搜索、?和删除命令。

d?><cr>

这通过搜索(?)向后(d)删除(),直到找到词边界(>)的结尾。

有关更多帮助,请参阅:

:h ?
:h exclusive
:h />

使用 'T' 选项

dTe ........... delete until (before) 'e'

的组合

  • db(删除到当前单词的开头)和
  • diw(删除内部单词,(也删除单词之间的所有空格))

Peter Rincker给了我以下想法:

"My custom text objects (move until one character before word)
nnoremap <silent> [ ?Szss<cr>
nnoremap <silent> ] /sS<cr>
vnoremap <silent> [ ?Szss<cr>
vnoremap <silent> ] /sS<cr>
nnoremap <silent> d[ d?Szss<cr>
nnoremap <silent> d] d/sS<cr>
nnoremap <silent> c[ c?Szss<cr>
nnoremap <silent> c] c/sS<cr>

含义:?-
向后搜索/- 向前搜索S- 搜索非空格字符
s-

搜索空格字符<cr>-
按回车键(完成命令)
zs- 将光标放在此位置。查找"帮助\zs",以获取更准确的信息。

例:

nnoremap <silent> [ ?Szss<cr>

按下[按钮时,向后搜索 (?) 寻找非空格字符 (S) 后跟空格字符 (s)。将光标放在空格和非空格字符 (zs) 之间。输入命令 (<cr>)。

相关内容

  • 没有找到相关文章

最新更新