【问题标题】:how to tell when vim has added EOL character如何判断 vim 何时添加了 EOL 字符
【发布时间】:2013-10-23 15:37:42
【问题描述】:

当文件末尾有换行符时,我如何在 vim 中看到?似乎 vim 总是显示一个,无论它是否真的存在。

例如,打开一个结尾有换行符的文件:

echo "hi" > hi
# confirm that there are 3 characters, because of the extra newline added by echo
wc -c hi 
# open in binary mode to prevent vim from adding its own newline
vim -b hi
:set list

这表明:

hi$

现在相比之下,一个没有换行符的文件:

# prevent echo from adding newline
echo -n "hi" > hi
# confirm that there are only 2 characters now
wc -c hi 
# open in binary mode to prevent vim from adding its own newline
vim -b hi
:set list

仍然显示:

hi$

那么如何在 vim 中查看文件末尾是否真的有换行符?

【问题讨论】:

标签: vim newline eol


【解决方案1】:

Vim 将此信息存储在'endofline' 缓冲区选项中。你可以检查

:setlocal eol?

【讨论】:

  • 非常令人困惑的是它被称为“eol”而不是“eof”。总体而言,vim 的行为令人失望,但确实如此
  • 好吧,缺少的字符是行尾/换行符。认为它仅适用于缓冲区中的最后一行。您发现令人失望的只是 Unix 思维方式中的良好风格。 vi 遗产在这里展示,是的。
【解决方案2】:

在第二种情况下,Vim 在加载文件时显示[noeol]

在加载该文件时,您没有看到[noeol] 输出吗?

【讨论】:

    【解决方案3】:

    Vim 在打开/写入最后一行末尾没有 <EOL> 的文件时会发出警告:

    "filename" [noeol] 4L, 38C
    "filename" [noeol] 6L, 67C written
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多