Використання Vim при кодуванні масштабного додатку


17

Я починаю вивчати Vim і дотримуюся деяких порад, наведених тут у stackexchange. Я починаю використовувати його в деяких іграшкових проектах і мені це здорово.
Але я почав замислюватися, як ти можеш бути продуктивним, не відкриваючи інших файлів весь час, просто щоб знати, як це ім’я класу?

Які поширені поради ви можете дати?


1
Вам обов'язково потрібно додати кілька сценаріїв Vim, щоб допомогти. Я використовую Vim для програмування багато, і я завжди використовую ctags, щоб допомогти мені орієнтуватися по вихідному коду. Якою мовою користуєтесь?
tehnyit

Відповіді:


10

Одним з аспектів досвідчених програмістів, які переходять від IDE до консолі / xterm середовища, є пошук заміни для індексації об'єктів вихідного коду (назви функцій, змінних). Я вважаю, що загальним терміном, що використовується для Visual Studio Microsoft, є Intellisense або щось подібне.

У світі Unix / Linux, наприклад, vim, один інструмент, що використовується якщо 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 настільки швидкий, що відкрити півдюжини відразу стає цілком нормальною справою
Zachary K

@ZacharyK Півдесятка? У мене зазвичай до десятка до кінця дня
Ізката

залежить від дня
Захарій К

7

Я не збираюся бути учасником дебатів VIM проти IDE. Я здогадуюсь, що це особистий преф. Але я використовую багато VIM, і ось чому я вважаю його дуже потужним для використання vim

Дві частини відповіді:

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

  1. ви можете перейти прототипи, якщо ви ctagsввімкнули та зробилиctrl+{

  2. Ви можете відкрити кілька вікон одночасно співати: sp "команда" ім'я файлу ". Звичайно, колись я просто відкриваю кілька терміналів, щоб зробити життя простішим.

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

  4. Ви можете виконати командний рядок за допомогою команди, ":!make"не виходячи з вікна.

  5. Швидше пересуватися на основі слова, заснованого на пошуку (vi підтримка regexp, якщо у вас є), і ви можете переходити { до }, використовуючиESC %

  6. Можна виконувати роботу в GDB, роблячи налагодження кроку та зберігання vi (в іншому вікні для роботи над кодом). Коли ви вирішите змінити файл, ви можете зробити його знову і перезавантажити його в GDB.

В. Багато речей, які вам здаються кращими у VIM

  1. Пошук і заміна, безумовно, набагато потужніші.

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

  3. Вибір вертикального блоку. Спробуйте ctrl+vперемістити курсор вертикально. Це справді немислима особливість!

  4. Звучить шматок - але спробуйте вирізати / скопіювати блок і пропустити його 30 разів! Це займе не більше зусиль, ніж робити це 1 раз. Також спробуйте повторити (не скасувати) дію один чи кілька разів.

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

  6. Ефективний конфлікт злиття з vimdiff.

  7. Найважливіше в робочому середовищі на консолі - це те, що ви ніколи не торкаєтесь МУЗИ! тому якщо ви швидко на ключовій дошці - IDE - це не добре.

  8. Працюйте на декількох машинах, серверах одночасно! Це не виглядає очевидно, але іноді, коли ви працюєте на сервері, ви безпосередньо входите в декілька машин і робите щось.

Відповім про те, як робити in 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 windows: build, debug , конфігурація тощо. Навіть коли я перебуваю на чистій консолі, я можу використовувати вкладки, вікна та складання коду, щоб побачити, що мені потрібно, і я можу створювати та навіть переглядати керування, не виходячи з vim, просто потрібно знати правильні команди. І таких дуже багато, я впевнений, що навіть половини з них не опанував. І важко перемогти пошук та заміну vim.


1

Було багато масштабних додатків (моїх, принаймні, два;), і я здогадуюсь, ще багато інших буде написано повністю у Vim. ІДЕ як така, як і раніше, є досить сучасним нововведенням .

Однак звичайної ванілі vi (ouch) або Vim трохи не вистачає. Знання Vim та мислення деякими способами трохи допомагають, а плагіни дуже допомагають , для яких www.vim.org - нескінченне джерело. Деякі, характерні для мови, якою ви користуєтесь, і деякі загальні (для коментування, для перегляду файлів, для ...) швидко перетворюють її в дуже швидке середовище розробки. Зрештою (а деякі, безумовно, стверджують), IDE - це просто редактор із плагінами, упакованими в приємніший інтерфейс. У IDE також не так багато графічних речей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.