分页: 1 / 1

vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 18:06
A-yu
就像 7gg 这样的按键,可以跳转到第7行,如果我map一个函数,例如
map <c-t> :call afunction() <Cr>
按键x<c-t>时候,如何捕获这个数字x,并且作为函数的参数?
因我想实现类似重复操作的功能,并且是自定义重复次数的。
最近自己在写个插件时想到的问题。

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 18:30
eexpress
这太没通用性了。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 19:01
A-yu
eexpress 写了:这太没通用性了。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。
:em01

ee可能跟我想的不一样。
我指的是在normal模式下,按数字键然后再按我map了的快捷键调用一个函数的时候,取得这个数字键的值,然后作为函数的参数,方便函数做一些行为判断的,比如重复的次数。
还是gg为例,
gg是跳转到开始处,
1gg则是跳到第一行,ngg是跳到第n行这样
主要是取得那个n值

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 19:03
eexpress
%l %L 记得函数里面调用这个,就是当前行号/总行数。

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 19:23
A-yu
我主要是想取得数字按键的值,比如我要调用一个函数在缓冲区自动加入文本行,这个函数map为<c-t>,
我希望能normal模式下按任意数字键 + <c-t> 就能打印这个数字对应的行数,所以想要取得这个数字键的值作为函数的参数。翻遍vim帮助文档的函数列表没发现有这个……呼……

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 19:30
eexpress
没去研究那些函数。你是不是只有0-9种可能呢?
可以试试<leader>0-9
lol

Re: vim中map一个函数时如何捕获快捷键之前输入的数字??

发表于 : 2009-03-15 19:53
A-yu
:em06
还是没能弄好……
但是发现了这段东西:
如果你在激活映射前输入计数,实际效果就像是该计数在 {lhs} (译者注: 疑为 {rhs})
之前输入一样。例如,对下面的映射: >
:map <F4> 3w
输入 2<F4> 会得到 "23w"。不是移动 2 * 3 个单词,而是 23 个单词。
如果你希望得到计数相乘的效果,可使用表达式寄存器: >
:map <F4> @='3w'<CR>
引号之间的部分是待执行的表达式。 |@=|