отступ для вкладки vim для текстового документа - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь настроить мой vimrc таким образом, чтобы при редактировании текстовых документов вкладки занимали 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 не выкидывает никаких ошибок.Я не понимаю, почему он игнорирует строку tabstop = 2, когда я редактирую текстовый документ.Мне нужно запустить: установите tabstop = 2 во время редактирования.

Кто-нибудь может увидеть, как мой файл конфигурации не так?

Если это актуально, я использую плагин vimtex.

Спасибо.

1 Ответ

0 голосов
/ 26 февраля 2019
  • Глобусы файлов должны быть разделены запятыми без пробелов между ними;ср.:help autocmd-patterns.
  • Удалите двоеточие : после шаблона.
  • Вместо :set лучше использовать :setlocal, в противном случае настройки отступа будутнаследуется любому новому буферу, который создается из одного из них.
  • Вы можете объединить аргументы всех команд :set в один.
au BufNewFile,BufRead *.js,*.html,*.css,*.tex
    \ setlocal tabstop=2 softtabstop=2 shiftwidth=2

Вместо :autocmd, я бы предпочел поместить это в ~/.vim/after/ftplugin/{filetype}.vim.(Для этого требуется, чтобы у вас был :filetype plugin on; использование каталога после позволяет вам переопределить любые настройки типа файла по умолчанию, сделанные с помощью $VIMRUNTIME/ftplugin/{filetype}.vim.) Небольшой недостаток заключается в том, что вы должны дублировать команды :setlocalдля каждого типа файла, но для меня тот факт, что вы хотели бы иметь одинаковые настройки отступа для этих языков, является случайным, и нет никакой связи между этими конфигурациями.

В качестве альтернативы, вы можете определить :autocmd FileType {filetype} ... напрямуюв вашем ~/.vimrc.При этом вы, по крайней мере, не будете дублировать встроенное определение типа файла и используемые им шаблоны глобуса файла:

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