我经常处理CSS文件或其他需要繁琐数字的文件.我希望能够拥有一个引用整数的键,这些键指的w是一个单词,或(指一个句子.例如,在一个css文件中,我可以导航到高度声明的开头,并更改它的值,而不必重新键入"px"结束,如果我使用的话会发生这种情况w.
有这样的事情,但我在文档中遗漏了它,或者有没有办法将这个功能添加到我的.vimrc?
奖励积分如果有一种方法可以使用它,就像ci"我可以在线的开头,并使用"更改内部"命令跳转到AND更改下一个整数.
如果我可以做简单的算术,可以获得更多奖励 我希望能够发出一个简短的命令,这个命令是"Add too,internal,integer,5"的缩写,并且当前行上的下一个整数是五格,然后就是我开始的时候.
编辑:
一些非常好的建议每个人,一些伟大的想法肯定会改善我的工作.谢谢!Hassek的回答可能最有可能在我的工作流程中结束,但其他人似乎都没有(完全)回答我的初始问题:一个对整数有效的动作.由romainl追踪的提案似乎有这个目标,但我无法让它可靠地运作.
对于我自己(或许其他人),我将在下面澄清我的需求:
一个在行为方式上w起作用的键,但在整数上,这样我就可以简单地将它添加到我的mental vim词汇表中并无缝地使用它.这包括以下方案.(我将d用作我的示例键):
d:跳转到下一个整数cd:更改为光标下整数的结尾(注意,这cw是一个特殊情况,应该更改为NEXT字.cw实际上就像ce.)我希望这个特殊情况也可以用整数来实现id:选择[计数]整数.ad:选择[计数]整数.包括前导或尾随空白区域.我是否遗漏了任何w可能出现在新议案中的行为?在普通和视觉模式下是否还有一个键?
您可以使用以下命令添加或减去整数:
<num>Ctrl-a (to add)
<num>Ctrl-x (to substract)
Run Code Online (Sandbox Code Playgroud)
它将直接进入下一个数字并执行命令
请参阅此建议。看上去不错。
\n\n编辑
\n\n确实,那一个是相当不错的。这让我觉得我的习惯/<number><Esc>不是很有效,所以我将这些映射(并稍微修改了上面的映射以保持一致性)添加到了我的~/.vimrc. 让我们看看它们从长远来看是否有用:
nnoremap \xc3\xa8 /\\v\\d+<CR>\nnnoremap \xc3\xa9 ?\\v\\d+<CR>\nRun Code Online (Sandbox Code Playgroud)\n\n乍一看,\xc3\xa8ci\xc3\xa8132<Esc>似乎比/2<Esc>{count}s132<Esc>按键方面稍微好一些,但如果它允许我跳过a,那就更好了。检查我要更改的值的第一位数字,然后 b.计算要替换的字符。
时间会证明一切。
\n\n重新编辑
\n\n以下是该函数及其映射:
\n\nonoremap N :<c-u>call <SID>NumberTextObject(0)<cr>\nxnoremap N :<c-u>call <SID>NumberTextObject(0)<cr>\nonoremap aN :<c-u>call <SID>NumberTextObject(1)<cr>\nxnoremap aN :<c-u>call <SID>NumberTextObject(1)<cr>\nonoremap iN :<c-u>call <SID>NumberTextObject(1)<cr>\nxnoremap iN :<c-u>call <SID>NumberTextObject(1)<cr>\n\nfunction! s:NumberTextObject(whole)\n normal! v\n\n while getline(\'.\')[col(\'.\')] =~# \'\\v[0-9]\'\n normal! l\n endwhile\n\n if a:whole\n normal! o\n\n while col(\'.\') > 1 && getline(\'.\')[col(\'.\') - 2] =~# \'\\v[0-9]\'\n normal! h\n endwhile\n endif\nendfunction\nRun Code Online (Sandbox Code Playgroud)\n\n有了这个,我可以:
\n\nvcdy从光标到以 结尾的数字的一部分<command>N。某种程度上类似于<command>eor <command>w。
Here are some random numbers: 24 7635 1000018\n ^--->\nRun Code Online (Sandbox Code Playgroud)\n\n如果光标尚未位于数字上并且不向后移动,则该功能不起作用。
vcdy一个整数与<command>iN.
Here are some random numbers: 24 7635 1000018\n <-^--->\nRun Code Online (Sandbox Code Playgroud)\n\n同样,如果光标尚未位于该号码上,则该功能不起作用。
当然,整个事情还可以改进,但这只是一个开始!
\n\n结束编辑
\n\n我也经常使用 CSS。
\n\n我使用两种策略来更改数值:
\n\n{count}<C-a>并且{count}<C-x>,正如哈塞克的回答一样,当我知道我想要增加/减少数字多少时。假设我想变成20px,25px一个简单的5<C-a>方法就可以做到这一点,而不需要我将光标移动到数字上。这非常酷。
/<number><CR>{count}s<new number>当新值与当前值有很大不同并且我懒得计算增量时。/2<CR>2s67<Esc>会让我23px变成67px。/2<CR>R67<Esc>是另一种方法,但只有当新值与当前值的长度相同时才有效。f<number>如果您在同一条线上,请使用。
<C-r>=137-42<CR>请注意,您也可以插入我经常使用的表达式的结果。