Pull to refresh

Comments 16

ctags помогает переходить по функциям.
YouCompleteMe тоже это делает. И вроде как должен делать лучше, так как учитывает контекст (не могу утверждать, так как не юзаю эту фичу).

Из не-clang альтернатив довольно хорошо работает cscope. Использовал его, чтобы копаться в исходниках Линукса.
YCM учитывает контекст только в текущем компилируемом юните. Т.е. он может найти определение во включенном хедере, но не перейдет от одной имплементации к другой.
С макросами он вроде тоже не очень дружит.
Признайтесь честно, вы просто не знаете как из него выйти? :)
В бородатые 90е, попался мне диск с FreeBSD одной из первых версий, с mc все было понятно, но редактор по-умолчанию там был vim. И единственный известный мне способ выйти из него был — кнопка reset :)
Я так когда-то выходил из редактора Turbo Pascal 3.0 :) А правильно было — Ctrl-K D.
У меня тоже сборка в Vim через make. Висит примерно на такой функции:

function! MakeProject()
  execute "silent update"
  execute 'echo system("cd ..\\PROJECT_DIR && nmake")'
endfunction


При этом вывод make'а идет в том же окне, где код, таким же образом, как если, например, набрать :ls
Мне кажется, удобно, потому что смотришь в код и не теряешь контекст.
Upd. Это под Windows.

:make не просто компилирует проект, он еще и парсит вывод на ошибки компиляции и добавляет их в quickfix и можно прыгать по ним обычными :cnext и :cpre.

Кроме того, по сравнению с этим решением, экран не блокируется до того, как сборка полностью закончится, а плавно выплевывает весь вывод по ходу его поступления.

Ну и в моей системе, вывод потом всё равно разростается на весь экран и полностью закрывает собой код.

Хорошой альтернативой обычному make вижу только всякие background-make'и.
И еще одно. Для константных строк execute это то же самое, что и просто написать комманду.

То есть, эта функция эквивалентна вашей.
function! MakeProject()
  silent update
  echo system("cd ..\\PROJECT_DIR && nmake")
endfunction
А, понятно, в случае C и С++, наверное, удобнее как у вас. У меня просто другая ситуация — сборка обычно очень быстрая, вывод make'а короткий и содержит в основном информацию либо «Скомпилировалось ОК», либо «Ошибка на такой-то строке».
Вы можете попробовать настроить опцию errorformat и научить Vim прыгать прямо на место с ошибкой.
спс, вспомним былое.
ЗЫ: месяц как вернулся на vim в основном frontend
Пишу на C/C++ в Vim уже года 3. Другого уже и не надо. Добавлю свои пять копеек:

1. Попытки пересесть на Sublime привнесли в мой конфиг отличный плагин CtrlP (kien/ctrlp.vim)
2. Индексация ctags + vim-scripts/indexer.tar.gz (спасибо хабраюзеру dimonomid)
3. Частенько приходится работать через ssh, с помощью vim-scripts/CSApprox разница между gvim и vim почти полностью пропадает (главное не забыть выставить 'export TERM=xterm-256color'). А screen позволяет остановиться и продолжить с того же места в следующий раз.
4. Следуя за модной тенденцией vimrc можно разбить на отдельные части и сложить в директорию vimrcd, подгружая все содержимое с помощью:
:runtime! vimrc.d/*.vimrc

5. После поста Пора завязывать использовать пробелы вместо табуляции в коде хабраюзера TheShock Сделал себе такую штуку и забыл о проблеме пробелы\табуляция:
set list listchars=tab:>-,trail:.,extends:>,precedes:<

6. cmake/make и vim: все мои проекты на cmake, поэтому процесс разработки начинается так:
mkdir build
cd build
cmake ../
gvim ../*

Сборка из vim'а делается командой :mak, при этом если будут ошибки, vim встанет на нужную строчку. Переход к следующей выполняется командой :cnext
7. Раньше пользовался такой штукой как :mks для сохранения текущего состояния, но потом перешел на ssh и уже упомянутый screen.
3. Я в течении этого года отказался от gvim полностью, хотя раньше довольно яро отстаивал его использование. Причина довольно проста, наличие полноценного терминала под рукой перевешивает все плюсы gvim'а (из gvim не запустишь ncurses приложения и не сделаешь Ctrl-Z).

По поводу самого CSApprox. Я использую небезизвестную тему solarized, которая отлично ведет себя в консоле.

6. У меня тоже имеется парочка проектов на cmake, но эти шаги одноразовые при настройке проекта. После этого, вышеуказанной коммандой я говорю vim собирать из папки, где cmake создал makefile и всё работает просто чудестно.
Sign up to leave a comment.

Articles