Vim-删除到上一个字(不包括上一个字)
是否有办法删除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
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'