pfnuesel..
6
^M并且^[是控制字符.正如您已经正确指出的那样,它们是一个字符,而不是两个字符,您可以通过按下Ctrl+V然后Ctrl+[获取来在vim中键入它们^[.
因此,您正在寻找的替换命令看起来像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.