如何为 `makeprg` 提供可变参数
How to give variable arguments to `makeprg`
我有一个构建脚本 "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]) 和 'i[nstall]' 中的单个字符组成。
所以基本上我想根据 <FN-x>
键击为脚本提供不同的参数,x 是不同的标志。
我可以在 vimrc 或 vimscript 中设置这样的功能吗?如果是,怎么办?
首先,没有 <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
但我会选择这个解决方案,它准备了不完整的命令行并将光标定位在将放置参数的位置。有了这个,你只有一个映射,并且有可能不传递或传递多个参数。缺点是您还必须按 Enter 来启动命令:
noremap <F7> :execute 'make '<Bar>copen'<Left><Left><Left><Left><Left><Left><Left><Left>
我有一个构建脚本 "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]) 和 'i[nstall]' 中的单个字符组成。
所以基本上我想根据 <FN-x>
键击为脚本提供不同的参数,x 是不同的标志。
我可以在 vimrc 或 vimscript 中设置这样的功能吗?如果是,怎么办?
首先,没有 <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
但我会选择这个解决方案,它准备了不完整的命令行并将光标定位在将放置参数的位置。有了这个,你只有一个映射,并且有可能不传递或传递多个参数。缺点是您还必须按 Enter 来启动命令:
noremap <F7> :execute 'make '<Bar>copen'<Left><Left><Left><Left><Left><Left><Left><Left>