вторник, 19 июня 2012 г.

vimrc 2.0

Года два назад я уже постил свой vimrc, думаю пришло время сказать что в нём изменилось за это время. Собственно вот актуальный vimrc.

И так, что в нём нового?


 

Пару слов о VIM

Моя основная платформа Windows, соответственно пользуюсь я графической версией vim`а, а именно gvim`ом. Думаю это и так будет заметно при просмотре конфига. Познакомился я с этим редактором, около пяти лет назад. С тех пор постоянно дописываю в конфиг что-либо новое и удаляю устаревшее, с плагинами та-же история. Я никогда не пытался сделать из vim`а IDE, как бы он не был наворочен, это всё же текстовый редактор. Он проектировался для редактирования текста и НЕ понимает контекст программы. Те кто пишет на java работая в netbeans или eclipse думаю меня поймут. Есть конечно исключения в виде плагинов, например ropevim заставляет vim понимать контекст python`а. Но это выглядит скорее как "костыль" (хоть и очень хороший) а не глубоко интегрированная возможность. Всё это нужно понимать при использовании и не пытаться сделать из скальпеля, швейцарский нож.

 

Организация плагинов

Во первых теперь я пользуюсь vundle (аналог pathogen, написанный на vimscript), очень удобная штука для структурирования всех плагинов, те кто еще держит плагины в plugin/autoload/ftplugin очень советую, реально избавляет от бардака в директориях и от головной боли при удалении плагинов. Про pathogen на русском можно почитать на хабре, но советую выбрать всё же vundle, как лучший из аналогов.

 

 Настройки для плагинов

Все настройки плагинов я перенёс из _vimrc в отдельные файлы, которые лежат в папке plugin для каждого плагина. Например есть у нас пакет (bundle в терминологии vundle) tagbar, для того чтобы посмотреть/изменить настройки этого плагина идём в $VIM/bundle/tagbar/_vimrc.vim. Теперь пару слов для чего всё это нужно, во первых чтобы не захламлять основной vimrc(он у меня и так под 40кб), и во вторых такая локализация настроек очень удобна, тут нужно просто попробовать и вы поймёте что к чему.


Один нюанс: файл с настройками должен загружаться первее самого плагина (например для того чтобы определить глобальные переменные). Для того чтобы это было так, я начинаю имя файла со знака _.

А теперь, что умеет мой vim: 

 

Общее

  • навигация по коду для многих языков (tagbar) (лучшая замена taglist)
  • навигация по файлам проекта (nerdtree)
  • нечёткий поиск по файлам и буферам (ctrlp)
  • удобные Textmate-like сниппеты (neocomplcache-snippets-complete)
  • улучшенное авто-завершение (neocomplcache)
  • визуальные маркеры для слов и строк (visualmark, markword)
  • интеграция с системами контроля версий (vcscommand)
  • комментирование/раскомментирование всего и вся (nerdcommenter)
  • автозакрытие скобок (delimitMate)
  • подсветка ошибок на JavaScript (jsflakes)
  • шаблоны для новых файлов (vim-template)
  • проверка правописания одновременно для русского и английского языка
  • много чего еще по мелочи

Для python

  • "умное" авто-завершение кода (ropevim)
  • рефакторинг кода  (ropevim)
  • шелл питона с авто-завершением и прочими плюшками (pyinteractive)
  • подсветка ошибок, неиспользуемых переменных и пр. в коде (pyflakes
  • визуальный показ уровней отступов (vim-indent-guides)

Для C/C++

  • "умное" авто-завершение кода (neocomplcache-clang)
  • переключение от заголовочного файла к реализации и обратно (FSwitch)
  • проверка ошибок в коде (syntastic)
  • компиляция и запуск (SingleCompile)

Репозиротий на github.

Дистрибутив для Windows  
(Лучший способ попробовать всё это. Требует наличия в системе установленного python 2.7)

 

Плюс несколько скриншотов:










8 комментариев:

  1. Ого! вот это конфиг! спасибо познавательно

    ОтветитьУдалить
  2. Спасибо, будет время добавлю ссылки на используемые плагины в статью

    ОтветитьУдалить
  3. Пробовал на windows 7 (64) русская папку с настроенным vim73 - выдало много ошибок. _vimrc понравился, но у меня не все работает. Большое спасибо за статью и файлы.

    ОтветитьУдалить
    Ответы
    1. К сожалению я кроме как на XP(32) нигде больше не пробовал. Если скинете скриншот ошибок, то думаю доведу до ума портабельность.

      Удалить
  4. Попробовал на w7 без установленного vim, не запустился и никаких ошибок при этом не показал. На w xp тоже без установленного vim - аналогичная ситуация.

    ОтветитьУдалить
    Ответы
    1. Сейчас проверил на других машинах, дело оказалось в неустановленном python`е версии 2.7. Однако запустить vim всё таки можно, удалив python27.dll из директории vim, но при этом не будут работать плагины:
      vimcalc
      pyinteractive-vim
      pyflakes-vim
      ropevim
      gundo
      notes
      Почти все они относятся к работе с python и не сильно скажутся на функциональности редактора, при работе с другими языками, единственное что для хорошего автозавершения для С++, в системе должен быть дополнительно установлен clang

      Удалить
    2. Спасибо, буду пробовать. Сейчас появилась необходимость в подобной portable-сборке, а с vim в среде windows не сталкивался.

      Удалить
  5. На Windows 7 64 работает, просто надо было поставить Python 2.7. Спасибо!

    ОтветитьУдалить