如何在Vim脚本中执行外部命令?

时间:2013-07-03 22:26:12

标签: vim vim-plugin

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

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:6)

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

:! echo 'Hello, World\!'

在vim中。或者,在vim脚本中,您可以只使用

! echo 'Hello, World\!'

你之前需要的原因是什么!是因为vim执行特殊处理!参数中的字符!命令。如果您运行的命令不包含任何命令!角色,那么你不需要逃避它。

如果您想深入了解这一点,可以输入

:help :!
正如@FDinoff所说,在vim中。

答案 2 :(得分:2)

我首选的方法是推送Ctrl-z或运行:sus暂停vim进程,然后就可以在shell中执行任何操作。

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

可以找到更多信息here