Shell命令中的不需要的换行符(来自VIM)

时间:2013-09-26 19:42:40

标签: linux bash vim

我正在尝试使用“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

正在运行。我试图逃避“>>”字符和“。”这没用。有任何想法吗?

2 个答案:

答案 0 :(得分:1)

这对我有用。请注意cat

之后的空格
:exe '! cat '.tempName.' >> anotherFile'

答案 1 :(得分:1)

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

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

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

一种解决方案是使用substitute()剥离最终换行符:

:execute '!cat '.substitute(tempName, '\n$', '', '').' >> anotherFile'