在Sublime Text 2中,您可以得到缩进所在的垂直导向,如下所示: >

是否可以在vim中显示类似的行?顺便说一下,我的缩进是2个空格。

:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab

#1 楼

统一答案:

如果您使用的是标签页

我会尝试使用列表字符:

:set listchars=tab:\|\ 
:set list


注意:在上面的最后一个\之后有一个空格。

此方法很好,因为它使用Vim的内置支持来显示这种东西。 />
|       if (1) {
|       |       func();
|       }




但是,这不适用于前导空间。正如@Josh Petrie指出的那样,有一个补丁可以用于空格,但是您必须重新编译Vim,这超出了此答案的范围。并且不要介意使用插件

Vaibhav Sagar指出插件indentLine可以执行此功能。无需进一步输入即可工作。如果您不介意ASCII条,则无需对字体做任何事情。设置缩进设置并运行后,示例输出的示例输出:IndentLinesReset
使用该版本的“隐藏”功能。它不是实际隐藏文本,而是用视图中的条代替文本,而不是实际缓冲区。结果是您看到了条形图,但是它们没有保存到文件中(因为它们实际上是空格)。码。当打开“块”时,它们不会将缩进线放置在缩进级别(升华似乎起作用),而是根据您的缩进设置以规则的间隔放置行。此外,它仅在实际有空间的行上显示条形(这就是为什么在if下的vim输出中的行没有条形,造成了视觉上的空白)

评论


实际上,我使用空格而不是制表符来缩进。我已经更新了我的问题。

–aharris88
2015年2月9日在22:23

有一个补丁程序可以使listchar用于非跟踪空间,您可以在邮件列表中进行挖掘。但是,它尚未被接受到官方发行版中:(

–user72
2015年2月9日在23:52



更新了答案,以包括Vaibhav Sagar和Josh Petrie的信息。我试用了提到的插件Vaibhav,并在编辑后的答案中显示了结果。我想我将自己开始使用此插件。这并不理想,但总体来说似乎效果很好。

– John O'M。
2015年2月10日,下午2:11

是否可以像在升华中一样使参考线出现在空白行上?

–詹姆斯
2015年2月10日在22:53

indentLine适用于python,json,viml,c,c ++等。但是不幸的是,它不适用于vim-javascript,因此我改用vim-indent-guides。

–萨桑
16年9月1日于17:32

#2 楼

我使用的另一个选项并非您所要的,但它实现了使同一列中的内容更容易查看的相同目的,是在您的vimrc中设置以下内容:
set cursorcolumn
set cursorline




这是一个折衷方案,您必须将光标移动到要查看的列,但视觉混乱会减少。通常,当我关心缩进级别时,无论如何我都会保持光标位置。如果不使用大括号,我的方法在python之类的语言中也不是笨拙。

评论


Python vi用户将死于此功能

– Shuva
18-2-24在0:48



#3 楼

为了完整起见,还提供了“缩进指南”插件,该插件通过交替空白的颜色来显示缩进级别。它需要版本7.2或更高版本。由于它使用tabstopshiftwidth变量,因此它可能会立即适用于您的缩进设置。



一旦安装了插件,就可以简单地使用:IndentGuidesEnable:IndentGuidesDisable。如果您使用的是终端Vim,请注意,根据手册,目前终端Vim仅具有基本支持。这意味着不会根据您的颜色方案自动计算颜色。而是根据背景设置为深色还是浅色使用一些预设颜色。


为了更改屏幕快照指南的颜色,我使用了以下

let g:indent_guides_auto_colors=0


,因此在交换缓冲区时不会重新计算颜色,然后使用

hi IndentGuidesEven ctermbg=238
hi IndentGuidesOdd ctermbg=236


提出的其他解决方案,仅显示行上有空格的缩进参考线。

评论


将let g:indent_guides_enable_on_vim_startup = 1添加到我的.vimrc中以在启动时启用它。

– inye
17年4月6日在13:24

#4 楼

我发现indentLine插件是最好的。但是,您确实需要带有适当符号的字体,我发现Windows上的Consolas和Mac OS X上的Menlo很好用。正如上面的统一答案中指出的那样,它的工作原理是(ab)使用vim的conceal功能将竖线(使用的字体)放在正确的位置。我对这种解决方案感到非常满意,但是它的缺点是我的竖线是盒形图形字形的一部分,并且它们像其他编辑器一样居中对齐而不是向左对齐。我已经习惯了,但是可以通过手动修补字体或使用Fantasque Sans Mono之类的字体来解决(请注意链接的github repo中的屏幕截图如何使用indentLine)。

评论


请查看我们对仅插件链接答案的讨论,并考虑使用更多信息来更新您的答案。

–user72
2015年2月10日,0:26

我的错误,我已经更新了答案。

–Vaibhav Sagar
2015年2月10日,9:52

垂直跳线是哪一个字形?可以贴在这里吗?谢谢。

– Timtro
18年3月7日在16:02

#5 楼

indentLine插件在非小文件上通常会比较慢,单击Enter时可以观察到它,因为它滞后了大约一秒钟。 ,也可以在视觉上区分制表符缩进和空格缩进。

#6 楼

请尝试最新版本的Goneovim,而不是当前版本0.4.6。
它不是纯粹的vim,而是neovim gui,它并没有引起太多关注。并且比goneovim插件要好得多。


评论


欢迎来到Vi和Vim!

– D. Ben Knoble♦
20年6月11日,12:47