Vim 在功能性代码行之后以红色突出显示所有内容,使得以下代码行不起作用
Vim highlights everything in red after a functional line of code making the following lines of code not work
我有一个制表符分隔的文本文件,例如test.txt
包含 ^M 个字符且末尾缺少换行符:
Samples Factor
1 2
使用 tr
和线程 https://unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-of-a-file ,我能够处理这个 table.
我的问题是在我的脚本中
tr '\r' '\n' < test.txt | sed -e '$a\' > test_temp
mv test_temp test.txt
使下面的所有内容出现在 vim
中的 "red" 中,而我紧随其后的代码不会 运行。如果我删除 sed -e '$a\'
部分,一切正常。
你对此有什么解释吗?
感谢您的帮助。
'$a\' 中的反斜杠阻止最后一个引号结束字符串,因此它会占用脚本的其余部分。你想用那个 sed 命令做什么?
Vim 似乎错误地将反斜杠视为特殊字符,即使反斜杠在单引号内没有任何作用。 :set syntax
显示什么?我的 Vim 使用 syntax=sh
正确地为所有内容着色,所以也许您的文件没有将您的文件视为 shell 脚本。 (有趣的是,您可能会注意到 Stack Overflow 的语法高亮器也会出错。)
如果是这样,请尝试在顶部添加一个 shebang 行,例如 #!/bin/bash
。
无论如何,在末尾添加新行的一种更简单的方法是简单地回显一个。它摆脱了 sed
扫描整个输入流以查找 EOF 的低效率。
{ tr '\r' '\n' < test.txt; echo; } > test_tmp
我有一个制表符分隔的文本文件,例如test.txt
包含 ^M 个字符且末尾缺少换行符:
Samples Factor
1 2
使用 tr
和线程 https://unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-of-a-file ,我能够处理这个 table.
我的问题是在我的脚本中
tr '\r' '\n' < test.txt | sed -e '$a\' > test_temp
mv test_temp test.txt
使下面的所有内容出现在 vim
中的 "red" 中,而我紧随其后的代码不会 运行。如果我删除 sed -e '$a\'
部分,一切正常。
你对此有什么解释吗? 感谢您的帮助。
'$a\' 中的反斜杠阻止最后一个引号结束字符串,因此它会占用脚本的其余部分。你想用那个 sed 命令做什么?
Vim 似乎错误地将反斜杠视为特殊字符,即使反斜杠在单引号内没有任何作用。 :set syntax
显示什么?我的 Vim 使用 syntax=sh
正确地为所有内容着色,所以也许您的文件没有将您的文件视为 shell 脚本。 (有趣的是,您可能会注意到 Stack Overflow 的语法高亮器也会出错。)
如果是这样,请尝试在顶部添加一个 shebang 行,例如 #!/bin/bash
。
无论如何,在末尾添加新行的一种更简单的方法是简单地回显一个。它摆脱了 sed
扫描整个输入流以查找 EOF 的低效率。
{ tr '\r' '\n' < test.txt; echo; } > test_tmp