禁用vim中的所有自动缩进

禁用vim中的所有自动缩进,vim,indentation,file-type,Vim,Indentation,File Type,在TeX中,vim通常会把我的压痕拧紧。主要是当我在一个显示的等式中,我认为应该是这样的: \[ x=\frac{y}{z} \] 其中,x前面的空白是一个选项卡 当我开始键入方程式时,我首先键入\[和\]标记,然后在它们之间返回,键入选项卡,然后键入方程式的其余部分 Vim不会做错任何事情,直到我不得不使用包含花括号的东西(例如\frac{})。当我键入结束符时}vim会自动将整行的缩进移到左侧,这将撤消我键入的选项卡 这是非常可怕的,我如何禁用它 我的.vimrc包含: "in

在TeX中,vim通常会把我的压痕拧紧。主要是当我在一个显示的等式中,我认为应该是这样的:

\[
    x=\frac{y}{z}  
\]
其中,
x
前面的空白是一个选项卡

当我开始键入方程式时,我首先键入
\[
\]
标记,然后在它们之间返回,键入选项卡,然后键入方程式的其余部分

Vim不会做错任何事情,直到我不得不使用包含花括号的东西(例如
\frac{}
)。当我键入结束符时}vim会自动将整行的缩进移到左侧,这将撤消我键入的选项卡

这是非常可怕的,我如何禁用它

我的
.vimrc
包含:

"indentation
set smartindent
set autoindent
set tabstop=5
set shiftwidth=5
filetype indent on

删除行
设置自动缩进
设置智能缩进
,以删除所有vim自动缩进。

您的问题中似乎有一些术语混合。在vim中,术语“自动缩进”指的是一种特殊的缩进,它仅遵循前一行的缩进级别(有时非常方便)。要删除它,请手动设置noautoindent,或将其写入_vimrc


还有另外两种自动缩进,
cindent
smartindent
。同样,如果要禁用它们,请使用
set nocindent
set nosmartident

如果您查看帮助(
help autoindent
,…),它们都得到了很好的解释。您喜欢(或不喜欢)哪一个主要取决于您的编程风格和习惯。所以,试一下,看看你最喜欢哪一个


不幸的是,我不再经常使用LaTeX了,所以我不熟悉它的内部文件类型缩进规则。

我只是花了几个小时来处理javascript的缩进问题,我得出的结论是不要从vimrc中删除
文件类型缩进

此设置为多种文件类型提供最佳智能缩进。如果这样做的结果不好,那么很可能存在配置问题

文件特定缩进设置 所以,如果您像我一样,可能在vimrc中有
文件类型缩进,但不知道它在做什么

此设置所做的只是告诉vim查找具有文件类型特定缩进规则的文件。它看起来有几个地方,但你可能只对其中两个感兴趣

  • $VIMRUNTIME/indent/
  • ~/.vimrc/after/indent/
  • 第一个位置保存vim附带的默认缩进规则。如果要在新的vim安装上设置
    文件类型缩进,那么所有智能缩进都将来自这里。例如,在中打开名为
    index.html
    的文件时,将从
    $VIMRUNTIME/indent/html.vim
    获取规则

    根据我的经验,这些默认规则非常好,但它们可能会被其他设置搞砸

    第二个位置(
    之后的
    目录)允许您添加将取代第一个位置的设置的设置。这很好,因为您不必编辑默认文件来自定义它们

    缩进的味道 正如您所看到的,有几个不同的缩进选项,但它们并不能很好地结合在一起。从

    自动缩进 “自动缩进”只是在开始新行时从上一行复制缩进。它对于结构化文本文件很有用,或者当您想要在不受Vim干扰的情况下手动控制大部分缩进时也很有用“自动缩进”不会干扰其他缩进设置,一些基于文件类型的缩进脚本甚至会自动启用它

    我在vimrc中使用
    文件类型缩进和
    设置自动缩进,因为它们可以很好地协同工作。我没有安排其他的

    smartindent&cindent “smartindent”在某些情况下会自动插入一个额外级别的缩进,适用于类似C的文件cindent’更具可定制性,但在语法方面也更严格。 “smartindent”和“cindent”可能会干扰基于文件类型的缩进,因此不应与之结合使用

    当涉及到C和C++时,基于文件类型的缩进会自动设置“CunTeNT”,因此,不必手动为这些文件设置“CunTand”。在这些情况下,“cinwords”、“cinkeys”和“cinoptions”选项仍然适用

    通常,只有当您对基于文件类型的缩进工作方式不满意时,才应手动设置“smartindent”或“cindent”

    缩进 运行
    (vimfolder)\indent\\(indentscripts)
    中的文件类型缩进脚本。在for filetype中提到了它,以及刚才提到的其他文件(也是我遇到问题的原因):

    重置“autoindent”、“cindent”、“smartindent”和/或“indentexpr”以禁用打开文件中的缩进

    故障排除 有一个机会,一些流氓插件正在改变你的缩进设置,这就是为什么你会得到很差的结果。幸运的是,
    verbose
    将告诉您哪一个文件是最后一个更改该选项的文件

    :verbose set autoindent?
    :verbose set cindent?
    :verbose set smartindent?
    :verbose set indentexpr?
    
    您可能会得到如下结果:

    indentexpr=SomeMessedUpValue
    Last set from ~/.vim/bundle/some_plugin/indent/plaintex.vim
    
    如果发生这种情况,您可以移动该文件,关闭并打开vim,然后查看它是否解决了您的问题

    关闭TeX的缩进设置 也许默认设置不适合您,您希望禁用TeX的缩进设置,但不使用其他所有文件类型。通过在
    after
    目录下的文件中将这些值设置为默认值,您可以轻松地执行此操作

    我对Tex或LaTex了解不多,但当我创建了一个扩展名为
    .Tex
    的文件并运行
    :filetype
    时,它的文件类型为
    plaintex
    。假设这是正确的,您会希望创建一个文件,
    ~/.vim/after/indent/plaintex.vimset autoindent&
    set cindent&
    set smartindent&
    set indentexpr&
    
    let g:tex_indent_brace=0
    
    :verbose set indentkeys?