作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我键入一个左括号后跟一个换行符时,我希望光标自动缩进一个制表符值 - 与打开大括号或左方括号的方式相同。出于某种原因,它缩进了两个制表符值。
我对让它对 .dart 文件正常工作特别感兴趣。
这是我的 .vimrc:
set tabstop=2
set softtabstop=2
set shiftwidth=2
set autoindent
set expandtab
最佳答案
所以 vim 中有几个缩进选项(请参阅 :h C-indenting
以获得更好的理解)
还有一篇关于 vimways 的很棒的文章 https://vimways.org/2019/indentation-without-dents/ ( 强烈推荐 )
1. smartindent
这是最简单的一个它没有做太多见:h 'smartindent'
An indent is automatically inserted:
- After a line ending in '{'.
- After a line starting with a keyword from 'cinwords'.
- Before a line starting with '}' (only with the "O" command).
cindent
见
:h cindent
它可以覆盖
smartindent
这是你目前正在经历的事情(你想改变)
indentexpr
现在这是真正的交易,它功能强大,大多数插件都使用此选项,现在真正的问题是如何使用它
setlocal indentexpr=GetMyCustomIndent()
" Only define the function once
if exists("*GetMyCustomIndent") | finish | endif
function! GetMyCustomIndent()
return 0
endfunction
The result should be the number of spaces of indentation (or -1 for keeping the current indent) To honor the user’s choice of
'shiftwidth'
returnindentlvl * shiftwidth()
function! DartIndent()
" Default to cindent in most cases
let indentTo = cindent(v:lnum)
let previousLine = getline(prevnonblank(v:lnum - 1))
let currentLine = getline(v:lnum)
" Don't indent after an annotation
if previousLine =~# '^\s*@.*$'
let indentTo = indent(v:lnum - 1)
endif
" Indent after opening List literal
if previousLine =~# '\[$' && !(currentLine =~# '^\s*\]')
let indentTo = indent(v:lnum - 1) + &shiftwidth
endif
return indentTo
endfunction
关于vim - 如何在开括号后设置自动缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59700770/
我是一名优秀的程序员,十分优秀!