LINUX.ORG.RU

Сделать из vim C++ IDE, подскажите, пожалуйста, список дополнений

 ,


7

9

Предъистория: несколько раз пытался пользоваться vim и каждый раз бросал. Всякий раз он мне казался неудобным. В этот раз плюнул на стандартные настройки, перенастроил его по-нормальному и да, теперь им сходу стало можно пользоваться как редактором текста. В частности: перенёс перемещение курсора с hjkl на esdf и esc на shift+space. Также, курсор при движении влево-вправо теперь не останавливается на конце строки.

Вимом стало возможно нормально пользоваться! Теперь, я хочу затюнить его под С++ кодинг.

Для этого мне минимально необходим следующий функционал:

  • переключение между заголовочником и исходником,

  • переход к определению функции под курсором,

  • переход к объявлению функции под курсором,

  • переход к предыдущей позиции курсора (не используя закладки),

  • плагин для содержащания файлов проектах,

  • переход к файлу, указанному директивой include под курсором,

  • аналог вкладок в других редакторах и переключение между ними,

  • подсветка синтаксиса,

  • подсветка всех слов аналогичных тому, что под курсором (по клавише),

  • инкрементальный поиск,

  • поиск во всех файлах проекта с подсветкой найденного,

  • переименование метода класса в исходнике с автоматическим изменением сигнатуры в заголовочнике,

  • astyle (ну это просто),

  • автодополнение (уже подсказали в другой теме, не пишите про него),

  • дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),

  • листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).

  • Ну и, конечно, сохранение/открытие проекта, быстрый запуск компилятора и скомпилированного файла.

Ну вот и всё. Вроде ничего не забыл.

★★★★★

Последнее исправление: next_time (всего исправлений: 3)
Ответ на: комментарий от next_time

мог не кастовать, я топик сразу начал читать т.к. подписан на тег, но как только дочитал до:

hjkl на esdf
перестал читать, мне тебе посоветовать нечего.







// шутка конечно, дело твое, в общем я с C/C++ не работаю, только с Go, а там отдельный, фантастический IDE-плугин, единственное что могу порекомендовать универсального, это перейти на neovim и использовать deoplete + neoinclude.

Вообще был когда-то такой IDE-плугин «a.vim», так и назывался вроде «C IDE», но каково с ним работать мне неизвестно, жди andreyu, например.

kep
()
Ответ на: комментарий от tailgunner

нет, но мышку, например, мне без разницы, в какой руке держать. esdf просто более привычен по другим приложениям и интуитивно более ясен, благодаря стрелочноподобию.

next_time ★★★★★
() автор топика

Сделать из vim C++ IDE

удалить vim, накатить emacs, на последний spacemacs если хочешь совсем из коробки, с вимоподобными хоткеями, и чтобы работало

если хочешь именно vim, то уже сказали про yavide, вроде больше и нечего советовать

f1u77y ★★★★
()
Ответ на: комментарий от next_time

стрелочноподобию

так hjlk это тоже стрелки, ты просто не понял:

  • h — влево, потому что левая
  • j — вниз, потому что j как-бы показывает вниз
  • l — вправо, потому что правая

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

esdf

но как же это так, как же ты будешь удалять (d), искать (f), переходить к концу слова (e)? Эти движения архичасто используются как в моушинах, так и сами по себе.

Это вообще не серьезно, это не вим получается, а какая-то параша голимая.

kep
()
Ответ на: комментарий от kep

как в моушинах, так и сами по себе.

и в макросах тоже.

kep
()
Ответ на: комментарий от kep

так hjlk это тоже стрелки, ты просто не понял:

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

удалять (d), искать (f), переходить к концу слова (e)

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

next_time ★★★★★
() автор топика
Ответ на: комментарий от deadNightTiger

круто, спасибо. вопрос: а там есть «переход к предыдущей позиции курсора (не используя закладки)» ?

next_time ★★★★★
() автор топика

Сделать_из_хлеба_троллейбус.jpg

Pavval ★★★★★
()
Ответ на: комментарий от next_time

Да, " перемещает курсор только между последней и текущей позицией. Если нужно больше, то Ctrl-I/Ctrl-O.

anonymous
()

переход к предыдущей позиции курсора (не используя закладки),

ctrl + O в нормальном режиме же.

pon4ik ★★★★★
()

перенёс перемещение курсора с hjkl на esdf и esc на shift+space

не думай что ты умнее всех. закончится это печально: либо ты не поймешь сути вима и снова забросишь — просто потому что будешь продолжать пользоваться «стрелочками» для перемещения, либо поймешь и тогда прийдется переучиваться по-жесткому.

вообще, судя по твоим сообщениям, тебя ждет vimtutor как минимум.

по пунктам:

переключение между заголовочником и исходником,

a.vim или :e %<.c и :e %<.h

переход к определению функции под курсором,
переход к объявлению функции под курсором,

с ctags, ctrl-], в пределах файла gd или по вкусу g] (go to tag definition).

переход к предыдущей позиции курсора (не используя закладки),

``, ctrl-i/ctrl-o

плагин для содержащания файлов проектах,

