如何在VIM中正确缩进typescript文件

4

我对VIM还比较陌生,一直在使用bundle来格式化/着色/缩进我的文件。我最近从这里下载了一个typescript vim语法的“bundle”:https://github.com/leafgarland/typescript-vim.git,问题是缩进对我来说似乎有问题,考虑以下示例,在自动缩进(gg=G)文件后:

module Module { 
    class Foo { 
        // some string here 
bar: string; // bar is incorrectly indented
    }      
}  

实际上我期望以下结果:
module Module { 
    class Foo { 
        // some string here 
        bar: string; // bar is correctly indented
    }      
}    

这是typescript.vim ftplugin文件:
compiler typescript                                                             

setlocal autoindent
setlocal cindent
setlocal smartindent
setlocal indentexpr&

setlocal commentstring=//\ %s

我尝试了不同的缩进设置,但都没有成功。我使用的是这里的VIM设置和捆绑包: https://github.com/gisenberg/.vim,我使用git在本地同步这些文件。
TIA!

1
cindent 可能是导致问题的原因。在 C 语言中,bar: 是标签的语法,不应该有缩进。 - Swiss
有没有可能覆盖这个设置?或者告诉VIM应该缩进<变量>:<类型>;? - Jonathan Nazario
@JonathanNazario,只需从您的ftplugin中删除该行。 - romainl
2个回答

3
根据Vim缩进文档,您可以尝试以下方法来查看哪种适合您。

手动调整

如果您手动更改了当前行的缩进,Vim将忽略该行的cindent设置。

由于TypeScript中出现这种模式的频率很高,这可能会变得很烦人。

角括号

如果您真的想在键入:时重新缩进,请使用<:>

这将为您提供缩进,而不会丢失您发现有用的cindent的任何部分。

更改cinkeys

这包含影响cindent设置的设置,默认情况下为:

"0{,0},0),:,0#,!^F,o,O,e"

但是你可能会有一些运气将其更改为:
"0{,0},0),0#,!^F,o,O,e"

放弃Cindent

你可以完全删除c风格的缩进,只需要删除这一行:

setlocal cindent

我讲解了很多选项,因为这是Vim和代码编辑的本质——你需要尝试不同选项来找到最适合自己的。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接