0

我正在尝试使用“exe”在 VIM 中运行 shell 命令。我有一个包含系统调用结果的变量(路径名)

tempName=system('run.sh') "tempname is actually equal to "/path/to/file/tempfile.do" 

我想在另一个 shell 命令中使用变量 tempName:

exe '! cat '.tempName.' >> anotherFile'

所以应该运行的是:

cat /path/to/file/tempFile.do >> anotherFile

但由于某种原因,“>> anotherFile”部分被切断,只有

cat /path/to/file/tempFile.do

在跑。我尝试转义“>>”字符和“。” 这没有用。有任何想法吗?

4

2 回答 2

1

这对我有用。注意后面的空格cat

:exe '! cat '.tempName.' >> anotherFile'
于 2013-09-26T19:53:07.983 回答
1

当您按字面输入时,它是否有效?

:execute '!cat /path/to/file/tempFile.do >> anotherFile'

如果是这样,那么问题在于system()捕获包括换行符的输出。

一种解决方案是使用以下方法去除最后的换行符substitute()

:execute '!cat '.substitute(tempName, '\n$', '', '').' >> anotherFile'
于 2013-09-26T20:37:29.430 回答