что такое «содержащания файлов проектах»? вангую nerdtree, tagbar или ctrlp

переход к файлу, указанному директивой include под курсором,

gf

аналог вкладок в других редакторах и переключение между ними,

:help buffers

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

подсветка синтаксиса,

:syntax on

подсветка всех слов аналогичных тому, что под курсором (по клавише),

#

инкрементальный поиск,

:set incsearch

поиск во всех файлах проекта с подсветкой найденного,

ag.vim

astyle (ну это просто),

:!astyle %, но вообще autoformat.vim

дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),

pyclewn

листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).

:make

Ну и, конечно, сохранение/открытие проекта, быстрый запуск компилятора и скомпилированного файла.

хз что именно ты хочешь, но вангую :help session и :make

val-amart ★★★★★
()

Ещё, традиционно порекомендую всем как и всем вимо крестоводам - rtags, для навигации по коду и хоть и тухленького но комплита.

Ещё unite полезная штука. Но эт если ты любишь qtc и/или idea и хоткеи.

pon4ik ★★★★★
()
Ответ на: комментарий от ns_ramesses

Зато у unite есть api которое ещё мульён плагинов поддерживают.

А хоткеи всё равно можно настроить любые.

pon4ik ★★★★★
()

переход к предыдущей позиции курсора (не используя закладки),

Вопрос обширный, так как «предыдущая пощиция курсора» - не совсем чёткое понятие.

