Vim - 删除直到上一个词(不包括上一个词)
Vim - delete until previous word (excluding the previous word)
有没有办法删除直到 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 /\>
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
- 搜索非白色 space 字符
\s
- 搜索白色 space 字符
<cr>
- 按回车键(完成命令)
\zs
- 将光标置于此位置。查找'help \zs',以获得更准确的信息。
示例:
nnoremap <silent> [ ?\S\zs\s<cr>
当按下 [
按钮时,向后搜索 (?
),找到一个非白色 space 字符 (\S
),然后是一个白色 space 字符 (\s
)。将光标放在白色 space 和非白色 space 字符 (\zs
) 之间。输入命令(<cr>
).
使用 'T' 选项
dTe ........... delete until (before) 'e'
的组合
- db(删除到当前单词的开头)和
- diw(删除内部单词,(也删除单词之间的所有空格))
有没有办法删除直到 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 /\>
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
- 搜索非白色 space 字符
\s
- 搜索白色 space 字符
<cr>
- 按回车键(完成命令)
\zs
- 将光标置于此位置。查找'help \zs',以获得更准确的信息。
示例:
nnoremap <silent> [ ?\S\zs\s<cr>
当按下 [
按钮时,向后搜索 (?
),找到一个非白色 space 字符 (\S
),然后是一个白色 space 字符 (\s
)。将光标放在白色 space 和非白色 space 字符 (\zs
) 之间。输入命令(<cr>
).
使用 'T' 选项
dTe ........... delete until (before) 'e'
- db(删除到当前单词的开头)和
- diw(删除内部单词,(也删除单词之间的所有空格))