编辑文本文件时,Sublime 3中的默认字符计数功能将换行计为一个字符,无论该行是以LF还是CR结尾,LF。我找不到一个设置来为我提供CR,LF行结尾的文本文件的正确计数。
我已尝试安装WordCount软件包,但它有同样的问题。设置首选项
char_ignore_whitespace : true
不会改变行为。
有人可能认为Sublime的行为不正确,因为(对于我正在使用的文件)换行符构成两个字符,而不是一个。
我希望计数在字符数中包含CR(即换行符是2个字符)的原因是我可以使用Sublime来帮助调试使用ftell / fseek的一些代码。就目前而言,我必须继续将行数添加到字符数中,以便在文件中获得正确的字节位置(当选择从文件开头到感兴趣点的所有文本时)。
我缺少一个设置吗?是否有可以使用的不同包?
编辑:我注意到Notepad ++正确报告了这些文件的字符数,但我更喜欢使用Sublime:)
EDIT2:我发现这里的一些代码(Is it possible to show the exact position in Sublime Text 2?)在Sublime 3中有效,但也错误地计算了两个字符的换行符。
答案 0 :(得分:1)
我修改了上面链接中的代码,粗略地补偿了缺失的行尾计数。下面的代码只是将行数(从零开始)添加到字符位置,并将其显示为替代位置(如果unix样式文件打开,在这种情况下不需要补偿)。
这无疑是粗糙的,并且不够智能,无法确定文件结尾的行类型。也许别人有更好的主意?
import sublime, sublime_plugin
class PositionListener(sublime_plugin.EventListener):
def on_selection_modified(self,view):
text = "Position: "
sels = view.sel()
for s in sels:
if s.empty():
row, col = view.rowcol(s.begin())
text += str(s.begin())
text += " [" + str(s.begin() + row) + "]"
else:
text += str(s.begin()) + "-" + str(s.end())
row, col = view.rowcol(s.begin())
text += " [" + str(s.begin() + row) + "-"
row, col = view.rowcol(s.end())
text += str(s.end() + row) + "]"
view.set_status('exact_pos', text)