【问题标题】:How to execute an external command in Vim script?如何在 Vim 脚本中执行外部命令?
【发布时间】:2013-07-01 19:10:38
【问题描述】:

我想在 Vim 脚本中执行一个外部命令,但我不知道该怎么做。例如,我需要使用chmod 命令更改文件权限(请假设应用程序有足够的权限来运行该命令)

有什么办法可以做到吗?

【问题讨论】:

标签: vim vim-plugin


【解决方案1】:

您可以使用:! vim 命令。例如,从 vim 内部(因此也来自 vim 脚本)echo 'Hello, World!',键入

:! echo 'Hello, World\!'

在 vim 中。或者,在 vim 脚本中,你可以只放

! echo 'Hello, World\!'

在 ! 之前需要 \ 的原因是因为 vim 对 ! a 的参数中的字符!命令。如果您运行的命令不包含任何 !字符,则无需转义。

如果您想深入了解此内容,可以键入

:help :!

正如@FDinoff 所说,在 vim 中。

【讨论】:

  • 另外请务必查看:h :!
【解决方案2】:

如果您希望用户看到输出(或与命令交互):! 是正确的命令。对于静默执行(我想您的chmod 会需要),最好使用system()。尤其是在 Windows 上,这可以避免弹出必须手动关闭的命令提示符。

:call system('chmod +x ' . shellescape(fname))

【讨论】:

  • 不错的解决方案。有什么方法可以获取 call system() 的输出并将其手动显示给用户?例如通过 Vim 中的 echo() 命令。
  • 返回输出,退出状态为v:shell_error:help system() 是你的朋友 :-)
【解决方案3】:

我的首选方法是推送Ctrl-z 或运行:sus 来暂停vim 进程,然后你可以在shell 中做任何你想做的事情。

完成后,运行 fg(前台)以恢复您的 vim 会话。

更多信息可以在here找到。

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多