Я начинаю изучать Vim и следую некоторым советам, данным здесь в stackexchange. Я начинаю использовать это в некоторых игрушечных проектах, и я крут с этим.
Но я начал задумываться о том, как вы можете работать продуктивно, не открывая все время другие файлы, просто чтобы узнать, как этот класс называется «Имя», что этот макрос включен в другой файл и т. Д. И т. Д. И т. Д.
Какие общие советы вы можете дать?
vim
large-scale-project
Matias
источник
источник
Ответы:
Один из аспектов опытных программистов, которые переходят из среды 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 (в основном для перемещения или рефакторинга кода между файлами). Я считаю, что использование только нескольких исходных файлов, открытых за один раз, может помочь маленьким способом, чтобы держать меня сосредоточенным на задаче.источник
Я не собираюсь участвовать в дебатах VIM и IDE. Я полагаю, это личный преф. Но я использую много VIM, и вот почему я нахожу это очень мощным, чтобы использовать Vim
Две части ответа:
A. Большинство вещей, которые VIM позволяет делать большинство вещей, которые вы можете делать с IDE (я не пытаюсь описать каждую функцию, но лишь некоторые неочевидные, которые заставляют vi выглядеть ограниченно)
вы можете пройти через прототипы, если вы
ctags
включили и делаетеctrl+{
Вы можете открыть несколько окон одновременно. Команда sing: sp 'filename'. Конечно, иногда я просто открываю несколько терминалов, чтобы облегчить жизнь.
Мощная подсветка синтаксиса. По умолчанию, а также другие вещи. Кроме того, в отличие от некоторых сред IDE, если есть несоответствие открытых скобок, строка или не совпадают с закрытыми, дает вам очень четкое указание. Это для большинства языков, а не конкретных.
Вы можете выполнить командную строку, используя команду,
":!make"
не выходя из окна.Пройдите намного быстрее на основе слова, на основе поиска (vi поддерживает регулярное выражение, если вы доступны), и вы можете пройти { к }, используя
ESC %
Работать в GDB можно, выполняя пошаговую отладку и поддерживая vi (в другом окне для работы с кодом). Когда вы решите изменить файл, вы можете сделать снова и перезагрузить его в GDB.
B. Многие вещи, которые вы находите лучше в VIM
Поиск и замена определенно намного мощнее.
Вы можете создать свой собственный внешний вид и (черный + зеленый в отличие от белого + синего) и, что более важно, свою собственную мощную команду.
Выбор вертикального блока. Попробуйте
ctrl+v
переместить курсор вертикально. Это действительно невообразимая особенность!Звучит странно - но попробуйте вырезать / скопировать блок и пройти его 30 раз! Это займет не больше усилий, чем 1 раз. Кроме того, попробуйте повторить (а не отменить) действие один или несколько раз.
Автоматический отступ, управление вкладками и автоматический способ конвертировать ваши комментарии в блочные комментарии или комментарии определенного стиля.
Эффективный конфликт слияния с vimdiff.
Самое главное в консольной рабочей среде - это то, что вы никогда не трогаете МЫШЬ! так что если вы быстро играете на ключевой доске, то IDE не годятся.
Работа на нескольких машинах, серверах одновременно! Не кажется очевидным, но иногда, когда вы работаете на сервере, вы напрямую входите в систему на нескольких машинах и делаете что-то.
Ответят о том, как сделать в vi, если эти функции в серьезных требованиях. Смотрите этот сайт Vimcast . конечно, их много.
Но да, большинство консольных вещей старомодно, и я ни в коем случае не говорю против IDE.
источник
:make
встроенная команда, вам даже не нужна!
(которая для тех, кто не использует vim, выполняет команду на терминале). И я только что нашелctrl-v
пару недель назад, и теперь я использую его постоянно, это невероятно полезно.:make
состоит в том, что он автоматически перемещает вас к первой ошибке, и вы можете перемещаться по ним с помощьюcn
иcp
, см:help make
. Я на самом деле не осознавал этого, пока не посмотрел; Я обычно делаю в другом окне и pwd, кажется, что вы должны быть в том же самом файле, что и Makefile, хотя вы можете поместить его в каталог src, чтобы просто перейти в корень и сделать там.На мой взгляд, Vim предоставляет вам очень сильный редактор с базовыми функциями, но вам нужно добавить в него скрипты / дополнения, которые вы, скорее всего, будете использовать в своих проектах. Вероятно, они будут разными в зависимости от того, редактируете ли вы в основном скрипты, документацию или файлы, которые необходимо скомпилировать.
В качестве примера, я использую
zencoding
для случайного редактирования HTML / CSS,snipmate
для Textmate подобных фрагментов, и паре питонов связанных дополнений (pyflakes
,pep8
,vimpdb
и т.д.) для Python кодирования, которая является то , что я делаю чаще всего.Есть и другие аддоны, которые я редко использую, но я все еще нахожу их полезными время от времени, например,
Dpaste
иConqueTerm
.Тем не менее, для меня наиболее полезными функциями Vim являются встроенные (отмена по времени, быстрая навигация, фильтры диапазона и т. Д.) - вещи, которые я не смог найти (или, по крайней мере, не так легко получить доступ) ) в IDE. Поэтому, как только вы настроите свой Vim так, чтобы в нем были нужные вам кусочки IDE (
snipmate
,ctags
...), вы можете получить выгоду как от среды IDE, так и от консоли.Я использую Vim только для консоли, поэтому я не могу сказать, насколько полезны эти инструменты с Gvim.
Несмотря на всю аддонскую доброту, я все еще бегаю
!grep ...
или^Z + find ...
время от времени.источник
Я делаю все свое программирование в VIM. Я на самом деле нахожу это проще, чем любая IDE, которую я использовал. Вы можете открыть несколько файлов одновременно, даже на одном экране (посмотрите вкладки и окна). Обычно я работаю в X, поэтому у меня открыто несколько (6) экранов xterm: один для c-файлов в vim (несколько на вкладках), другой для заголовков в vim (также с вкладками) и не-vim окна: build, debug , конфигурации и т. д. Даже когда я на чистой консоли, я могу использовать вкладки, окна и свертывание кода, чтобы увидеть, что мне нужно, и я могу создавать и даже просматривать man-страницы, не выходя из vim, вам просто нужно знать правильные команды. И их так много, я уверен, что даже половину из них не освоил. И трудно превзойти поиск и замену vim.
источник
Многие крупномасштабные приложения были (моего, по крайней мере, два;), и я думаю, многие другие будут полностью написаны на Vim. IDE как таковые - все еще довольно современная инновация , так сказать.
Тем не менее, простой ванильный vi (ой) или Vim немного не хватает. Знание Vim и продумывание некоторых его способов немного помогают, а плагины очень помогают , для чего www.vim.org является бесконечным источником. Некоторые специфические для используемого вами языка, а некоторые общие (для комментирования, для просмотра файлов, для ...) быстро превращают его в очень быструю среду разработки. В конце концов (и некоторые наверняка будут утверждать), IDE - это просто редактор с плагинами, упакованными в более приятный интерфейс. В IDE тоже не так много графического материала.
источник