如何使vim正确缩进tcl?

时间:2019-01-07 05:20:22

标签: vim tcl indentation

我有以下示例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的方式,还是我做错了什么?

1 个答案:

答案 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:-)