^M
并且^[
是控制字符。正如您已经正确指出的那样,它们是一个字符,而不是两个字符,您可以通过按Ctrl+V
然后在 vim 中键入它们Ctrl+[
来获取^[
.
因此,您要查找的替换命令看起来像s/^[//gc
,与您尝试过的唯一区别是您无法按^[
字面输入。
^M
是一个CR
(回车符)。有一些命令喜欢dos2unix
摆脱这些字符。vim 也有一些内置函数来摆脱它们。
^[
另一方面,是颜色控制字符。在 bash 中你可能会得到一个彩色输出,在 vim 中你只能看到控制字符。
事实上,我在使用时看到了相同的控制字符script
。其他人指出这种行为是意料之中的,我找不到直接的方法来规避它,所以我写了一个包装脚本:
#!/usr/bin/env bash
### Set the variable typescript to the last positional parameter passed to script
typescript="${!#}"
### If the last positional parameter is an option (and starts with "-"),
### set typescript to "typescript" (standard argument of script)
if [[ "${!#:0:1}" == "-" ]]; then
typescript="typescript"
fi
### Invoke /usr/bin/script with all options passed to the wrapper script
/usr/bin/script $@
### Once script has finished, call dos2unix to get rid of control characters
dos2unix "$typescript"
将这些行写入一个名为 script 的文件中,并将其放在$PATH
变量之前的目录中/usr/bin
(在我的情况下是~/bin
)。如果您现在键入type script
,它应该指向您的包装脚本,而不是/usr/bin/script
. 当您现在键入script
时,它将调用包装脚本,该脚本依次调用/usr/bin/script
和dos2unix
。