就像 7gg 这样的按键,可以跳转到第7行,如果我map一个函数,例如
map <c-t> :call afunction() <Cr>
按键x<c-t>时候,如何捕获这个数字x,并且作为函数的参数?
因我想实现类似重复操作的功能,并且是自定义重复次数的。
最近自己在写个插件时想到的问题。
vim中map一个函数时如何捕获快捷键之前输入的数字??
- A-yu
- 帖子: 127
- 注册时间: 2008-04-25 23:45
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: vim中map一个函数时如何捕获快捷键之前输入的数字??
这太没通用性了。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。
● 鸣学
- A-yu
- 帖子: 127
- 注册时间: 2008-04-25 23:45
Re: vim中map一个函数时如何捕获快捷键之前输入的数字??
eexpress 写了:这太没通用性了。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。
ee可能跟我想的不一样。
我指的是在normal模式下,按数字键然后再按我map了的快捷键调用一个函数的时候,取得这个数字键的值,然后作为函数的参数,方便函数做一些行为判断的,比如重复的次数。
还是gg为例,
gg是跳转到开始处,
1gg则是跳到第一行,ngg是跳到第n行这样
主要是取得那个n值
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- A-yu
- 帖子: 127
- 注册时间: 2008-04-25 23:45
Re: vim中map一个函数时如何捕获快捷键之前输入的数字??
我主要是想取得数字按键的值,比如我要调用一个函数在缓冲区自动加入文本行,这个函数map为<c-t>,
我希望能normal模式下按任意数字键 + <c-t> 就能打印这个数字对应的行数,所以想要取得这个数字键的值作为函数的参数。翻遍vim帮助文档的函数列表没发现有这个……呼……
我希望能normal模式下按任意数字键 + <c-t> 就能打印这个数字对应的行数,所以想要取得这个数字键的值作为函数的参数。翻遍vim帮助文档的函数列表没发现有这个……呼……
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- A-yu
- 帖子: 127
- 注册时间: 2008-04-25 23:45
Re: vim中map一个函数时如何捕获快捷键之前输入的数字??
还是没能弄好……
但是发现了这段东西:
如果你在激活映射前输入计数,实际效果就像是该计数在 {lhs} (译者注: 疑为 {rhs})
之前输入一样。例如,对下面的映射: >
:map <F4> 3w
输入 2<F4> 会得到 "23w"。不是移动 2 * 3 个单词,而是 23 个单词。
如果你希望得到计数相乘的效果,可使用表达式寄存器: >
:map <F4> @='3w'<CR>
引号之间的部分是待执行的表达式。 |@=|