Есть `. - переход к последнему месту, где ты изменял текст (где ты вышел из insert mode). Удобно и мотивирует почаще выходить из insert mode :)

аналог вкладок в других редакторах и переключение между ними,

tabnew
tabe <filename>
tab drop <filename>
" Handy keybindings
nmap <A-Left> :tabprev<CR>
nmap <A-Right> :tabnext<CR>
nmap <A-Up> :bprev<CR>
nmap <A-Down> :bnext<CR>


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

подсветка всех слов аналогичных тому, что под курсором (по клавише),

* или #. Что есть слово - настраивается.

инкрементальный поиск,

После поиска первого совпадения: n и N
Или ты о :set incsearch?

листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).

Если ти компилишь с помощью make, то (часть моего конфига)

" After using :vimgrep or :make - switch results:
map <C-j> :cn<CR>
map <C-k> :cp<CR>


esdf просто более привычен по другим приложениям

О, да ты еще не используешь толком vim!
Я, например, уже жить не могу без t/T/f/F
Удалить до буквы 'a': dta
Удалить до буквы 'a' вместе с буквой: dfa
Удалить от буквы 'a' вместе с буквой: dFa
Удалить до 3-й буквы 'a': dta..
Перейти к букве 'а': ta
Перейти к 5-й букве 'a': ta;;;;

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 2)
Ответ на: комментарий от ns_ramesses

А ещё дефолтный биндинг там весь на ctrl :)

pon4ik ★★★★★
()

переключение между заголовочником и исходником,

fswitch

переход к определению функции под курсором,
переход к объявлению функции под курсором,

ctags, cscope, gnu-что-то или плагины, которые парсят код, но они обычно медленные, много жрут и дальше текущего файла не лезут, да и трудности с флагами сборки ещё будут.

плагин для содержащания файлов проектах,

Искать на http://www.vim.org, там много было (у меня не прижилось).

переход к файлу, указанному директивой include под курсором,

Стандартное gf, но в 'path' должны быть -I прописаны.

подсветка синтаксиса,

syntax on

Для С++11 и выше, возможно, что-то надо будет добавлять, не уверен (у меня что-то лежало для этого).

подсветка всех слов аналогичных тому, что под курсором (по клавише),

Там вообще бардак, но 1 & 2. # ещё и прыгнет.

поиск во всех файлах проекта с подсветкой найденного,

Это может зависить от плагина для проектов. Вообще же :vimgrep /what/ **/*.cpp.

переименование метода класса в исходнике с автоматическим изменением сигнатуры в заголовочнике,

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

astyle (ну это просто),

Да, просто.

дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),

Всякие гибриды были, но их польза сомнительна, может проще будет что-то вроде cgdb.

листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).
быстрый запуск компилятора и скомпилированного файла.

:make и оно появится (потом :cn, :cp и подобные команды для QuickFix list).

Ну и, конечно, сохранение/открытие проекта

Есть vim-session и аналогичные.

Вообще это привычки от IDE, часть со временем отпадёт в пользу более универсальных вещей, но для многого пилят плагины, так что искать на http://www.vim.org

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 3)
Ответ на: комментарий от xaizek

Всякие гибриды были, но их польза сомнительна, может проще будет что-то вроде cgdb.

Кстати, никогда не понимал, зачем в одно запущенное в терминале окно Vim нужно тащить всё, включая дебаггер. Проще на соседнем мониторе запустить cgdb. Это юниксвэйно.

ns_ramesses
()

Но всё таки, интересно, как все советчики, обходят тему отладки :)

В том же emacs с этим немного получше дела обстоят. Для сабжа есть pyclewn. Лично я так и не заставил себя им пользоваться и юзаю консольные lldb и gdb когда надо.

pon4ik ★★★★★
()

Топикстартер, рекомендую тебе следующие плагины:

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'
(самый важный плагин: кидает ворнинги, если в файле используются и пробелы, и табы, а также кидает ворнинги, если в конце какой-то строки есть пробелы или табы)

ns_ramesses
()

Из vim никак не сделать IDE, тем более для плюсов. Это текстовый редактор.

Весь набор костылей, который успели насоветовать — наколенные поделки народных умельцев, которые

  • криво работают
  • конфликтуют друг с другом
  • периодически отсыхают после очередного обновления

Если тебе нужна именно IDE, категорически не рекомендую vim/emacs. Если задаться целью, можно добиться какого-то более-менее удобоваримого варианта, но оно не стоит затраченных усилий и все равно проигрывает нормальным IDE в удобстве и фичастости.

kawaii_neko ★★★★
()
Последнее исправление: kawaii_neko (всего исправлений: 1)
Ответ на: комментарий от kawaii_neko

Я когда-то давно использовал vim-плагин для Microsoft Visual Stuido, когда на си-шарп писал. Плевался от ярости, постоянно натыкался на недостаток фич и отсутствие привычного функционала.

ns_ramesses
()
Ответ на: комментарий от ns_ramesses

Хорошая вещь или говно?

я не кеп, но у меня не прижилось. комбайн-тормозилла. запускаю pyflakes, lint и такое прочее по make lint по хоткею.

А ты не знаешь, как сделать так, чтобы ack.vim и ag.vim во время поиска не гадили в терминал?

не знаю. наверное, через neovim, у него можно удобно асинхронно запускать подпроцесс.

val-amart ★★★★★
()
Ответ на: комментарий от ns_ramesses

Терь я понял че у тебя с глазами на аве:)

Plug 'morhetz/gruvbox'

Сиё же тупо тема. Ну точнее набор тем.

Для подсветки есть например vim polyghlot. Это конечно не семантическая подсветка (для крестов всё к этому идёт) но тоже лучше чем дефолт.

pon4ik ★★★★★
()
Ответ на: комментарий от val-amart

Надо поставить какой то из «асинхронных» плагинов для vim. vimproc или чет в таком духе, у меня их стоит несколько, я х3 какой из них поддерживает именно ack.vim который я юзаю (в купе с ag).

pon4ik ★★★★★
()
Ответ на: комментарий от kawaii_neko

Вот!

Первый человек который дело говорит. Хорошая ide для крестов это unix же :)

pon4ik ★★★★★
()
Ответ на: комментарий от ns_ramesses

если делиться плагинами, то я бы добавил easymotion, surround, extended-ft, bracketed-paste, и vimux + vimux-paster из основных для меня.

val-amart ★★★★★
()
Ответ на: комментарий от ns_ramesses

Да, конечно. Пару лет использовал когда занимался вебом, например чекеры для sass и т.п.

Plug 'scrooloose/syntastic', { 'for': ['ruby','css', 'scss', 'javascript', 'haml'] }
let g:syntastic_auto_jump           = 1
let g:syntastic_error_symbol        = '✖'
let g:syntastic_warning_symbol      = '►'
let g:syntastic_javascript_checkers = ['jshint'   ]
let g:syntastic_ruby_checkers       = ['rubylint' ]
let g:syntastic_haml_checkers       = ['haml-lint']
let g:syntastic_scss_checkers       = ['scss_lint']
let g:syntastic_css_checkers        = ['csslint'  ]
let g:syntastic_css_csslint_args    = "--ignore=zero-units"
let g:syntastic_html_checkers       = ['tidy'     ]

Но из-за того, что обычный вим однопоточный, автору плагина не удалось запилить нормальный асинхрон, проверку без сохранения и многое другое, что теперь можно спокойно запилить в neovim, но что-то я смотрю он не чешится, хотя обещал. Впрочем я уже не слежу за этим плагином, потому что не работаю ни с чем, где бы он мог пригодится. Для Go есть vim-go.

Хорошая вещь или говно?

Нормальная, но может надоесть.

kep
()
Ответ на: комментарий от ns_ramesses

Кто щупал?

Брэм Мельник и прочие разрабы? Оно ведь только запланировано, вроде как коммитов еще нет, но это не точная инфа, в общем версии такой еще не было.

kep
()
Ответ на: комментарий от ns_ramesses

Я когда-то давно использовал vim-плагин для Microsoft Visual Stuido, когда на си-шарп писал. Плевался от ярости, постоянно натыкался на недостаток фич и отсутствие привычного функционала.

То, что в MSVS херовый плагин эмуляции vim еще не означает, что vim хорошо эмулирует фичи Visual Studio. Более того, эмуляцию vim сделать проще, чем полноценную IDE.

kawaii_neko ★★★★
()
Ответ на: комментарий от kawaii_neko

эмуляцию vim сделать проще, чем полноценную IDE.

а где сделана нормальная эмуляция vim, где можно посмотреть?

kep
()
Ответ на: комментарий от kep

незнаю чем он лучше, у меня свой форк vimux'а который работает через стабильные #I.#P а не обычные индексы как дефолтный вимукс, и всем меня устраивает.

val-amart ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.