Vim 添加对“ci”和“da”的支持(选择管道内的文本)
在编辑源代码时,我经常使用诸如Vim 添加对“ci”和“da”的支持(选择管道内的文本),vim,Vim,在编辑源代码时,我经常使用诸如ci(和di{之类的命令 Ruby块中的参数包含在管道字符中,如| a、b | 是否可以扩展此行为以添加对的支持,从而使ci、da和yi等命令正常工作?我的vimrc中有以下命令(为了完整性,我添加了va和vi命令): ,操作符重复前面的F,F,T或T,但方向相反。这是一个非常有用的键 可以轻松修改这些映射以支持其他分隔符;在编辑LaTeX时,我一直使用$版本。这就是我将使用的: vnoremap <silent> a<bar> :<c
ci(
和di{
之类的命令
Ruby块中的参数包含在管道字符中,如| a、b |
是否可以扩展此行为以添加对
的支持,从而使ci
、da
和yi
等命令正常工作?我的vimrc中有以下命令(为了完整性,我添加了va
和vi
命令):
,
操作符重复前面的F
,F
,T
或T
,但方向相反。这是一个非常有用的键
可以轻松修改这些映射以支持其他分隔符;在编辑LaTeX时,我一直使用
$
版本。这就是我将使用的:
vnoremap <silent> a<bar> :<c-u>silent! normal! vF<bar>of<bar><cr>
vnoremap <silent> i<bar> :<c-u>silent! normal! vT<bar>ot<bar><cr>
onoremap <silent> a<bar> :normal va<bar><cr>
onoremap <silent> i<bar> :normal vi<bar><cr>
vnoremap a:静默!正常!vFof
静默!正常!vTot
onoremap a:正常va
onoremap i:正常vi
基本上设置操作员挂起模式(即onoremap)这将调用相应的视觉模式映射。视觉模式映射将使用F
向后搜索以找到
,然后通过o
命令转到视觉选择的另一侧,然后使用F
向前搜索以选择管道区域的另一端。内部映射与t而不是使用F
和F
命令,您可以使用t
和t
遗憾的是,这些映射不能正确地与
,redo命令一起工作,因为它们固有地依赖于视觉模式映射,这意味着
命令将再次执行相同的命令,但只对占用相同空间的区域执行。我正在考虑编写自己的文本obj。但是这要快得多。@Thanh DK:Your-link可能比我的方法更严格。例如,我的映射无法处理嵌套分隔符。但它们足以满足我的需要。
vnoremap <silent> a<bar> :<c-u>silent! normal! vF<bar>of<bar><cr>
vnoremap <silent> i<bar> :<c-u>silent! normal! vT<bar>ot<bar><cr>
onoremap <silent> a<bar> :normal va<bar><cr>
onoremap <silent> i<bar> :normal vi<bar><cr>