Vim硬或软选项卡取决于文件中使用的内容

时间:2014-06-26 06:46:40

标签: vim vim-plugin

是否有一个vim命令或插件将跨越我打开的源文件,并将我的标签设置调整为文件中使用的任何内容。

我目前正在开发一个多样化的代码库,一些源文件使用硬标签,另外四个空格软标签,以及其他2个空间软标签。如果我忘记更改,我的硬标签可能会导致不同编辑器中出现丑陋的空白,如果我在编辑软标签文件时忘记更改它。

我希望每次打开缓冲区时都不记得检查文件中使用的任何约定,并相应地调整我的首选项。

4 个答案:

答案 0 :(得分:2)

我使用yaifa取得了巨大成功。它几乎是一个“安装即忘记”的插件,可以完成它所说的功能而不会妨碍它。在我工作的凌乱环境中工作是非常可怕的,直到我找到了宝石。

答案 1 :(得分:0)

如果大多数工作人员使用Vim(和/或Emacs),您可以对文件本身中的缩进设置进行编码,请参阅:help modeline(至少Emacs有类似的东西)。当然,就共同环境达成一致并逐渐迁移到它会更好: - )

如果你不能这样做或者事情太乱,你需要一个插件来动态调整缩进设置。我的IndentConsistencyCop plugin检查缓冲区的缩进是否一致并符合选项卡设置,然后提供将设置调整为检测到的设置。 (插件页面包含指向其他插件的链接。)

答案 2 :(得分:0)

我已经使用了以下功能(在网络上找到了它)并取得了很好的成功。只需将其放入.vimrc

即可
function Kees_settabs()
    if len(filter(getbufline(winbufnr(0), 1, "$"), 'v:val =~ "^\\t"')) > len(filter(getbufline(winbufnr(0), 1, "$"), 'v:val =~ "^ "'))
        set noet
    else
        set et
    endif
endfunction
autocmd BufReadPost * call Kees_settabs()

答案 3 :(得分:0)

多产的Tim Pope看看sleuth

  

此插件会根据当前文件启发式地自动调整“shiftwidth”和“expandtab”,或者,在当前文件是新的,空白或其他不足的情况下,通过查看当前文件中相同类型的其他文件来自动调整和父目录。代替调整'softtabstop','smarttab'已启用。

     

我写这篇是因为我想要一些全自动的东西。我的目标是通过安装此插件,您可以从vimrc中删除所有与缩进相关的配置。

     

如果您的文件始终使用硬标签缩进,则“shiftwidth”将设置为“tabstop”。否则,强制执行8的“tabstop”。

相关问题