Sublime如何配置显示空格、制表符、回车换行符

White space characters include carriage returns, line feeds, spaces, and tabs.
CR: Carriage Returns, 回车,常常标记为\r
LF: Line Feeds,换行,常常标记为\n
Spaces,空格
Tabs,制表符

DOS及Windows下:CR LF(\r\n)回车换行表示切换至新的一行
Linux及Unix下:LF(\n)换行表示切换至新的一行
Mac OS下:CR(\r)回车符表示切换至下一行

跨系统时由于系统间差异导致显示问题:Windows打开Linux下的文件时,所有行合并为一行;Linux打开Windows下的文件后,出现很多^M符号。

Linux下删除^M的方法:cat test.txt | tr -d "\r" > newTest.txt
Linux也有实现与Windows系统文件格式互换的命令:unix2dos, dos2unix
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式

显示空格及制表符

Sublime Text默认为选择部分文字显示空格及制表符,这是由于默认配置中"draw_white_space": "selection"的作用,如果要修改为一直显示空格及制表符,则修改为"draw_white_space": "all"即可。

这是Sublime原生支持的方法,详见这里的讨论:http://stackoverflow.com/questions/10153998/sublime-text-2-view-whitespace-characters

但是,上述方式无法显示行末的回车CR、换行LF符号,虽然参考[1]和[2]中有关于这一问题的讨论,但仍完美解决方案。

回车换行符的解决方案

Sublime + RawLineEdit

  1. 首先安装Packages Control
  2. 安装插件RawLineEdit
  3. 修改Settings - User,添加如下配置信息:

更多详细请参考:https://github.com/facelessuser/RawLineEdit

1
2
3
4
5
6
7
8
9
10
11
12
13
// Use a glyph for a visual representation  
// for newlines
"use_newline_glyph": true,

// Use the raw line edit theme to allow
// a view that highlights only new lines
// and carriage returns for easy visualization.
// (Colors customizable via your color scheme file)
"use_raw_line_edit_theme": true,

// View only mode: pops up a output panel showing line endings.
// No editing possible.
"view_only": false

4.通过Tools - Command Palette (Ctrl + Shift + P),键入RawLineEdit后回车确定切换至RawLineEdit视图,再次键入RawLineEdit切换至普通视图。
注意:参数"view_only": false的设置会使得在RawLineEdit视图下时无法编辑,必须再次进行RawLineEdit Toggle切换至普通视图进行编辑。

普通视图与RawLineEdit视图下的对比:

总结

目前在官网论坛也有过一些关于要求Sublime支持显示CR、LF功能的帖子,但目前为止Sublime Text 3059无法直接显示行末的CR、LF符号。
虽然有插件的方案,在一定程度上解决回车CR及换行LF符号的显示,但体验一般,额外操作带来不少困扰。

关注Sublime,如果有可行方案,会更新此文。

参考

  1. Display line endings, line by line, like in Scintilla
  2. Is it possible to Show all characters (spaces, TABs, CR, LF, etc.)
  3. Edit/View Raw Line Endings (is this wanted?)
  4. RawLineEdit At GitHub
  5. Docs »Customizing Sublime Text »Settings
  6. 换行符在Linux和Windows下的区别以及unix2dos, dos2unix