【问题标题】:vim: autoindent not workingvim:自动缩进不起作用
【发布时间】:2011-04-25 17:07:27
【问题描述】:

我的自动缩进不起作用,有什么诊断测试可以解决吗?

我的 ":set" 是:

:设置 --- 选项 --- cindent laststatus=2 滚动=17
tabstop=4 窗口=36
文件类型=cpp 编号
smartindent ttyfast
helplang=zh 粘贴
语法=cpp ttmouse=xterm2
退格=缩进,eol,开始
文件编码=utf-8
文件编码=ucs-bom,utf-8,默认,latin1 printoptions=纸张:信
runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/af 之三,/var/lib/vim/addons/after,~/.vim/after 后缀=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.出,.toc

【问题讨论】:

  • 我注意到我必须手动输入 :set autoindent 才能工作。我想知道它为什么没有自动包含在我的 .vimrc 中
  • 这个问题没有公认的答案吗?
  • 注意:自动缩进在粘贴模式下不起作用,试试set nopaste

标签: vim vi


【解决方案1】:

尝试:

:set ai

或:

:set autoindent

了解有关自动缩进的更多信息:

:h ai

否则,它可能与文件类型检测有关。

【讨论】:

  • 这对我有用 .tex 文件。也许结合@benoit的答案(起初没有用)
【解决方案2】:

我在indentexpr 中有一个陈旧的函数,它在更改文件类型后仍然存在。这最终为我解决了这个问题:

:set indentexpr=

【讨论】:

    【解决方案3】:

    如果其他人遇到同样的问题,我有一个类似的问题,上面没有解决。 对我来说错的是标签解释。这是使它工作的设置:

    set expandtab
    set tabstop=2
    set shiftwidth=2
    set autoindent
    set smartindent
    

    为了检查缩进是否正确,我在 vimrc 文件中添加了以下内容:

    " helper for indent mistake
    set list listchars=tab:»·,trail:·
    

    如果我的缩进错误,它会显示“»”而不是常规的“·”。非常便利。 希望对您有所帮助。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,这些设置解决了它。

      filetype on
      filetype plugin on
      filetype indent on
      

      【讨论】:

      • 我为此添加了一行到我的 ~/.vimrc:filetype plugin indent on
      【解决方案5】:

      您可能应该关闭smartindent 并改用:filetype indent oncindent(似乎也已设置)。

      【讨论】:

        【解决方案6】:

        这是一种测试您的配置是否正确的方法,然后将您的配置持久化,以便 Vim 始终如此运行。 This font 表示应按字面输入的文本,但<CR> 表示按“Enter”或“Return”键。

        • 使用新的主目录创建一个新的系统用户。
        • 启动 Vim。应该设置所有设置,但默认情况下它们随 Vim 提供。
        • 打开一个文件,比如 test.txt。
        • 确保启用自动缩进 (:set ai?<CR>)
        • 证明自动缩进不会发生:
          • 键入一两个空格,然后按 Enter。
          • 当光标前进到下一行时,它应该返回到第 1 列,即最左侧的列。
        • 开启自动缩进 (:set ai<CR>)
        • 确保启用自动缩进 (:set ai?<CR>)
        • 证明自动缩进发生:
          • 键入一两个空格,然后按 Enter。
          • 当光标前进到下一行时,它应该仍然在同一列中。
        • 使用:mkvimrc<CR> 保持自动缩进。

        希望对您有所帮助!以下是其他一些注意事项:

        • 这些说明可能特定于从左到右的语言环境。
        • Here's my vimrc

        【讨论】:

          【解决方案7】:

          “设置‘粘贴’选项时,‘自动缩进’选项被重置”。因此,请尝试从您的设置中删除“粘贴” (vim-options)。

          【讨论】:

            【解决方案8】:

            我遇到了同样的问题,我尝试了很多命令,都失败了。
            最后,我使用以下命令,它可以工作:
            autocmd VimEnter * set autoindent
            这不是一个优雅的方法,但它确实有效。

            【讨论】:

              【解决方案9】:

              :set smartindent? 显示:nosmartindent

              然后用:set smartindent 激活它为我解决了问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-01-01
                • 2012-07-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-17
                • 2014-07-28
                相关资源
                最近更新 更多