将文件名和当前行传递给 shell 脚本

将文件名和当前行传递给 shell 脚本

我想将文件名和光标所在的当前行号(用冒号分隔)传递给外部 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>

相关内容