如何通过vimscript运行shell命令?

19
在我的Vim配置中,我想添加一个映射来运行一个带有特定映射的Shell命令。是否有可能在Vimscript中实现这个功能?
2个回答

20

vim有一个system()函数:

:call system('date')

3

我使用传统的vi进行此操作,因此我认为在vim中也可以使用同样的方法。

我的.exrc文件中有以下内容:

map ^_ !}fmt 71 72^M

当我在vi中按下ctrl-V ctrl-_, 输入的是^_;当我按下ctrl-V ctrl-M时,输入的是^M

在vi中,当我按下ctrl-_时,它将当前行重新格式化为72个字符。


1
在vim中,^_可以使用<C-_>^M可以使用<CR>。不建议在vimrc中使用原始控制码,因为这会破坏期望文本的工具(如cat vimrc | grep fmt)的输出。这也可能使VCS系统将vimrc视为二进制文件,从而有效地禁用了纯粹的vcs diffvcs diff -a的输出,就像对grep一样。在vim中还有nnoremap来处理这种情况(您只需要普通模式和用户映射扩展)。 - ZyX
好的观点。也许在我的(面向vi)回答和您的完善之间,OP会得到一个好的答案。 :-) - ghoti
1
这与问题有什么关系? - Lambart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接