Как настроить разные настройки вкладок для разных языков в Vim? - PullRequest
63 голосов
/ 21 мая 2009

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

Ответы [ 5 ]

71 голосов
/ 27 августа 2012

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

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

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

51 голосов
/ 21 мая 2009

Просто поместите настройки в файл плагина 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' (новый или существующий).

22 голосов
/ 16 ноября 2009

Мой ответ основан на этом совете на 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
9 голосов
/ 21 мая 2009

Обычно вы настраиваете специальный файл типа 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

Мой ~/.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
2 голосов
/ 15 февраля 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...