即使未添加任何标志,如何始终显示“标志”列?


32

我刚刚为Vim 添加了Git Gutter插件,该插件显示了根据添加/修改/删除的行git diff。它使用Sign Column来在每行旁边显示字符。

目前,该列出现在保存状态,这非常麻烦。我希望该列始终显示,即使为空。

如何使“指示柱”始终可见?

Answers:


40

从Vim 7.4.2201开始,您可以执行以下操作:

:set signcolumn=yes

Cp。:help 'signcolumn'。对于较旧的Vim版本,您必须定义一个虚拟符号并将其放置在当前缓冲区中:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')

14
为了使它在您打开的每个新缓冲区中都起作用,请将两者autocmd BufEnter * sign define dummyautocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')vimrc 都放入。
肯特,2013年

似乎过时了,set signcolumn=yes没有恶作剧的把戏也是如此。
cprn

1
@cprn:你是对的;我已将其添加到答案中。谢谢!
Ingo Karkat

同样,也谢谢您,然后从底部删除我的答案。干杯!
cprn

22

特别是对于vim-gitgutter,您还可以在以下代码中设置以下变量~/.vimrc

let g:gitgutter_sign_column_always = 1

更新

插件现在将发出警告以删除上面的行,而是使用:

set signcolumn="yes"

谢谢,此问题发布后,必须添加该选项。有用的虽然知道。
jordelver 2014年

1
实际上,似乎添加了该承诺的提交是在2013年3月14日进行的-恰好在您提出问题的两周后!
wjv

最近,我在GitGutter源中进行其他操作时发现,设置此变量将强制以与该问题的可接受答案完全相同的方式显示符号列-通过设置虚拟符号。
wjv 2016年

5
顺便说一句,对我来说set signcolumn=yes 没有引号
tam5 '17

6

虽然定义标志并将其放置的小舞蹈可以正常工作,但对我而言,更优雅的替代方法是:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

并且如果某些文件类型不应该包含该列:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no

处理“ *”的BufReadPost自动命令时检测到错误:E518:未知选项:signcolumn = yes
brandones

您需要较新版本的vim,@ brandonjones。我不确定何时signcolumn添加,但是在7.2中不存在,而在8.0中存在。我不记得在7.4中看到过它,但它可能在那里。它在Vim和Neovim的当前版本中都存在。
Jim Stewart
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.