我有以下示例tcl:
#!/usr/bin/env tclsh
proc main {} {
foreach v $::argv {
puts $v
}
}
main
当我让vim将此代码缩进(ggVG=
)时,它会完全按照上述缩进,这显然是错误的,因为花括号不匹配。
但是,我很确定我的vim设置正确:
:set
--- Options ---
autoindent backspace=2 expandtab hlsearch scroll=22 syntax=tcl wildmenu
autoread comments=:# filetype=tcl incsearch shiftround ttyfast window=0
background=dark commentstring=#%s helplang=en modelines=0 shiftwidth=4 ttymouse=xterm2 nowrap
fileencoding=utf-8
fileencodings=ucs-bom,utf-8,default,latin1
formatoptions=tcroql
indentexpr=GetTclIndent()
indentkeys=0{,0},!^F,o,O,0]
和
:scriptnames
...
52: /usr/share/vim/vim80/ftplugin/tcl.vim
53: /usr/share/vim/vim80/indent/tcl.vim
54: /usr/share/vim/vim80/syntax/tcl.vim
...
这是vim缩进tcl的方式,还是我做错了什么?
答案 0 :(得分:2)
我使用旧的Vim 7.4尝试了您的示例,但看到了相同的错误。然后我在Vim 8.1上进行了尝试,它可以正常工作。我检查了indent/tcl.vim
,它已于2018-12-05更新(Vim 8.1.0576)。
下载current indent file from git。并将其存储在目录~/.vim/indent
(在Windows上为$HOME/vimfiles/indent
)中。
重新启动Vim并进行测试。
一旦您更新到Vim 8.1.0576或更高版本,就可以从您的个人配置中删除indent/tcl.vim
。
顺便说一句:仅缩进文件已更新。语法,编译器和ftplugin的脚本保持不变。
PS:要为您节省一键操作,请尝试gg=G
:-)