LINUX.ORG.RU

VIM как IDE для ______

 


11

2

Какие плагины вы используете, чтобы превратить vim в IDE для ________ (вписать язык)?

Интересует:

  1. Автодополнение. В частности, умное семантическое.
  2. Форматирование. В частности, автоматическое при сохранении буфера.
  3. Проверка компилируемости кода для компилируемых ЯП, проверка корректности для интерпретируемых ЯП.
  4. Статический анализ кода (lint). Предупреждения о неиспользуемых переменных. Предупреждения о неканоничном форматировании кода. И т. д.
  5. Просмотр документации к функции, методу и т. д. под курсором.
  6. Переход к определению функции (метода, класса и т. д.) под курсором.
  7. Рефакторинг (переименование функций, методов, классов и т. д.).
  8. Сниппеты.
  9. Компиляция/запуск. Точки останова. Запуск тестов.
  10. Заливка кусков кода на сайты для обмена, вроде gist.github.com или play.golang.org.

И общее для всех языков:

  • Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.
  • Go anywhere (CtrlP, Command-T или FuzzyFinder?)

Ссылки:

VIM как python IDE.

1. neco-ghc

2. Ненужно

3. syntastic

4. syntastic

5. Ненужно

6. Ненужно

7. Ненужно

8. Ненужно

9. Ненужно. Ненужно. guard (не в виме, но в соседнем терминале)

10. Ненужно

anonymous ()

Рассказываю как сделать из vim ide:

1. Переходим в командный режим 2. Набираем:

:! $IDE

где $IDE - прописанный в вашем окружении eclipse, idea, geany или любое другое ide, которое вам нравится.

Спасибо за внимание.

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

Нынче IDE очень таки неплохо пишут код сами. Но автор хочет невозмож^W сделать из текстового редактора IDE.

Insomnium ★★★★ ()
  1. не нужно
  2. set autoindent on
  3. см. 9, в ином виде не нужно
  4. см. 9, в ином виде не нужно
  5. не нужно, документация открыта в отдельном окне
  6. не нужно в принципе
  7. не представляю кем надо быть чтобы не осилить с первого раза дать название классу/методу, но если что - sed
  8. понятия не имею что это
  9. cmake, make, gdb, ctest, scan-build, lint в самостоятельном терминале
  10. !<motion> pastebinit
slovazap ★★★★★ ()

А может не надо? Я конечно всячески поддерживаю использование Vim, но ведь не в такой извращённой форме. Тащить в него элементы IDE означает вредить себе же, так как они рассчитаны на другой тип окружения, в котором всё связанно со всем. Намного лучшая идея — использовать Unix как IDE.

И вообще, для кого Брам писал документацию?

VIM IS... NOT						*design-not*

- Vim is not a shell or an Operating System.  You will not be able to run a
  shell inside Vim or use it to control a debugger.  This should work the
  other way around: Use Vim as a component from a shell or in an IDE.
  A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
  everything but the kitchen sink, but some people say that you can clean one
  with it.  ;-)"
 To use Vim with gdb see:	http://www.agide.org and	http://clewn.sf.net.
- Vim is not a fancy GUI editor that tries to look nice at the cost of
  being less consistent over all platforms.  But functional GUI features are
  welcomed.
xaizek ★★★★★ ()

На самом деле, в общем плане, можно ответить универсальными дополнениями и решениями, а вот более глубоко лучше создавать по каждому языку/технологии отдельную тему, для предметного и глубоко обсуждения, что я и планирую сделать в посте «Профессиональная веб-разработка в Vim», который готовлю уже 2-ю неделю, где будет подробно обговариваться полный цикл разработки на html/css/препроцессоры/javascript-related.

Универсальными же решениями являются:

1. Тяжелый и громоздкий YCM или легкий, быстрый и не менее продвинутый neocomplete.

---

2. Универсальный vim-autoformat, который работает с основными автоформатерами и beautify'ерами, например для JavaScript:

noremap  <F8>   :Autoformat<CR><CR>
vnoremap <C-F8> gq

let g:formatprg_args_javascript = "-j -q -B -f -"
по 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. (Не работаю с компилируемыми языками, не подскажу), для тестов много чего есть, более конкретно нужно говорить по языкам.

