Использование Vim при кодировании крупномасштабного приложения


17

Я начинаю изучать Vim и следую некоторым советам, данным здесь в stackexchange. Я начинаю использовать это в некоторых игрушечных проектах, и я крут с этим.
Но я начал задумываться о том, как вы можете работать продуктивно, не открывая все время другие файлы, просто чтобы узнать, как этот класс называется «Имя», что этот макрос включен в другой файл и т. Д. И т. Д. И т. Д.

Какие общие советы вы можете дать?


1
Вам обязательно нужно добавить несколько скриптов Vim, чтобы выручить. Я использую Vim для программирования много, и я всегда использую ctags, чтобы помочь мне перемещаться по исходному коду. Какой язык используете?
Технит

Ответы:


10

Один из аспектов опытных программистов, которые переходят из среды IDE в среду console / xterm, - это поиск замены для индексации объектов исходного кода (имен функций, переменных). Я считаю, что общий термин, используемый для Microsoft Visual Studio, - это Intellisense или что-то в этом роде.

В мире Unix / Linux, таких как vim, используется один инструмент if ctagsили популярная многоязычная реализация с открытым исходным кодом - обильные ctags . Он не является vimконкретным и поддерживается рядом текстовых редакторов Unix, Linux, MS Windows, Mac OS, включая Emacs, CRiSP, vile и ряд других клонов vi, nedit, gedit, JED, UltraEdit, BBEdit и DreamWeaver. (некоторые из них через сторонние плагины).

Помимо этого, хороший дизайн и продуманное разложение, организация более крупных проектов делает проект управляемым в том смысле, что есть только 1-2 очевидных потенциальных места, где можно найти какую-то конкретную информацию ( typedefили classопределения, и т. Д.).

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


1
+1 за предложение обильных ctags !
Аттила О.

1
Я считаю, что просто быть организованным очень помогает. Если вы можете посмотреть на артефакт в источнике и сказать «О, это должно быть определено в этом месте», то все становится намного проще. С другой стороны, запуск vim-сессий настолько быстр, что одновременное открытие с полдюжины становится довольно обычной вещью
Захари К

@ZacharyK Полдюжины? У меня обычно
целая

зависит от дня
Захари К

7

Я не собираюсь участвовать в дебатах VIM и IDE. Я полагаю, это личный преф. Но я использую много VIM, и вот почему я нахожу это очень мощным, чтобы использовать Vim

Две части ответа:

