Vim-删除到上一个字(不包括上一个字)

Vim-删除到上一个字(不包括上一个字),vim,word,Vim,Word,是否有办法删除vim中的前一个单词(而不删除前一个单词本身的部分) 例如,结果如下(管道字符“|”是光标位置): 另一个例子: before: one two three fo|ur after: one two three|ur 有什么方法可以做到这一点吗?我想使用ge,但是它是包容性的,不适合此应用程序。而是使用delete命令进行搜索,? d?\><cr> Peter Rincker给了我以下想法: "My custom text objects

是否有办法删除vim中的前一个单词(而不删除前一个单词本身的部分)

例如,结果如下(管道字符“|”是光标位置):

另一个例子:

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

有什么方法可以做到这一点吗?

我想使用
ge
,但是它是包容性的,不适合此应用程序。而是使用delete命令进行搜索,

d?\><cr>

Peter Rincker给了我以下想法:

"My custom text objects (move until one character before word)
nnoremap <silent> [ ?\S\zs\s<cr>
nnoremap <silent> ] /\s\S<cr>
vnoremap <silent> [ ?\S\zs\s<cr>
vnoremap <silent> ] /\s\S<cr>
nnoremap <silent> d[ d?\S\zs\s<cr>
nnoremap <silent> d] d/\s\S<cr>
nnoremap <silent> c[ c?\S\zs\s<cr>
nnoremap <silent> c] c/\s\S<cr>
按下
[
按钮时,向后搜索(
),查找一个非空白字符(
\S
),后跟一个空白字符(
\S
)。将光标放在空白字符和非空白字符(
\zs
)之间。输入命令(
)。

使用“T”选项

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

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

这并不是我想要的,但它让我想到了通过“?”搜索模式,这是值得的。在下面我发布了我想要的映射。你可以通过
onoremap
创建一个操作符挂起映射,以避免进行
c
d
映射。你还可以避免副作用使用
search()
函数对搜索寄存器
“/
进行变异。例如
onoremap[w:call search('\>','b')
&
onoremap]w:call search('\s\s')
。请参见
:h:omap
&
:h search()
"My custom text objects (move until one character before word)
nnoremap <silent> [ ?\S\zs\s<cr>
nnoremap <silent> ] /\s\S<cr>
vnoremap <silent> [ ?\S\zs\s<cr>
vnoremap <silent> ] /\s\S<cr>
nnoremap <silent> d[ d?\S\zs\s<cr>
nnoremap <silent> d] d/\s\S<cr>
nnoremap <silent> c[ c?\S\zs\s<cr>
nnoremap <silent> c] c/\s\S<cr>
nnoremap <silent> [ ?\S\zs\s<cr>
dTe ........... delete until (before) 'e'