Как установить разные цвета для каждого типа файлов в Vim? - PullRequest
35 голосов
/ 02 марта 2011

В Vim , я хочу использовать разные схемы цветов для каждого типа файлов.

например Я хочу использовать desert256 цветовую схему для Python & JavaScript файлов и использовать jellybeans цветовую схему для HTML & CSS файлы.


Я пытался вставить следующий код в .vimrc, но изменение цветовой схемы происходит только при первом изменении буферов.

т.е. Если я открываю новый файл Python , используется Python colorcheme, а когда я открываю новый CSS * buffer *, действительно, схема цветов меняется на CSS . Однако возвращение обратно в буфер Python не приводит к изменению схемы цветов обратно.

Я использовал autocmd WinEnter, чтобы попытаться применить это правило при смене окон (и буферов), но это не помогает:

autocmd WinEnter,FileType python,javascript colorscheme desert256
autocmd WinEnter,FileType *,html,css        colorscheme jellybeans  " This includes default filetype colorscheme.

Как я могу это исправить? Кроме того, бонусом будет то, что вы не будете менять цветовую схему, когда она не нужна - , то есть . Изменение с Python на JavaScript буфер не изменит цветовую схему на "сам по себе".


EDIT:

Если кому-то интересно, вот мое .vimrc репо на github.com . Я обновлю его решением, которое я нашел здесь однажды.

Ответы [ 4 ]

25 голосов
/ 04 мая 2014

Я искал то же самое. Это внутри вашего .vimrc работает достаточно хорошо, хотя и не идеально.

autocmd BufEnter * colorscheme default
autocmd BufEnter *.php colorscheme Tomorrow-Night
autocmd BufEnter *.py colorscheme Tomorrow

(Обратите внимание, если вы ищете хорошую темную тему цвета Tomorrow-Night выглядит довольно хорошо. Очень похоже на тему, используемую в Code Academy.)

18 голосов
/ 02 марта 2011

То, что вы хотите, это плагины типов файлов, а не autocmd s. Запустите help: ftplugin в vim для получения дополнительной информации.

Со страницы справки vim:

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

Чтобы использовать плагины файлового типа, сначала вставьте строку filetype plugin on в ваш vimrc. Затем создайте папку ftplugin в папке vim (в Unix это ~/.vim/, я не знаком с Windows). Затем создайте файл сценария для каждого типа файла, который вы хотите настроить. Эти файлы должны быть названы определенным образом. Со страницы справки vim:

Общими именами плагинов для файловых типов являются:
ftplugin / filetype.vim
ftplugin / filetype_name.vim
ftplugin / Filetype / name.vim

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

  1. Создайте файл с именем python.vim в ftplugin
  2. Создайте файл с именем python_whwhat.vim в ftplugin
  3. Создайте файл с именем what.vim в ftplugin / python

Этот скрипт будет загружаться каждый раз, когда я открываю файл, который vim распознает как файл python.

Итак, чтобы выполнить то, что вы хотите:

  • Создайте файл с именем filetype.vim в каталоге ftplugin для каждого типа файла, который вы хотите.
  • В каждом из этих файлов добавьте строку colorscheme name_of_colorscheme
  • Добавьте filetype plugin on к вашему vimrc.
  • Чтобы установить цветовую схему по умолчанию, просто установите ее в своем файле vimrc. Если я правильно помню, плагины файлового типа загружаются после вашего vimrc.

Edit: ОП указал, что у него была веская причина избегать использования каталога ftplugin. Еще немного покопав, я нашел этот скрипт. Он может быть помещен в глобальный vimrc и, похоже, предназначен для решения той же проблемы, что и OP.

4 голосов
/ 10 мая 2013

У меня есть взлом, который вам может понравиться. Это далеко от совершенства, и он не использует .vimrc, но он работает для меня. Требуется ввести другую команду для редактирования разных файлов. Он работает, используя параметр -c, когда вы вызываете gvim. Этот аргумент позволяет вам запускать команды vim после загрузки файла. Добавьте это к вашему ~ / .bashrc (я думаю, вы используете bash):

alias gpy="gvim -c 'colorscheme desert'"
alias gcs="gvim -c 'colorscheme jellybeans'"

Надеюсь, это поможет

1 голос
/ 02 марта 2011

Используйте BufWinEnter вместо WinEnter, например:

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