有没有办法在vim中获得整数对象运动?
我经常处理CSS文件或其他需要繁琐数字的文件.我希望能够拥有一个引用整数的键,就像w引用一个单词一样,或者(指一个句子.例如,在一个css文件中我可以导航到一个高度声明的开头,并且改变它的价值而不必重新输入“px”结尾,如果我使用w就会发生这种情况.
有这样的事情,但我在文档中遗漏了它,或者有没有办法将这个功能添加到我的.vimrc? 如果有一种方法可以使用它,如ci“我可以在行的开头并使用”更改内部“命令跳转到AND更改下一个整数. 如果我可以做简单的算术,可以获得更多奖励我希望能够发出一个简短的命令,这个命令是“Add too,internal,integer,5”的缩写,并且当前行上的下一个整数是五格,然后就是我开始的时候. 编辑: 一些非常好的建议每个人,一些伟大的想法肯定会改善我的工作.谢谢! Hassek的回答可能最有可能在我的工作流程中结束,但其他人似乎都没有(完全)回答我的初始问题:一个对整数有效的动作.由romainl追踪的提案似乎有这个目标,但我无法让它可靠地运作. 对于我自己(或许其他人),我将在下面澄清我的需求: 一个在w方面起作用的键,但是在整数上,我可以简单地将它添加到我的mental vim词汇表中并无缝地使用它.这包括以下方案. (我将使用d作为我的示例键): >正常模式d:跳转到下一个整数 我是否遗漏了任何可能出现在新议案中的行为?在普通和视觉模式下是否还有一个键?
见
this proposal.看起来不错.
编辑 确实这个很不错.这让我觉得我习惯做/< number>< Esc>是不是非常有效,所以我添加了这些映射(并稍微修改了上面的映射以保持一致性)到我的?/ .vimrc.让我们看看它们从长远来看是否有用: nnoremap è /vd+<CR> nnoremap é ?vd+<CR> 乍一看,èciè132< Esc>似乎略微优于/ 2< Esc> {count} s132< Esc>在按键方面,但如果它允许我跳过一个更好.检查我想要改变的值的第一个数字和b.计算要替换的字符. 时间会证明. 重新编辑 以下是函数及其映射: onoremap N :<c-u>call <SID>NumberTextObject(0)<cr> xnoremap N :<c-u>call <SID>NumberTextObject(0)<cr> onoremap aN :<c-u>call <SID>NumberTextObject(1)<cr> xnoremap aN :<c-u>call <SID>NumberTextObject(1)<cr> onoremap iN :<c-u>call <SID>NumberTextObject(1)<cr> xnoremap iN :<c-u>call <SID>NumberTextObject(1)<cr> function! s:NumberTextObject(whole) normal! v while getline('.')[col('.')] =~# 'v[0-9]' normal! l endwhile if a:whole normal! o while col('.') > 1 && getline('.')[col('.') - 2] =~# 'v[0-9]' normal! h endwhile endif endfunction 有了这个,我可以: > vcdy从光标到结尾的数字的一部分,其中< command> N.某种程度上类似于< command> e或< command> w. Here are some random numbers: 24 7635 1000018 ^---> 如果光标不在数字上并且不向后,则它不起作用. Here are some random numbers: 24 7635 1000018 <-^---> 同样,如果光标不在数字上,它也不起作用. 当然,整个事情可以改进,但这是一个开始! EndEdit中 我也用CSS工作了很多. 我使用两种策略来改变数值: > {count}< C-a>和{count}< C-x>,就像在Hassek的回答中一样,当我知道我想要增加/减少数量时.假设我想将20px变成25px,一个简单的5< C-a>不需要我将光标移动到数字就行了.这非常酷. 请注意,您可以使用< C-r> = 137-42< CR>插入表达式的结果.我经常使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |