我有一个构建脚本" maker",我打算将其设置为makeprg。该脚本有两个参数:flag_verbose
和flag_install
,前者建议是否给出详细输出(对于每个程序),如果构建成功,则后者会导致安装。
现在我想设置一些关键映射,例如:
<F7-(a/d/j/z/i)> :make <return> :copen
在这里,我想对制造商脚本进行论证。 flag_verbose
和flag_install
由(a [apt} / d [x] / j [avac] / z [all])和&#39; i [nstall]&#39中的单个字符组成;分别
所以基本上我想根据<FN-x>
键击给脚本提供不同的参数,x是不同的标志。
我可以在vimrc或vimscript中设置这样的功能吗?如果是这样,怎么样?
答案 0 :(得分:3)
首先,没有<F7-a>
符号,您无法同时按 F7 和 A 来定义触发的映射。您可以做的是映射序列,写为<F7>a
。
因此,您可以定义以下映射集:
nnoremap <F7>a :make a<CR>:copen<CR>
nnoremap <F7>d :make d<CR>:copen<CR>
...
这可以通过元编程简化:
for s:arg in ['a', 'd', 'j', 'z', 'i']
execute printf('nnoremap <F7>%s :make a<CR>:copen<CR>', s:arg)
endfor
但我会选择这个解决方案,它准备不完整的命令行并将光标定位在参数将被放置的位置。有了这个,你只有一个映射,并且还可以传递no或多个参数。缺点是您还必须按 Enter 才能启动命令:
noremap <F7> :execute 'make '<Bar>copen'<Left><Left><Left><Left><Left><Left><Left><Left>