代码之家  ›  专栏  ›  技术社区  ›  Jonathan Leffler

vim中的什么设置可以阻止smartindent拒绝在shell脚本中缩进注释?

  •  25
  • Jonathan Leffler  · 技术社区  · 16 年前

    我最近开始使用vim 7(以前的vim 6)和 smartindent

    然而,有一种疯狂的行为。编辑shell脚本时,我尝试在当前缩进级别创建注释,但是 智能缩进 >>

    (我也不喜欢 智能缩进 then if .)

    智能缩进 编辑shell脚本时(其余部分保持打开状态)。另一个选项是关于如何查找的控制脚本的指南 智能缩进 未设置。

    我看到了一个模糊相关的问题“ (PHP and) annoying vim unindent rules “这并没有给我一个直接的答案,尽管也许 cindent

    7 回复  |  直到 7 年前
        1
  •  11
  •   Community CDub    7 年前

    查找缩进文件(例如我的系统上的/usr/share/vim/vim71/indent/sh.vim)

    setlocal indentkeys-=:,0#
    

    也许您可以在.vimrc中修复此问题,或者手动加载自定义缩进文件。

    编辑:它看起来比我想象的要复杂,但可能在缩进文件中有一些特定的设置,需要修复。

    第二次编辑:看起来我完全错了,请查看:

    Restoring indent after typing hash

    howto-configure-vim-to-not-put-comments-at-the-beginning-of-lines-while-editing

        2
  •  3
  •   Jonathan Leffler    16 年前

    嗯,在探索了一些选项之后,包括使用 :set cindent “而不是” :set smartindent :set autoindent 也许有一些方法可以让这些东西完全按照我想要的那样工作,但它已经够凌乱、够烦琐了,我不会被打扰。我和你一起工作很好 autoindent 在过去的20多年里,我们从 smartindent 我认为它的不当行为超过了它。

    谢谢你,胡安,谢谢你的帮助。信不信由你,这确实很有帮助。

    不过,在继续研究这个问题的过程中,我还发现了一些其他简洁的命令:

    >i}
    >a}
    

    i '版本缩进正文而不是右大括号(我喜欢的样式),并且' a '版本将右大括号缩进到(工作时需要的版本)。

    此外,还可以将限定符应用于 %

    :make %:r.o
    

    这将在当前文件名的“根”上运行make(即 %:r “)然后是” .o 或者,换句话说,如果我正在编辑 somefile.c make somefile.o .

        3
  •  3
  •   babar babar    16 年前

    在.vimrc中添加下面的行

    文件类型缩进

    (它将根据文件类型设置正确的缩进模式)

        4
  •  3
  •   nevinera    15 年前

    我还没有用sh测试过这一点,但是当我切换时,perl突然开始正常运行。

    旁注:Juan的重定向“在输入hash后恢复缩进”不是一个好的解决方案——虽然它确实在一种情况下纠正了问题(输入代码),但它并没有改变编辑器的想法 应该

        5
  •  2
  •   Russell Silva    15 年前

    :inoremap#X^H#

    很好。这是VIM文档在“帮助smartindent”中建议的答案。请注意,^H是使用CTRL-V CTRL-H输入的。下面是文档中的相关部分。

        When typing '#' as the first character in a new line, the indent for
        that line is removed, the '#' is put in the first column.  The indent
        is restored for the next line.  If you don't want this, use this
        mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
        When using the ">>" command, lines starting with '#' are not shifted
        right.
    
        6
  •  1
  •   PolyThinker    16 年前

    我的.vimrc中有以下几行代码,我没有观察到问题。

    set smartindent
    inoremap # X^H#
    

    自动缩进 这两行之后,但似乎没有效果。

        7
  •  1
  •   pixelbeat    16 年前

    是的 非常 烦人的smartindent实际上只适用于类似C的语言。 http://www.pixelbeat.org/settings/.vimrc

    推荐文章