使用:redir
将命令的输出重定向到变量时,似乎所有\n
都被\r\n
取代了。
例如,运行时
redir => m
silent !echo -e "Hallo\nCiao"
redir END
put =m
然后,插入缓冲区的新行以^M
结尾,表示回车符(\r
)。
但是,这似乎仅在执行外部命令时发生。如果不是由Shell提供的echo
命令,而是使用Vim的内部echo
命令,即
redir => m
" Note the missing `!` in front of `echo`
silent echo "Hallo\nCiao"
redir END
put =m
然后这些行不以^M
结尾,即不插入回车符。
有人知道我如何防止Vim将\n
转换为\r\n
吗? (我在Linux上。)
答案 0 :(得分:1)
您可以使用!cmd
代替system(cmd)
,它以字符串形式返回shell命令的结果:
redir => m
echo system('echo -e "Hallo\nCiao"')[:-2]
redir END
[:-2]
删除了最后一个EOL。