Подтвердить что ты не робот

Как настроить различные настройки вкладок для разных языков в Vim?

В моем .vimrc У меня есть общая настройка табуляции в два пробела, и я бы хотел переопределить это на (то есть четыре для Python и т.д., в противном случае используйте значение по умолчанию), но мне трудно найти хороший пример этого.

4b9b3361

Ответ 1

Просто поместите настройки в файл плагина filetype ~/.vim/ftplugin/LANGUAGE.vim. Мой ~/.vim/ftplugin/perl.vim содержит строки:

"
" ---------- tabulator / shiftwidth --------------------
"  Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal  tabstop=4
setlocal  shiftwidth=4
"

Эти настройки будут автоматически действовать для каждого файла с типом файла 'perl' (новый или существующий).

Ответ 2

Эти другие ответы кажутся слишком сложными. Вместо того, чтобы возиться с еще большим количеством каталогов и файлов в дереве ~/.vim, просто добавьте следующее к своему ~/.vimrc.

autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4

(вы можете быть l33t и сокращать параметры до et ts=4 sw=4 sts=4). Я нашел это в Настройка параметров пробела Vim по типу файлов

Ответ 3

Мой ответ основан на этом совете на VIM Wiki. Этот ответ использует каталог "after", поэтому вам не придется гадать с прилагаемыми файлами плагинов для разных типов файлов.

Например, чтобы указать пользовательские настройки для файлов Python, создайте файл с именем python.vim, чтобы сохранить настройки Python:

setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4

Поместите этот файл в

  • ~/.vim/after/ftplugin (Linux)
  • $HOME/vimfiles/after/ftplugin (Windows)

И, наконец, вы должны иметь это в своих .vimrc (Linux) или _vimrc (Windows):

filetype plugin indent on

Ответ 4

Как правило, вы настраиваете специальный файл типа vimrc с настройками для определенного языка, а затем используйте автокоманды в своем основном .vimrc для выполнения специального vimrc, когда это необходимо. Здесь моя конфигурация для файлов Haskell (.hs и т.д.):

autocmd! BufNewFile,BufReadPre,FileReadPre  *.hs    so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.hsc   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.lhs   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.cabal so ~/.vim/haskell.vim

My ~/.vim/haskell.vim делает вещи как "set expandtab" для использования пробелов вместо вкладок и всех видов магии для форматирования и тому подобного. Вы можете часто загружать хорошие версии этих файлов для разных языков из http://vim.org и других сайтов.

Обратите внимание, что вы можете сделать намного больше, чем просто изменить настройки vim. Например, вы можете запустить файл через фильтр до и после редактирования:

" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre      *.asc  set bin
autocmd  BufReadPost,FileReadPost    *.asc  '[,']!gpg -q -d
autocmd  BufReadPost,FileReadPost    *.asc  set nobin
autocmd! BufWritePre,FileWritePre    *.asc  set bin
autocmd  BufWritePre,FileWritePre    *.asc  '[,']!gpg -e
autocmd  BufWritePost,FileWritePost  *.asc  undo
autocmd  BufWritePost,FileWritePost  *.asc  set nobin

Ответ 5

Я использую плагин config config и добавляю файл .editorconfig ко всем моим проектам - он позволит вам определять разные настройки отступов для разных проектов используя тот же язык программирования, который может быть полезен, поскольку различные проекты на одном языке имеют разные стандарты кодирования.

Вы можете увидеть пример настроек, которые вы можете установить здесь: http://editorconfig.org/