【问题标题】:vim tab indentation for tex documenttex 文档的 vim 选项卡缩进
【发布时间】:2019-02-25 18:36:17
【问题描述】:

我正在尝试配置我的 vimrc,以便在编辑 tex 文档时制表符是 2 个空格。

在我的 vimrc 文件中,我有

au BufNewFile,BufRead *.py:
    \ set tabstop=4
    \ set softtabstop=4
    \ set shiftwidth=4
    \ set textwidth=79
    \ set expandtab
    \ set autoindent
    \ set fileformat=unix

au BufNewFile,BufRead *.js, *.html, *.css, *.tex:
    \ set tabstop=2
    \ set softtabstop=2
    \ set shiftwidth=2

但是,当我在 vim 中编辑文档时,它会忽略制表位。制表符比 2 个空格长得多。 Vim 不会抛出任何错误。我不明白为什么在编辑 tex 文档时它会忽略 tabstop=2 行。我必须在编辑时运行 :set tabstop=2。

谁能看到我的配置文件有什么问题?

如果这是相关的,我正在使用 vimtex 插件。

谢谢。

【问题讨论】:

  • 考虑运行:verbose set tabstop?。它将显示相关选项的最后设置位置,这将有助于调试。

标签: vim tex


【解决方案1】:
  • 文件 glob 需要用逗号分隔,中间不带空格; cp。 :help autocmd-patterns
  • 在模式后删除: 冒号。
  • 最好使用:setlocal,而不是:set,否则缩进设置将被继承到从其中之一中创建的任何新缓冲区。
  • 您可以将所有:set 命令的参数合并为一个。
au BufNewFile,BufRead *.js,*.html,*.css,*.tex
    \ setlocal tabstop=2 softtabstop=2 shiftwidth=2

而不是:autocmd,我更愿意将其放入~/.vim/after/ftplugin/{filetype}.vim。 (这要求您拥有:filetype plugin on;使用after 目录可以让您覆盖$VIMRUNTIME/ftplugin/{filetype}.vim 完成的任何默认文件类型设置。)小缺点是您必须复制:setlocal每种文件类型的命令,但对我来说,您希望这些语言具有相同的缩进设置这一事实是偶然的,并且这些配置之间没有联系。

或者,您可以直接在~/.vimrc 中定义:autocmd FileType {filetype} ...。有了这个,你至少不会复制内置的 filetype detection 和它使用的文件 glob 模式:

au FileType javascript,html,css,tex
    \ setlocal tabstop=2 softtabstop=2 shiftwidth=2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多