LINUX.ORG.RU

Vim для разработки

 , , , ,


1

3

Хочу писать код в vim. Код на Vala, подсвечивается хорошо. Хотелось бы иметь автоформатирование, автодополнение, шорткаты для компиляции и отладки. Стоит ли использовать automake? Какой стиль форматирования кода предпочтительнее для Vala? Как труёвее отлажвать?

★★★★★

автоформатирование

=

автодополнение

Ctrl+p

UVV ★★★★★
()

Стоит ли использовать automake?

Набор макросов есть под небольшое число систем сборки. Под autotools и под cmake есть. Так что выбирай из них.

Конфиг для включения подсветки в виме есть по той же ссылке из начала поста.

kim-roader ★★
()
Последнее исправление: kim-roader (всего исправлений: 1)

автоформатирование

В .vimrc:

augroup filetype_vala
au FileType vala setlocal expandtab
au FileType vala setlocal tabstop=2
au FileType vala setlocal softtabstop=2
au FileType vala setlocal shiftwidth=2
au FileType vala setlocal smarttab
au FileType vala setlocal autoindent smartindent
augroup END

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

автодополнение

А вот с этим для vala проблемы. По-крайней мере я не знаю чего-то конкретного, но можно сделать свои кейбиндинги.

Небольшой пример для Си:

au FileType c,cc,h inoremap {<CR> {<CR>}<Esc>O
au FileType c,cc,h inoremap #m int main(int argc, char * argv[]) {<CR>return 0;<CR>}<CR><Esc>2kO
au FileType c,cc,h inoremap #d #define 
au FileType c,cc,h inoremap #e #endif /*  */<Esc>hhi
au FileType c,cc,h inoremap #" #include ""<Esc>i
au FileType c,cc,h inoremap #< #include <><Esc>i
au FileType c,cc,h inoremap #f /* FIXME:  */<Esc>hhi
au FileType c,cc,h inoremap #t /*TODO:  */<Esc>hhi

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

Ну и Ctrl+p, как сказали выше. Подойдёт для дополнения ранее использовавшихся в тексте слов. Можно повесить на tab, можно сделать с менюшкой.

function InsertTabWrapper()
      let col = col('.') - 1
      if !col || getline('.')[col - 1] !~ '\k'
        return "\<tab>"
      else
        return "\<c-p>"
      endif
endfunction
imap <tab> <c-r>=InsertTabWrapper()<cr>
set complete=""
set complete+=. 

set wildmenu 

Увы, не работает с русским языком, но оно и не нужно(может, как-то решается, но лень, ибо давно уже на имаксе сижу).

шорткаты для компиляции и отладки

Пишется простая функция. Или гуглится за пару минут.

А ещё рекомендую поставить taglist(плагин, для перехода по функциям, переменным и т.д.), ну и врубить всякие подсветки текущей строки и прочее.

raven_cler ★★
()
Ответ на: комментарий от kim-roader

Подсветка у меня работает. Из систем сборки я выбирал между autotools и cmake, склонился к autotools, теперь выбираю использовать его или нет.

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

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

Rastafarra ★★★★
()

:help

там очень много интересного.

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

Увы, не поддерживает.

Хотя вроде попадался какой-то там форк, можно поискать.

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