是否可以在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输出中的行没有条形,造成了视觉上的空白)#2 楼
我使用的另一个选项并非您所要的,但它实现了使同一列中的内容更容易查看的相同目的,是在您的vimrc
中设置以下内容: set cursorcolumn
set cursorline
这是一个折衷方案,您必须将光标移动到要查看的列,但视觉混乱会减少。通常,当我关心缩进级别时,无论如何我都会保持光标位置。如果不使用大括号,我的方法在python之类的语言中也不是笨拙。
评论
Python vi用户将死于此功能
– Shuva
18-2-24在0:48
#3 楼
为了完整起见,还提供了“缩进指南”插件,该插件通过交替空白的颜色来显示缩进级别。它需要版本7.2或更高版本。由于它使用tabstop
和shiftwidth
变量,因此它可能会立即适用于您的缩进设置。 一旦安装了插件,就可以简单地使用
: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
评论
实际上,我使用空格而不是制表符来缩进。我已经更新了我的问题。
–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