vim - 当使用 :redir 重定向外部命令的输出时,Vim 将 `\n` 转换为 `\r\n`
问题描述
使用 将命令的输出重定向到变量:redir
时,似乎全部\n
都替换为\r\n
。
例如,运行时
redir => m
silent !echo -e "Hallo\nCiao"
redir END
put =m
然后插入缓冲区的新行以 结尾^M
,表示回车 ( \r
) 字符。
但是,这似乎只在执行外部命令时发生。如果echo
我们使用 Vim 的内部echo
命令而不是 shell 提供的命令,即
redir => m
" Note the missing `!` in front of `echo`
silent echo "Hallo\nCiao"
redir END
put =m
那么这些行不以 结尾^M
,即不插入回车。
有谁知道我可以如何防止 Vim 转换\n
为\r\n
? (我在 Linux 上。)
解决方案
代替 !cmd
,您可以使用system(cmd)
which 将 shell 命令的结果作为字符串返回:
redir => m
echo system('echo -e "Hallo\nCiao"')[:-2]
redir END
删除最后一个[:-2]
EOL。
推荐阅读
- php - 按给定的顺序突出显示多个搜索词
- elasticsearch - ElasticSearch 将关键字字段转换为文本+关键字
- javascript - 试图弄清楚如何通过删除本地存储中的所有行来删除表中的行
- next.js - 指定的模块无法找到。\\?\d:\next.js\firstapp\node_modules\@next\swc-win32-x64-msvc\next-swc.win32-x64-msvc.node
- r - 如何摆脱矩阵顶部的 dim1、dim2、...?
- ibm-midrange - RPGLE/free - 动态指定数据区库
- sql - 如何确定 BigQuery 中的 GROUPING 值是否为 NULL?
- openstack - OpenStack monasca 空结果
- javascript - http请求后的Process.exit()
- c# - 如何使用 takeown 或 icacls 在 c# 中获取文件的所有权?