vim:autoindent不工作

l7e*_*ecl 17 vi vim

我的自我指导无法正常工作,任何诊断测试都能解决这个问题?

我的":set"是:

:set ---选项--- cindent laststatus = 2 scroll = 17
tabstop = 4 window = 36
filetype = cpp number
smartindent ttyfast
helplang = en paste
syntax = cpp ttymouse = xterm2
backspace = indent,eol,start
fileencoding = utf-8
fileencodings = ucs-bom,utf-8,默认,latin1 printoptions = paper:letter
runtimepath =〜/ .vim,/ var/lib/vim/addons,/ usr/share/vim/vimfiles,/ usr/share/vim/vim72,/ usr/share/vim/vimfiles/af ter,/ var/lib/vim/addons/after,〜/ .vim/after suffixes = .bak,〜,.swp,.o,.info,.aux,的.log,的.dvi,.bbl,的.blg,.brf,.CB,.IND,.IDX,.ilg,.INX和.out,.TOC

And*_*510 11

尝试:

:set ai
Run Code Online (Sandbox Code Playgroud)

要么:

:set autoindent
Run Code Online (Sandbox Code Playgroud)

找到有关自动缩进的更多信息:

:h ai
Run Code Online (Sandbox Code Playgroud)

否则,它可能是文件类型检测的东西.


hra*_*ban 10

我有一个陈旧的功能,indentexpr在更改文件类型后仍然存在。这最终为我修复了它:

:set indentexpr=
Run Code Online (Sandbox Code Playgroud)


tho*_*phn 9

万一其他人面临同样的问题,我有一个类似的问题,上述问题都没有解决。对我来说错误的是标签解释。这是使其工作的设置:

set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
Run Code Online (Sandbox Code Playgroud)

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

" helper for indent mistake
set list listchars=tab:»·,trail:·
Run Code Online (Sandbox Code Playgroud)

如果缩进错误,则显示“»”而不是常规的“·”。非常便利。希望能帮助到你。


Ben*_*oit 7

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


小智 6

我有同样的问题,这些设置修复了它.

filetype on
filetype plugin on
filetype indent on
Run Code Online (Sandbox Code Playgroud)


Ada*_*sen 2

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

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

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