我想将文件名和光标所在的当前行号(用冒号分隔)传递给外部 shell 脚本。例如,如果我正在编辑文件“foo.c”,并且我当前在第 77 行,我想使用参数“foo.c:77”从 vim 调用我的脚本。
答案1
Karalos 答案的另一种选择:
:call system('echo ' . expand('%') . ':' . line('.'))
当然,您可以用您的 shell 脚本的名称替换“echo”。
system() 的优点是它返回命令运行的输出,因此您可以捕获它以便在需要时在 Vim 脚本中进一步使用。
:help expand()
如果您需要以任何方式限定/修改文件名,则可能需要查看修饰符。
答案2
虽然比较麻烦,但你可以尝试以下方法
:!echo %:<Ctrl+R>=line(".")<CR><CR>
或者你可以使用中间变量
:let l=line(".")
并调用
:!echo %:<Ctrl+R>=l<CR><CR>