Vim映射中的密钥重复和范围

时间:2010-01-14 02:45:06

标签: vim map mapping macvim

我想在我的.gvimrc中定义一个映射,以便如果按下最后一个键,则重复触发的操作。具体来说,我想做一些像

这样的事情
map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1

对于MacVim,但我希望在保持t / T时继续降低/增加透明度(不想继续按空格键)。

如果你有一个更好的方法来调整透明度的建议,我也会很感激。

另外,能够输入 20 SPACE t 并且透明度降低20倍会很高兴;但是,当我尝试时,我得到了一个

E481: No range allowed.

如何启用范围指定?

非常感谢。

1 个答案:

答案 0 :(得分:6)

我不确定你问题的第一部分,但要获得 20 <Space> t 才能够做好自己的工作:

:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
  • 使用<C-U>删除在正常模式下键入 20 时添加到ex命令的行范围。
  • 使用exe执行'dynamic'vimscript。
  • v:count1是最后一次正常模式命令的计数(本例中为20)。如果没有计数,则默认为1。

有关其他信息,请参阅

:h v:count
:h v:count1

<强>更新

您可以使用exe表单而不是let表单忽略set

:map <space>t :<C-U>let &transparency-=v:count1<CR>

请参阅:h :let-&