A. Большинство вещей, которые VIM позволяет делать большинство вещей, которые вы можете делать с IDE (я не пытаюсь описать каждую функцию, но лишь некоторые неочевидные, которые заставляют vi выглядеть ограниченно)

  1. вы можете пройти через прототипы, если вы ctagsвключили и делаетеctrl+{

  2. Вы можете открыть несколько окон одновременно. Команда sing: sp 'filename'. Конечно, иногда я просто открываю несколько терминалов, чтобы облегчить жизнь.

  3. Мощная подсветка синтаксиса. По умолчанию, а также другие вещи. Кроме того, в отличие от некоторых сред IDE, если есть несоответствие открытых скобок, строка или не совпадают с закрытыми, дает вам очень четкое указание. Это для большинства языков, а не конкретных.

  4. Вы можете выполнить командную строку, используя команду, ":!make"не выходя из окна.

  5. Пройдите намного быстрее на основе слова, на основе поиска (vi поддерживает регулярное выражение, если вы доступны), и вы можете пройти { к }, используяESC %

  6. Работать в GDB можно, выполняя пошаговую отладку и поддерживая vi (в другом окне для работы с кодом). Когда вы решите изменить файл, вы можете сделать снова и перезагрузить его в GDB.

B. Многие вещи, которые вы находите лучше в VIM

  1. Поиск и замена определенно намного мощнее.

  2. Вы можете создать свой собственный внешний вид и (черный + зеленый в отличие от белого + синего) и, что более важно, свою собственную мощную команду.

  3. Выбор вертикального блока. Попробуйте ctrl+vпереместить курсор вертикально. Это действительно невообразимая особенность!

  4. Звучит странно - но попробуйте вырезать / скопировать блок и пройти его 30 раз! Это займет не больше усилий, чем 1 раз. Кроме того, попробуйте повторить (а не отменить) действие один или несколько раз.

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

  6. Эффективный конфликт слияния с vimdiff.

  7. Самое главное в консольной рабочей среде - это то, что вы никогда не трогаете МЫШЬ! так что если вы быстро играете на ключевой доске, то IDE не годятся.

  8. Работа на нескольких машинах, серверах одновременно! Не кажется очевидным, но иногда, когда вы работаете на сервере, вы напрямую входите в систему на нескольких машинах и делаете что-то.

Ответят о том, как сделать в vi, если эти функции в серьезных требованиях. Смотрите этот сайт Vimcast . конечно, их много.

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


Небольшое примечание: в vim есть :makeвстроенная команда, вам даже не нужна !(которая для тех, кто не использует vim, выполняет команду на терминале). И я только что нашел ctrl-vпару недель назад, и теперь я использую его постоянно, это невероятно полезно.
Кевин

@Kevin - хорошо, я не знал о <code>: make </ code>! Это было интересно узнать. Это своего рода романтика, которую вы получаете с VIM - никто не может составить полный список функций, которые VIM может вам позволить !! Это всегда удивляет вас. Благодарю.
Дипан Мехта

Да, это так здорово. Преимущество :makeсостоит в том, что он автоматически перемещает вас к первой ошибке, и вы можете перемещаться по ним с помощью cnи cp, см :help make. Я на самом деле не осознавал этого, пока не посмотрел; Я обычно делаю в другом окне и pwd, кажется, что вы должны быть в том же самом файле, что и Makefile, хотя вы можете поместить его в каталог src, чтобы просто перейти в корень и сделать там.
Кевин

4

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

В качестве примера, я использую zencodingдля случайного редактирования HTML / CSS, snipmateдля Textmate подобных фрагментов, и паре питонов связанных дополнений ( pyflakes, pep8, vimpdbи т.д.) для Python кодирования, которая является то , что я делаю чаще всего.

Есть и другие аддоны, которые я редко использую, но я все еще нахожу их полезными время от времени, например, Dpasteи ConqueTerm.

Тем не менее, для меня наиболее полезными функциями Vim являются встроенные (отмена по времени, быстрая навигация, фильтры диапазона и т. Д.) - вещи, которые я не смог найти (или, по крайней мере, не так легко получить доступ) ) в IDE. Поэтому, как только вы настроите свой Vim так, чтобы в нем были нужные вам кусочки IDE ( snipmate, ctags...), вы можете получить выгоду как от среды IDE, так и от консоли.

Я использую Vim только для консоли, поэтому я не могу сказать, насколько полезны эти инструменты с Gvim.

Несмотря на всю аддонскую доброту, я все еще бегаю !grep ...или ^Z + find ...время от времени.


3

Я делаю все свое программирование в VIM. Я на самом деле нахожу это проще, чем любая IDE, которую я использовал. Вы можете открыть несколько файлов одновременно, даже на одном экране (посмотрите вкладки и окна). Обычно я работаю в X, поэтому у меня открыто несколько (6) экранов xterm: один для c-файлов в vim (несколько на вкладках), другой для заголовков в vim (также с вкладками) и не-vim окна: build, debug , конфигурации и т. д. Даже когда я на чистой консоли, я могу использовать вкладки, окна и свертывание кода, чтобы увидеть, что мне нужно, и я могу создавать и даже просматривать man-страницы, не выходя из vim, вам просто нужно знать правильные команды. И их так много, я уверен, что даже половину из них не освоил. И трудно превзойти поиск и замену vim.


1

Многие крупномасштабные приложения были (моего, по крайней мере, два;), и я думаю, многие другие будут полностью написаны на Vim. IDE как таковые - все еще довольно современная инновация , так сказать.

Тем не менее, простой ванильный vi (ой) или Vim немного не хватает. Знание Vim и продумывание некоторых его способов немного помогают, а плагины очень помогают , для чего www.vim.org является бесконечным источником. Некоторые специфические для используемого вами языка, а некоторые общие (для комментирования, для просмотра файлов, для ...) быстро превращают его в очень быструю среду разработки. В конце концов (и некоторые наверняка будут утверждать), IDE - это просто редактор с плагинами, упакованными в более приятный интерфейс. В IDE тоже не так много графического материала.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.