如何在vim的状态栏中显示当前列?


187

我想在状态栏中显示当前列,这在许多其他文本编辑器中很常见。例如,很高兴知道您是否在80栏或以上。

如何在状态栏中显示当前列?


如果要显示光标的当前列,则键入:echo col('。')。
SibiCoder

Answers:


218

尝试设置“统治者”选项是否是您想要的。在我的计算机的右下角显示光标所在的行和列。

:set ruler

编辑评论

在vim的帮助下(命令:help ruler):

如果显示的字符数与文本中的字节数不同(例如,对于TAB或多字节字符),则同时显示文本列(字节数)和屏幕列,并用短划线分隔。

您可以尝试使用rulerformat选项更改它,例如:set rulerformat=%l,%v


是的,有点。但这显示了一个奇怪的值,例如23,62-6823行。我应该如何解释62-68该专栏?
乔纳斯(Jonas)

7
62将制表符视为一个字符,68将制表符视为一个字符
RedGrittyBrick 2011年

1
来自命令':help ruler':“如果显示的字符数与文本中的字节数不同(例如,对于TAB或多字节字符),则文本列(字节数)和屏幕一列,以短划线隔开。” 你可以尝试用'rulerformat'选项,如改变它:设置rulerformat =%L,%V'
Birei

ruler在Vim中的分割窗口中不起作用。
Mihai 2015年

@Jonas不仅如RedGrittyBrick所说的制表符,还包括字符和字节。这在单字符字形具有多字节代码点的UTF-8文件中非常明显。例如,拉丁字母eñe(n上带有波浪号,发音为EN-yea)是一个单字符字形,但占用两个字节来表示代码点(\ xC3B1),三分之一(1/3)是一个单字形字符具有三个字节的代码点(\ xE28593)。
Luv2code

27

请参阅:help statusline以获取许多可用选项。

~/.vimrc在其他一系列指令之间有这个:

set statusline+=col:\ %c,

哪个输出

col: 64

在我的状态栏中。

我没有set ruler


1
这对我不起作用。我可能需要更多设置。
乔纳斯(Jonas)

3
乔纳斯(Jonas),您可能必须使用set laststatus=2中的.vimrc来始终显示状态行。(0->从不显示状态行; 1->仅在至少有两个窗口时显示; 2->始终显示状态行)。
pabuisson 2014年

我使用以下内容在状态栏上以及此之前的内容中提供了空间:set statusline + = \ col:\%c,
David Baucum

18

执行此操作的另一种方法是执行'g Ctrl-G',它以五种方式打印光标的当前位置:列,行,字,字符和字节。(来自http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G


该解决方案具有一些独特之处,可以区分Column和VisibleColumn。不可打印字符显示为两列,但应计为一列。如果是不可打印的字符,则输出如下所示: RealColumn-VisibleColumn, Line, Word, Character and Byte
mxlian

17

或者,将“ ruler”设置为未设置,以提高性能,并在要查看当前列时按CTRL-G


3
按下Ctrl-Anything听起来不像是性能提升。我们正在输入字符。没有人能以足够快的速度飞快地看到这种性能差异的手指和眼睛。
macetw '17

10

我会使用set Ruler贬值,因为我认为它与statusline选项不兼容,例如,如果您将statusline设置为与set Ruler一起显示完整的文件路径

set statusline+=%F

set ruler

然后,它不会在状态栏中显示列号,而只会显示完整的文件路径。但是,如果您将以下内容放入.vimrc

set statusline+=%F\ %l\:%c

它将正确显示所有内容,即

[文件路径/文件名] [行号]:[列号]


2

对于正在寻找此答案但又不习惯使用VIm的其他人,我个人发现的最简单的答案是将此行添加到主目录中.vimrc文件的末尾:

set ruler

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.