通过vim普通模式从键盘传递多个数字作为函数的参数

时间:2016-09-20 14:50:54

标签: vim

e.g。在正常模式下,我输入

123 456<Enter>

我想将数字123456作为vim函数的参数传递。

代码示例:

function! PrintNum(A, B)
    echo A B
endfunction

nmap A B<Enter> call PrintNum(A, B)

AB可以是space分隔符的任何数字。请注意,函数PrintNum()仅用于测试两个数字是否正确通过函数。

1 个答案:

答案 0 :(得分:3)

直接回答

这是你要求的,但需要注意的是,这是非常常见的:

function! PrintNum(b)
    echo g:a a:b
endfunction

nnoremap <silent> <Space> :<C-u>let g:a = v:count<CR>
nnoremap <silent> <Enter> :<C-u>call PrintNum(v:count)<CR>

规范的Vim风格

映射通常只采用计数和/或注册。如果您需要更多,通常使用自定义命令

command! -nargs=+ PrintNum call PrintNum(<f-args>)

如果键入太多,您可以定义触发器映射,因此您只需输入数字并使用 Enter 确认:

nnoremap <Enter> :PrintNum<Space>

替代

或者,映射可以查询参数:

nnoremap <Enter> :call PrintNum(input('First number: '), input('Second number: '))<CR>