Делаем из vim ide
Vim (сокр. от Vi Improved, произносится Вим) — свободный режимный текстовый редактор, созданный на основе более старого vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, и созданным благодаря этому расширениям и надстройкам. (с)wiki
Вот и настроим. У меня была цель — сделать из Vim полноценную IDE для perl. Но таким же путем это делается и для любого другого языка.
Я качала perl-support. Затем создается папка /.vim/ в домашнем каталоге, и кидается в нее содержимое архива, вводится :helptags $HOME/.vim/doc/, которая генерирует тэги для документации. Подгружаются модули.
:help perl-support — выдается справка по модулям и всем имеющимся в них фичам. У нас появляется 2 окна. В конфиге лучше включить мышку для того, чтобы можно было нормально подстраивать окна под себя.
У нас появилась подсветка, можно работать сразу с двумя исходниками, и копировать что-то из одного в другой, убирая попутно комментарии, а затем расставляя их автоматически с помощью vim-а. Да и много чего еще — цитировать хелп я тут не буду) Для этого лишь необходимо разобраться с хоткеями.
Есть еще одна мега-полезная вещь — NERDTree. Это консольный файловый браузер. Удобная штука. Берется отсюда. Установка предельно проста. Один файлик кидается с doc, а второй в plugin. Опять делаем :helptags и получаем то, что нужно. Запускается, соответственно командой :NERDTree. Хэлп легкий. Навигация простая — o чтобы открыть ветку, go, чтобы открыть файл и т.д.
Переключение между окнами — ctrl W W, но это у меня. Вы можете настроить иначе. Главное посидеть недельку и разобраться с хоткеями, а дальше работа в нем будет на порядок быстрее, нежели в других редакторах. Также можно прикрутить тем же методом любые другие доки, плагины и прочее. Настроить полностью под себя и превратить во что угодно, тем самым оптимизировав позже свое рабочее время
И еще надеюсь, что моя первая статья окажется полезной для вас ;)
PS: эта статья — «как сделать и начать юзать». Не стоит ждать от нее большего. Каждый сам дорабатывает и вытачивает то, что ему нужно. Я показала лишь основное.
Привет, Хабрахабр. Меня зовут Алексей и я занимаюсь тем, что разрабатываю встраиваемые операционные системы.
Сегодня я хочу рассказать, как я использую Vim в качестве IDE для C/C++ проектов.
Несмотря на то, что я использую Vim для C/C++, многие из рекоммендаций довольно общие и могут использоваться в любом проекте.
Первый шаг
Для начала, мы хотим иметь место, где можно будет сохранять настройки для своего проекта. Глобальный .vimrc нам не подходит, так как проектов много и они разные, а значит, каждый из них имеет свои специфические настройки.
В Vim есть подходящая для нас опция — exrc. Она говорит vim'у искать дополнительный .vimrc в текущей рабочей директории. Таким образом, мы можем иметь один файлик в корне каждого проекта с его специфическими настройками.
Так как vim будет подключать .vimrc из любой директории, из которой вы его запустите, желательно предпринять некоторые меры защиты и установить опцию secure. В основном, она запрещает внешним .vimrc писать что-то в файлы, выполнять комманды шелла и отображает маппинги, которые создаются.
В общем, нам нужно добавить следующие две строчки в наш главный .vimrc:
Настройки конкретного проекта
После того, как мы получили возможность сохранять опции для каждого проекта в отдельности, почему бы нам этим не заняться.
У всех проектов есть какие-то свои правила касательно тех же отступов, так что просто пеместите нужные настройки в .vimrc в корне вашего проекта:
Кроме этого, я стараюсь держать свои строки в пределах 110 символов. Но так как это очень специфично и сильно зависит от контекста, я не могу доверить такое важное дело как разбиение строк какому-либо редактору (даже vim). Но vim может помочь мне просто подсветив нужный столбец.
Определений типов файлов
По умолчанию, Vim предпологает, что все .h файлы это C++. Однако, часть моих проектов написаны на чистом C. Поэтому я хочу, чтобы тип файла был C. Кроме того, в моих проектах используется doxygen, так что я не против включить очень клевую подсветку doxygen в vim.
Для того, нужно добавить пару строк в локальный .vimrc:
Установка переменной path
В vim есть чудесная комманда gf (и родственные к ней), которая открывает файл, чье имя находится под курсором. Это неимоверно полезно при навигации по заголовочным файлам.
По умолчанию, vim смотрит файлы в текущей папке, а так же в /usr/include. Однако почти все проекты имеют заголовочные файлы, которые хранятся в других папках. Поэтому, нужно установить переменную path, которая содержит список папок для поиска, разделенный запятыми.
Заметка
Джавистам следует обратить внимание на опцию includeexpr. Она содержит выражение, которое будет использовано для преобразования строки в имя файла. Следующая строка заменяет все точки на слеши для gf. Таким образом, можно прыгать по import'ам.
Автодополнение
Лучший(Устарело. Сейчас я использую YouCompleteMe. Обратитесь к моему посту за деталями) Хороший плагин для автодополнения C/C++ кода, который я нашел, это clang_complete (инструкции для установки смотри на страничке плагина).
Он использует clang для того, чтобы сгенерировать список дополнений. И работает отлично для C и C++ (а так же еще пары языков).
Для того, чтобы clang знал о ваших папках с заголовочными файлами, нужно добавить -I и -D флаги в файл .clang_complete в корне вашего проекта. После этого, clang_complete будет автоматически вызываться при нажатии "." или "->".
Подсказка
Если path опция уже заполнена, то можно легко вставить список I-флагов с помощью следующей нехитрой комбинации клавиш
Другие clang плагины
Clang не просто компилятор, а еще и набор полезных библиотек для анализа и манипуляций с кодом. Таким образом, это очень хорошая основа для разнообразных плагинов. Так что в ближайшем будующем можно ожидать множество основаных на нем плагинов.
Навигатор
Для того чтобы отображать дерево проекта можно воспользоваться либо отдельными плагинами (NERD Tree например), либо встроеным netrw.
Я не использую ни один из способов, так как мне вполне комфортно выбирать файлы прямо из коммандного режима vim. (если установить wildmode в longest:list,full , то vim показывает подходящие файлы как нормальный шелл)
Настройка системы сборки
После того, как мы разобрались с редактированием и навигацией по файлам, можно собирать проект. В vim есть комманда make. По умолчанию, она запускает make в текущей директории и парсит вывод на наличие ошибок.
Фактическая комманда для выполнения хранится в makeprg. Если проект собирается в другой папке, использует другие параметры make или вообще использует другую систему сборки, нужно просто изменить makeprg чтобы отобразить это:
После этого, можно собирать проект просто напечатав :make .
Но так как нам этого мало, можно повесить эту комманду на одну из ненужных кнопок. Например:
("!" предотвращает от прыгания на первую ошибку)
Настройки системы запуска
После того, как проект собран, вполне логично запустить его. Vim может запускать любую программу, для этого всего лишь нужно добавить восклицательный знак перед ее именем в коммандном режиме. Так, чтобы запустить мою супер-пупер программу, нужно набрать . /my_great_program .
Конечно, это тоже нужно упростить!
Система контроля версий
Так как vim предоставляет прямой доступ к коммандной строке, я не использую какой-либо специальный плагин для этих задач и просто управляю своим git-деревом прямо из шелла.
Но я должен отметить, что есть множество отличных vim плагинов для работы с разными системами контроля версий.
Например, fugitive. Если вы работаете с git, вы абсолютно должны посмотреть вимкасты fugitive.
Забытый пункт: отладка
Так как я чувствую себя комфортно в command-line gdb, да и специфика операционных систем делает почти невозможным отладку их отладчиками, за прошедший год я запускал gdb лишь однажды. В основном, все мои проекты я отлаживаю обычными print'ами и капелькой мозгов. Так что в моем vim нет ничего, чтобы напоминало отладчик.
Однако, я должен сказать, что существуют несколько плагинов для интеграции gdb и vim. Например, clewn, gdbvim.
После серии несложных оперций, vim превратился в вполне себе сносную IDE. Буду рад услышать о дополнительных настройках, которые облегчили вашу жизнь в vim и позволили лучше интегрировать его с окружающими инструментами.
Пользуюсь vim -ом уже не первый год, и всё хотелось превратить его в “настощий IDE” – но как-то было лень и руки не доходили.
Т.е., vim , конечно, прекрасен и сам по себе, но сейчас начал в очередной раз ковырять Golang, и очень напрягает писать функции в ЭтОмВоТдУрАцКоМкЕмЕлСтАйЛе и постоянно shift-тить, а потому начал искать плагин для автодополнения имён.
Заодно – доустановил себе всяких других плагинов, которые давно хотелось. Собственно об этом и пост – установка плагинов, их настройка, полезные плагины для vim -а вообще.
Установка плагинов
Как правило – плагины устанавливаются в домашний каталог, в папке ~/.vim :
Путь к ней определяется в vim параметром runtimepath , проверить его можно с помощью :set runtimepath? :
При необходимости его можно изменить, задав в ~.vimrc :
Плагины могут быть представлены в разных вариантах – просто .vim файл, .vba (vimball-файл), который содержит все необходимые файлы плагина, или просто набор файлов для различных директорий внутри каталога ~/.vim/ – /plugin/ , /doc/ , /syntax/ и т.д.
Для установки плагина из .vim файла – его достаточно загрузить в каталог ~/.vim/plugin .
Кроме ручной установки – существует несколько менеджеров для плагинов, например – vim-plug , pathogen , vundle , которые упрощают установку плагинов, состоящих из нескольких директорий-файлов и их обновление.
Установка vim-plug
Дальнейшие примеры будут с использование менеджера vim-plug .
Загружаем файл плагина в каталог .vim/autoload , что бы бы загружался при запуске vim :
В ~/.vimrc добавляем:
Между вызовами begin и end – будем добавлять плагины для установки их с помощью vim-plug .
Цветовая схема
Кроме плагинов – vim поддерживает разные цветовые схемы.
Просмотреть имещиеся можно с помощью :colorscheme +пробел+Ctrl+D:
Большая коллекция схем тут>>>.
Для установки темы, например flattened – добавляем её в .vimrc :
Перечитываем конфиг – выполняем :source .vimrc :
И вызываем :PlugInstal :
(vim поддерживает автодополнение команд по TAB, а обновить плагины, установленные с помощью vim-plug можно с помощью PlugUpdate )
Добавляем тему в .vimrc :
Полезные плагины
Плагинов для vim – вагон и маленькая тележка, можно добавить интересные в комментарии. Тут приведу только несколько.
lightline
Первый плагин – lightline, который меняет вид строки состояния при работе с файлами.
Добавляем Plug 'itchyny/lightline.vim' :
Добавляем в .vimrc параметр laststatus со значением 2 – ` set laststatus = 2`, и showmode в set noshowmode :
Повторяем установку – перечитываем .vimrc , выполняем :PlugInstal :
NERDTree
Ещё один плагин, который очень упрощает навигацию по каталогам-файлам, не выходя из vim .
Что бы запускать его каждый раз при запуске vim – добавляем autocmd vimenter * NERDTree .
Для вызова-скрытия менюшки по комбинации клавиш – добавляем map :NERDTreeToggle (или меняем Ctrl+n на свою):
Повторяем установку, как в примерах выше, и вызываем меню по Ctrl+n:
Для переключения из окна файлов-каталогов к редактируемому фйлу – используем Ctrl+w+w, для отображения скрытых файлов – Shitf+i:
Либо, что бы для переключения между окнами пользоваться мышкой – добавляем параметр mouse – set mouse=a .
Что бы создать файл из NERDTree – вызываем меню клавишей m :
Клавишей a – добавляем новый элемент. Если это файл – то просто указываем имя, если директория – добавляем в конце обратный слеш “ / “:
vim-go
Собственно тот плагин, с которого всё началось – автодополнение имён функций при написании кода на Go.
Проверяем PATH в ~/.bashrc – должен включать в себя GOPATH/bin :
Выполняем :source .vimrc , :PlugInstall , и вызываем :GoInstallBinaries :
Запускаем vim , и проверяем:
Для вызова автоподстановки имени – используем Ctrl+x и Ctrl+o в INSERT режиме.
Кроме автоподстановки vim-go умеет и многое другое, см. команды тут>>>.
syntastic
Ещё один полезный плагин – проверка синтаксиса.
Рекомендуемые опции для него:
Пример его работы с Python, вызов проверки – при сохранении файла или командой :SyntasticCheck :
Предъистория: несколько раз пытался пользоваться vim и каждый раз бросал. Всякий раз он мне казался неудобным. В этот раз плюнул на стандартные настройки, перенастроил его по-нормальному и да, теперь им сходу стало можно пользоваться как редактором текста. В частности: перенёс перемещение курсора с hjkl на esdf и esc на shift+space. Также, курсор при движении влево-вправо теперь не останавливается на конце строки.
Вимом стало возможно нормально пользоваться! Теперь, я хочу затюнить его под С++ кодинг.
Для этого мне минимально необходим следующий функционал:
-
переключение между заголовочником и исходником,
Ну вот и всё. Вроде ничего не забыл.
kep , Spoofing
перенёс перемещение курсора с hjkl на esdf и esc на shift+space
мог не кастовать, я топик сразу начал читать т.к. подписан на тег, но как только дочитал до:
перестал читать, мне тебе посоветовать нечего.
// шутка конечно, дело твое, в общем я с C/C++ не работаю, только с Go, а там отдельный, фантастический IDE-плугин, единственное что могу порекомендовать универсального, это перейти на neovim и использовать deoplete + neoinclude.
Вообще был когда-то такой IDE-плугин «a.vim», так и назывался вроде «C IDE», но каково с ним работать мне неизвестно, жди andreyu , например.
нет, но мышку, например, мне без разницы, в какой руке держать. esdf просто более привычен по другим приложениям и интуитивно более ясен, благодаря стрелочноподобию.
удалить vim, накатить emacs, на последний spacemacs если хочешь совсем из коробки, с вимоподобными хоткеями, и чтобы работало
если хочешь именно vim, то уже сказали про yavide, вроде больше и нечего советовать
так hjlk это тоже стрелки, ты просто не понял:
- h — влево, потому что левая
- j — вниз, потому что j как-бы показывает вниз
- l — вправо, потому что правая
короче эти разговорчики про неудобство мы слышали сотни тысяч раз, они ничего не стоят, здесь бессмысленно переубеждать.
но как же это так, как же ты будешь удалять (d), искать (f), переходить к концу слова (e)? Эти движения архичасто используются как в моушинах, так и сами по себе.
Это вообще не серьезно, это не вим получается, а какая-то параша голимая.
Чего только люди не делают, только что бы только не использвать acme. ;)
как в моушинах, так и сами по себе.
и в макросах тоже.
это там, где подсветки синтаксиса нет и не будет, потому что так захотелось Пайку?
так hjlk это тоже стрелки, ты просто не понял:
но они ничем не лучше esdf, а привыкать дольше. пока привыкаешь, редактором по делу не пользуешься, ну и, в итоге бросаешь.
удалять (d), искать (f), переходить к концу слова (e)
разумеется, я их перенёс на другие места. поиск, кстати, относительно редко использую, потому, что в IDE есть разные вышеупомянутые плюшки для быстрого поиска, в vime подобное тоже должно быть.
круто, спасибо. вопрос: а там есть «переход к предыдущей позиции курсора (не используя закладки)» ?
Чем не угодили дефотные " и Ctrl-O, Ctrl+I?
Подсветка для слабаков!
как-то странно себя ведут, 2 позиции что ли только поддерживают?
Да, " перемещает курсор только между последней и текущей позицией. Если нужно больше, то Ctrl-I/Ctrl-O.
Вообще был когда-то такой IDE-плугин «a.vim»
Не путаешь с «c.vim»?
переход к предыдущей позиции курсора (не используя закладки),
ctrl + O в нормальном режиме же.
перенёс перемещение курсора с hjkl на esdf и esc на shift+space
не думай что ты умнее всех. закончится это печально: либо ты не поймешь сути вима и снова забросишь — просто потому что будешь продолжать пользоваться «стрелочками» для перемещения, либо поймешь и тогда прийдется переучиваться по-жесткому.
переключение между заголовочником и исходником,
переход к определению функции под курсором,
переход к объявлению функции под курсором,
с ctags, ctrl-], в пределах файла gd или по вкусу g] (go to tag definition).
переход к предыдущей позиции курсора (не используя закладки),
плагин для содержащания файлов проектах,
что такое «содержащания файлов проектах»? вангую nerdtree, tagbar или ctrlp
переход к файлу, указанному директивой include под курсором,
аналог вкладок в других редакторах и переключение между ними,
надо понять в чем разница между буфферами, окнами и табами и зачем оно все, тогда все будет просто и логично. табы в виме != табы в других редакторах
подсветка всех слов аналогичных тому, что под курсором (по клавише),
поиск во всех файлах проекта с подсветкой найденного,
:!astyle %, но вообще autoformat.vim
дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),
листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).
Ну и, конечно, сохранение/открытие проекта, быстрый запуск компилятора и скомпилированного файла.
хз что именно ты хочешь, но вангую :help session и :make
Ещё, традиционно порекомендую всем как и всем вимо крестоводам - rtags, для навигации по коду и хоть и тухленького но комплита.
Ещё unite полезная штука. Но эт если ты любишь qtc и/или idea и хоткеи.
А ты не знаешь, как сделать так, чтобы ack.vim и ag.vim во время поиска не гадили в терминал?
ctrlp проще в использовании.
Зато у unite есть api которое ещё мульён плагинов поддерживают.
А хоткеи всё равно можно настроить любые.
переход к предыдущей позиции курсора (не используя закладки),
Вопрос обширный, так как «предыдущая пощиция курсора» - не совсем чёткое понятие.
Есть `. - переход к последнему месту, где ты изменял текст (где ты вышел из insert mode). Удобно и мотивирует почаще выходить из insert mode :)
аналог вкладок в других редакторах и переключение между ними,
P. S. Вверху верно подметили, что наверное тебе нужны не табы, а буферы, и неплохо бы понять между ними разницу. Например, у меня может быть показываться один файл в нескольких табах.
подсветка всех слов аналогичных тому, что под курсором (по клавише),
После поиска первого совпадения: n и N
Или ты о :set incsearch ?
листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).
Если ти компилишь с помощью make, то (часть моего конфига)
esdf просто более привычен по другим приложениям
О, да ты еще не используешь толком vim!
Я, например, уже жить не могу без t / T / f / F
Удалить до буквы 'a': dta
Удалить до буквы 'a' вместе с буквой: dfa
Удалить от буквы 'a' вместе с буквой: dFa
Удалить до 3-й буквы 'a': dta..
Перейти к букве 'а': ta
Перейти к 5-й букве 'a': ta;;;;
Kroz ★★★★★ ( 27.04.16 00:04:32 )
Последнее исправление: Kroz 27.04.16 00:11:40 (всего исправлений: 2)
А ещё дефолтный биндинг там весь на ctrl :)
переключение между заголовочником и исходником,
переход к определению функции под курсором,
переход к объявлению функции под курсором,
ctags, cscope, gnu-что-то или плагины, которые парсят код, но они обычно медленные, много жрут и дальше текущего файла не лезут, да и трудности с флагами сборки ещё будут.
плагин для содержащания файлов проектах,
переход к файлу, указанному директивой include под курсором,
Стандартное gf , но в 'path' должны быть -I прописаны.
Для С++11 и выше, возможно, что-то надо будет добавлять, не уверен (у меня что-то лежало для этого).
подсветка всех слов аналогичных тому, что под курсором (по клавише),
поиск во всех файлах проекта с подсветкой найденного,
Это может зависить от плагина для проектов. Вообще же :vimgrep /what/ **/*.cpp .
переименование метода класса в исходнике с автоматическим изменением сигнатуры в заголовочнике,
Не помню такого, но обычно легко переключиться и повторить команду.
дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),
Всякие гибриды были, но их польза сомнительна, может проще будет что-то вроде cgdb.
листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).
быстрый запуск компилятора и скомпилированного файла.
:make и оно появится (потом :cn , :cp и подобные команды для QuickFix list).
Ну и, конечно, сохранение/открытие проекта
Есть vim-session и аналогичные.
xaizek ★★★★★ ( 27.04.16 00:05:59 )
Последнее исправление: xaizek 27.04.16 00:08:11 (всего исправлений: 3)
Всякие гибриды были, но их польза сомнительна, может проще будет что-то вроде cgdb.
Кстати, никогда не понимал, зачем в одно запущенное в терминале окно Vim нужно тащить всё, включая дебаггер. Проще на соседнем мониторе запустить cgdb. Это юниксвэйно.
Это уже лишнее, имхо. Что может быть проще :mks! file и :e file?
Но всё таки, интересно, как все советчики, обходят тему отладки :)
В том же emacs с этим немного получше дела обстоят. Для сабжа есть pyclewn. Лично я так и не заставил себя им пользоваться и юзаю консольные lldb и gdb когда надо.
Топикстартер, рекомендую тебе следующие плагины:
Plug 'airblade/vim-gitgutter'
(показывает слева плюсами и минусами, какие строки ты модифицировал в репе)
Plug 'ctrlpvim/ctrlp.vim'
(недавно просматриваемые файлы, буферы, поиск по проекту)
Plug 'morhetz/gruvbox'
(подсветка синтаксиса для всех языков)
Plug 'rking/ag.vim'
(поиск по контенту файлов проекта, заметно быстрее :vimgrep)
Plug 'scrooloose/nerdtree'
(древо проекта)
Plug 'tpope/vim-fugitive'
(чтобы видеть в статусе, в какой ты ветке, а также Gdiff просматривать и коммитить)
Plug 'vim-airline/vim-airline'
(самый важный плагин: кидает ворнинги, если в файле используются и пробелы, и табы, а также кидает ворнинги, если в конце какой-то строки есть пробелы или табы)
Какие плагины вы используете, чтобы превратить vim в IDE для ________ (вписать язык)?
И общее для всех языков:
- Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.
- Go anywhere (CtrlP, Command-T или FuzzyFinder?)
9. Ненужно. Ненужно. guard (не в виме, но в соседнем терминале)
Рассказываю как сделать из vim ide:
1. Переходим в командный режим 2. Набираем:
где $IDE - прописанный в вашем окружении eclipse, idea, geany или любое другое ide, которое вам нравится.
Спасибо за внимание.
И чтобы ещё и код за тебя сам писал.
Нынче IDE очень таки неплохо пишут код сами. Но автор хочет невозмож^W сделать из текстового редактора IDE.
- не нужно
- set autoindent on
- см. 9, в ином виде не нужно
- см. 9, в ином виде не нужно
- не нужно, документация открыта в отдельном окне
- не нужно в принципе
- не представляю кем надо быть чтобы не осилить с первого раза дать название классу/методу, но если что - sed
- понятия не имею что это
- cmake, make, gdb, ctest, scan-build, lint в самостоятельном терминале
- ! pastebinit
А может не надо? Я конечно всячески поддерживаю использование Vim, но ведь не в такой извращённой форме. Тащить в него элементы IDE означает вредить себе же, так как они рассчитаны на другой тип окружения, в котором всё связанно со всем. Намного лучшая идея — использовать Unix как IDE.
И вообще, для кого Брам писал документацию?
На самом деле, в общем плане, можно ответить универсальными дополнениями и решениями, а вот более глубоко лучше создавать по каждому языку/технологии отдельную тему, для предметного и глубоко обсуждения, что я и планирую сделать в посте «Профессиональная веб-разработка в Vim», который готовлю уже 2-ю неделю, где будет подробно обговариваться полный цикл разработки на html/css/препроцессоры/javascript-related.
Универсальными же решениями являются:
1. Тяжелый и громоздкий YCM или легкий, быстрый и не менее продвинутый neocomplete.
2. Универсальный vim-autoformat, который работает с основными автоформатерами и beautify'ерами, например для JavaScript:
по F8 в normal mode форматнет весь буфер или по C-F8 кусок в режиме выделения. Ему всё-равно с каким языком работать, с html через tidy, с питоном через autopep8 или с си-подобными через astyle, он просто предоставляет интерфейс, см. документацию в общем.
3. Syntastic благодаря своей универсальности не имеет конкурентов, насколько мне известно, опять-таки, он тоже только предоставляет интерфейс, а чекеры и опции уже можно менять какие хочешь.
4. см. п.3, где в Syntastic указываешь например для ruby - ruby-lint, для css - csslint, для javascript - например jshint.
5. Прямо в виме или в браузере (что удобнее)? Есть vim-plugin-viewdoc и investigate.vim
6. Живой+патченный Exuberant ctags + tagbar, лучше пока не придумали, хотя для некоторых языков, например JS - есть кое какие проблемы. Но в случае с JS спасает Tern + tern_for_vim, хотя более активная работа над поддержкой в jsctags+tagbar не помешала бы.
7. В виме это не нужно, Vim не IDE, но такие задачи легко решаются встроенными средствами.
8. Много разных хороших, разные комплитеры заточены (или имеют более лучшую поддержку) того или иного сниппетера, например я очень доволен neosnippet, который идеально работает (ну и автор тот же) с вышеуказанным neocomplete, а вот YCM, насколько помню лучше всего работает с ultisnips.
9. (Не работаю с компилируемыми языками, не подскажу), для тестов много чего есть, более конкретно нужно говорить по языкам.
Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.
Ну простейшее же: :vimgrep XXX и смотреть в :cw , но есть чуть более универсальные vim-signature и TurboMark
Go anywhere (CtrlP, Command-T или FuzzyFinder?)
на reddit'е свежий вброс на эту тему, где сошлись авторы разных fuzzyfinder'ов (fzf, Command-T и др.) и педалируют тему.
Читайте также: