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

Vim、Emacs配置和使用
回复
头像
A-yu
帖子: 127
注册时间: 2008-04-25 23:45

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

#1

帖子 A-yu » 2009-03-15 18:06

就像 7gg 这样的按键,可以跳转到第7行,如果我map一个函数,例如
map <c-t> :call afunction() <Cr>
按键x<c-t>时候,如何捕获这个数字x,并且作为函数的参数?
因我想实现类似重复操作的功能,并且是自定义重复次数的。
最近自己在写个插件时想到的问题。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#2

帖子 eexpress » 2009-03-15 18:30

这太没通用性了。
let w = expand("<cword>") " 在当前光标位置抓词
就知道这个。
其他,看vim的内部函数罗。
● 鸣学
头像
A-yu
帖子: 127
注册时间: 2008-04-25 23:45

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

#3

帖子 A-yu » 2009-03-15 19:01

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

ee可能跟我想的不一样。
我指的是在normal模式下,按数字键然后再按我map了的快捷键调用一个函数的时候,取得这个数字键的值,然后作为函数的参数,方便函数做一些行为判断的,比如重复的次数。
还是gg为例,
gg是跳转到开始处,
1gg则是跳到第一行,ngg是跳到第n行这样
主要是取得那个n值
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#4

帖子 eexpress » 2009-03-15 19:03

%l %L 记得函数里面调用这个,就是当前行号/总行数。
● 鸣学
头像
A-yu
帖子: 127
注册时间: 2008-04-25 23:45

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

#5

帖子 A-yu » 2009-03-15 19:23

我主要是想取得数字按键的值,比如我要调用一个函数在缓冲区自动加入文本行,这个函数map为<c-t>,
我希望能normal模式下按任意数字键 + <c-t> 就能打印这个数字对应的行数,所以想要取得这个数字键的值作为函数的参数。翻遍vim帮助文档的函数列表没发现有这个……呼……
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#6

帖子 eexpress » 2009-03-15 19:30

没去研究那些函数。你是不是只有0-9种可能呢?
可以试试<leader>0-9
lol
● 鸣学
头像
A-yu
帖子: 127
注册时间: 2008-04-25 23:45

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

#7

帖子 A-yu » 2009-03-15 19:53

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