Vim і IDE — це різні речі

Побачив чергову статтю про vim і IDE і вирішив поділитися своїми думками, раптом комусь здадуться корисними, чим чорт не жартує?..

По суті, стаття буде розгорнутим поясненням ідеї, висловленої іншим користувачем коментарі статті «VIM: навіщо, якщо є IDE, і як?».
Принципово IDE від редактора відрізняється тим, що IDE оперує синтаксичним деревом редагування коду на цільовому мовою (або якимсь до нього наближенням), а редактор оперує символами і рядками.

Я відштовхуюся від думки, що vim і IDE — різні інструменти для різних завдань. Абсолютно різних і, більше того, не перетинаються завдань.

IDE
Завдання IDE — розробка програми на одній з мов програмування. Чим краще IDE «розуміє» мову програмування, тим більше корисні функції вона може запропонувати розробнику. Починаючи від найелементарніших — підсвічування синтаксису, і закінчуючи найбільш просунутими — підсвічування потенційних помилок і рефакторинг.

Як приклад можна розглянути проект Roslyn і Visual Studio. Про нього можна прочитати в однієї старої статті — Введення в Microsoft «Roslyn» CTP.

Цитата зі статті Введення в Microsoft «Roslyn» CTP
У минулому наші компілятори працювали як чорні ящики — ви подаєте на вхід вихідний текст програми, а на виході отримуєте збірку. Всі знання та інформація, яку формує компілятор викидається і недоступні для чийогось використання.

Як пише Soma у своєму блозі, частина Visual Studio language-team працює на проектом, який називається Roslyn. Його головна мета — переписати компілятори C# і VB і створити язикова сервіси в керованому коді. З чистим, сучасним і керованим кодом наша команда зможе бути більш продуктивною, впроваджувати інновації швидше і видавати більше можливостей швидше і з кращою якістю.

Більше того, ми відкриваємо компілятори C# і VB з усією їхньою внутрішньою інформацією, роблячи доступним для вас аналіз коду. Ми надаємо публічне API і забезпечуємо точки розширення мовних сервісах C# і VB.

Це відкриває нові можливості для розширень VisualStudio — написання потужних інструментів рефакторінгу і утиліт мовного аналізу, а так само дозволить будь-кому використовувати наші парсери, семантичні двигуни, генератори коду і сценаріїв у своїх проложениях.

Якщо коротко, то Roslyn — проект, що дає API для компілятора. І це дозволяє IDE «розуміти» мову програмування так само добре, як це робить компілятор.

Vim
Завдання vim — редагування тексту. Всі. Крапка. Серйозно. І зараз я поясню, що маю на увазі.

Основна «фішка» vim'a — «розуміння» елементів тексту: слово, рядок, речення, абзац і т. д. Vim на найнижчому, простому рівні заточений " під роботу з текстом. Просто спробуйте попрацювати в vim без доповнень і навіть без підсвічування синтаксису. Запевняю, це буде незабутній досвід.
Здається, щось подібне звучало і в вебінарі Hexlet про vim: www.youtube.com/watch?v=79OWQ1qJwto.

Але в цьому криється і головна складність освоєння vim — вам доводиться думати в термінах, в яких працює vim. Для IDE це не проблема — ми вивчаємо мову програмування, ми працюємо в тих же термінах, що і IDE. Для vim це не очевидно. У мене пішло деякий час для того, щоб поміняти свої уявні напрямні. Раніше я думав:

Треба перейти до цієї рядку або до цього місця в коді. мишкою ставив курсор у потрібне місце. Тепер це виглядає трохи по-іншому:

Треба перейти до цій сходинці. Хм… До найближчої сточке з оголошенням публічного методу. /public
Видалити три слова 3dw

Все це виглядає досить незручно на першому етапі, а потім дозволяє робити складні речі відносно простими діями. Наприклад, якщо у мене є лог, я можу однією командою видалити всі рядки, в яких немає слова «Exception».

Крім того, це дозволяє використовувати систему макросів, які працюють у термінах елементів тексту і виходять більш гнучкими.

Можна ще багато написати про можливості, але це стаття не про «плюси» vim'a, тому переходжу до ув'язнення.

Разом
У читача напевно народився питання: а навіщо ж тоді всі ці плагіни для vim? Якщо це не його завдання?

Плагіни для імітації різних функцій IDE — це спроба об'єднати два інструменту. Точно так само як і плагіни для IDE, що імітують роботу в vim.

Ви можете піти важким шляхом і спробувати зробити IDE з vim'a. Можете піти більш простим шляхом і додати частину можливостей vim'a в свою улюблену IDE. Чи можете піти найпростішим шляхом — не використовувати vim. Використання vim дає додатковий «режим» роботи — коли з кодом зручніше працювати як з простим текстом.

Висновки
Я хотів підкреслити, що IDE і vim — це різні інструменти для різних завдань, і їх протистояння полягає лише в тому, що немає ідеального варіанту інтегрувати ці два інструменти.

На мій погляд, найкращим рішенням було б, якби IDE і редактор тексту були б окремими модулями, взаємодіючими через якесь API (як це зроблено між IDE і компілятором Roslyn). Щоб в IDE можна було б вмонтувати будь-редактор, найбільш підходящий для роботи з текстом.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.