---

10. Для Gist конечно же gist-vim, для sprunge.us есть свой, для bpaste тоже где-то валялся.

---

Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.

Ну простейшее же: :vimgrep XXX и смотреть в :cw , но есть чуть более универсальные vim-signature и TurboMark

---

Go anywhere (CtrlP, Command-T или FuzzyFinder?)

на reddit'е свежий вброс на эту тему, где сошлись авторы разных fuzzyfinder'ов (fzf, Command-T и др.) и педалируют тему.

clojure ()

1. не пользуюсь
2. :h =
3. :h mak
4. man gcc
5. не пользуюсь (man + google)
6. :h tag + ctags/cscope
7. не пользуюсь (sed)
8. не пользуюсь
9. :h mak + кейбинд для запускания в конфиге
10. не пользуюсь

Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.

не пользуюсь (grep)

Go anywhere (CtrlP, Command-T или FuzzyFinder?)

:h tag

waker ★★★★★ ()

Vim как универсальный менеджер паролей.

Есть машина с доступом по ssh, в ней vim, настроенный по этому мануалу. Очень доволен! KWallet остался для приложений, для людей (т.е. меня) есть vim + gnupg.

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

1. https://github.com/Rip-Rip/clang_complete + самописные биндинги А-ля au FileType c,cc,h inoremap ...

2. set autoindent on

3, 4. http://www.vim.org/scripts/script.php?script_id=2736

5. http://www.vim.org/scripts/script.php?script_id=614

6,7. http://cscope.sourceforge.net/ http://www.vim.org/scripts/script.php?script_id=273 + встроенный функционал (:help object-motions, регулярки и т.д.)

8. http://www.vim.org/scripts/script.php?script_id=2540

9. Самописные(или где-то нагугленные, не помню) функции

10. https://github.com/tpope/vim-fugitive

Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.

taglist + встроенная навигация

P.S.: Use emacs, it's better

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

что я и планирую сделать в посте «Профессиональная веб-разработка в Vim», который готовлю уже 2-ю неделю, где будет подробно обговариваться полный цикл разработки на html/css/препроцессоры/javascript-related.

Нужно!

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

P.S.: Use emacs, it's better

Без педали (а лучше двух, для Alt и Ctrl) в имакс лучше не соваться.

anonymous ()

1. gocode (входит в состав vim-go) + neocomplete/YCM

2. goimports/gofmt (используется в vim-go)

3. vim-go

4. golint, errcheck (используются в vim-go)

5. vim-go

6. godef (входит в состав vim-go) + gotags, а также tagbar

7. gofmt

8. UltiSnips

9. vim-go

10. vim-go

anonymous ()

Автодополнение. В частности, умное семантическое.

YouCompleteMe, но плагин тормозной и прожорливый.

Форматирование. В частности, автоматическое при сохранении буфера.

Выбрать диапазон, нажать =

Проверка компилируемости кода для компилируемых ЯП, проверка корректности для интерпретируемых ЯП.

Может syntastic устроит.

Статический анализ кода (lint). Предупреждения о неиспользуемых переменных. Предупреждения о неканоничном форматировании кода. И т. д.

Зачем это в редакторе нужно?

Просмотр документации к функции, методу и т. д. под курсором.

Переход к определению функции (метода, класса и т. д.) под курсором.

кнопочка K на кейворде.

Рефакторинг (переименование функций, методов, классов и т. д.).

Делаю вручную, но есть плагин для этого.

Сниппеты.

Ultisnip.

Компиляция/запуск.

Makefile с правилами + хоткей в .vimrc

Точки останова.

pyclewn.

Запуск тестов.

Снова Makefile

Заливка кусков кода на сайты для обмена, вроде gist.github.com или play.golang.org.

Есть плагин, но нафиг он нужен мне не понятно.
А для работы с VCS есть разные плагины. Тоже не пользуюсь, в консоли удобнее.

И общее для всех языков:

Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.

TaskList

Go anywhere (CtrlP, Command-T или FuzzyFinder?)

От фуззи отказался давно в пользу CtrlP.

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

Умеет искать только в текущем файле.

Ну тогда grep, vimgrep.

andreyu ★★★★★ ()

Странная перепись населения

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