Найбільш корисні функції VIM, які не є стандартними в IDE [закрито]


30

Я розглядаю, чи варто мені знову використовувати VIM замість IDE. Які найкорисніші функції VIM не є стандартними для IDE?


3
Яку IDE ви використовуєте? Багато IDE мають плагіни VIM, тому ви можете редагувати так, ніби використовуєте VIM.
Брайан Р. Бонді

2
@Brian: Напевно вони не наслідували всіх розширених функцій?
Casebash

1
Напевно, не всі, окрім тих, якими я користувався, чудово підходять для VS. Їх принаймні 2. viemu.com and github.com/jaredpar/VsVim
Брайан Р. Бонді

2
@Brian R Bondy: Жоден з них навіть не наближається до того, щоб висвітлити всі функції vim. Вони дряпають поверхню і більше нічого не роблять
Daenyth

2
Або ви можете бути по-справжньому розумними і почати використовувати emacsзамість цього. ;-)
Увімкнення

Відповіді:


32

Я не думаю, що його обов'язково вдосконалені функції VIM, які роблять його настільки потужним. Справа в тому, що ніколи не потрібно знімати руки з клавіатури, щоб щось робити. Знайти щось у величезному файлі так само просто, як і кілька натискань клавіш. Відкриття та закриття декількох файлів у одному вікні також надзвичайно швидко.

Хоча це може здатися не інтуїтивним спочатку, все-таки варто вашого часу. Навіть якщо ви не використовуєте його як стандартний IDE (я, як правило, використовую Visual Studio або Eclipse), ви знайдете себе, використовуючи VIM для швидкого відкриття та редагування файлів, оскільки це стає швидше, ніж очікування IDE для навантаження.

Вкладіть час, щоб навчитися добре використовувати VIM, і ви ніколи не пошкодуєте про це. Я б сказав, що це порівняно з навчанням до сенсорного типу.


3
Ця відповідь, мабуть, є найбільш корисною для Vim, вона також є однією з єдиних. Все, що запрограмовано для Vim, можна легко застосувати і до IDE, адже це лише обробка тексту ...
Tamara Wijsman

4
+1 Хоча я відданий emacs, застосовується той самий аргумент. Сучасні IDE є занадто "графічними" для текстових редакторів.
Увімкнення

22

Для мене :globalкоманда - це вбивчий додаток. Він буде виконувати довільні команди vim у будь-якому рядку, який відповідає (або не відповідає) регулярному вираженню.

Ось кілька прикладів:

Типовою поведінкою є перерахування кожного рядка, який відповідає, таким чином:

:g/TODO:/

буде перераховано кожен рядок, який містить текст "TODO:"

змінити "Міккі" на "Мінні" в будь-якому рядку, що також містить слово "Миша"

:g/Mouse/ s/Mickey/Minnie/

Команди можуть мати власний діапазон, тому це буде видалено з кожного рядка з "TODO:" до наступного порожнього рядка:

: g / TODO: /., / ^ $ / d

Використання: г! виконувати в кожному рядку, який НЕ відповідає регексу, наприклад, замінити "emacs" на "vim", за винятком рядків, що містять слово "sucks":

:g!/sucks/ s/emacs/vim/

Чудові трюки з глобальним командуванням! Я ніколи не думав використовувати їх так.
Xavier T.

Eclipse підтримує регулярний пошук файлів у вигляді файлів, як окремих файлів, проектів, так і між проектами в одному робочому просторі. Заміна Regex також певною мірою підтримується, але я вважаю, що vim має набагато більш потужну здатність регулярного виведення.
Томас Оуенс

16

Я вважаю можливість видалити все, що знаходиться між набором парних символів, неймовірно корисним. Наприклад, досить часто мені здається, що я хочу замінити рядок у коді. Отже, di"поки курсор знаходиться в блоці, він видалить рядок, зберігаючи ""неушкодженим, і поставить курсор між двома символами цитати. da"робить те ж саме, але також видаляє символи цитати.


12
Ще краще ci"видаляє та переводить курсор у режим вставки, щоб ви могли негайно почати писати.
Конрад Рудольф

9

'Завершення ключового слова в режимі вставки'. Ctrl-P і Ctrl-N у режимі вставки для пошуку по тексту, щоб спробувати ввести ім’я змінної, яку ви вводите. Я ніколи не бачив цього в жодному іншому IDE, і я дуже його сумую. Заповнення коду в IDE просто не те саме.


2
Ви також маєте належне заповнення коду, якщо хочете, використовуючи omni-complete. ^X^Oomni-завершує в режимі вставки, якщо він увімкнено. Але ви маєте рацію, я вважаю, що використовую завершення ключових слів набагато більше, ніж повне.
Chinmay Kanchi

@Chinmay: Я думаю, ти маєш значення "належного" назад. Правильне введення коду завершує все, використовуючи принцип локальності, навіть якщо ви пишете текст замість коду.
ніндзя

SlickEdit має подібну особливість; і це дуже схоже на IDE
user281377

8
Я зовсім не згоден. Сучасні IDE (Visual Studio, Eclipse,…) мають своєрідне доповнення коду, яке легко конкурує (і насправді перевершує!) Ctrl-N . Якщо ви ще не бачили цього в IDE, перегляньте ще раз поточні версії. І Omni-Complete, на жаль, не працює належним чином.
Конрад Рудольф

8

Ще одна особливість, яку я вважаю неймовірно корисною, - це можливість змінювати відступи. :15,30>>відступіть усі рядки від 15-30 (включно) двічі, тоді як :15,30<<деінкретируйте ті самі рядки двічі.


Хоча я люблю цю функцію, майже кожен IDE має відступ блоку (і дедент).
Шон Макміллан

Я вважаю, =що такий же, як не більше, корисний ніж <<і >>.
greyfade

6

команда dd (видалити поточний рядок). Я так багато використовую.

Крім того, можливість ввести щось на зразок 3dd та видалити наступні 3 рядки - це чудово. Я ніколи не бачив цього в іншому редакторі = D


У Netbeans це майже є, ^ X без вибору буде перерізати поточну лінію.
Алан Пірс

@Alan: Ні, NetBeans має jVi :)
д-р

^ K видаляє рядок, а ^ u3 ^ k видалить 3 рядки в emacs. shift-delete робить те саме у візуальній студії.
Раул

Alan: dd також скорочує поточний рядок у тому сенсі, що він може бути вставлений із p пізніше
user281377

3
@Raoul, ми знаємо, що існує серія emacs з n 3-клавішних комбінацій, щоб повторити кожну команду vim - все ж, 3dd - це поезія.
cbrandolino

6

cКоманда. Наприклад, ci"для зміни внутрішніх лапок. cwзмінити слово. Багато зручних трюків з цим.



3

Esc ! }буде засунути поточний абзац від фільтра до командного рядка , як fmtі wcчи whichта результати повернення до редактора.


3

Швидкий доступ до командного рядка. CTRL + Z або: wqa отримає мені командний рядок менше ніж 1 сек, без того, щоб моя рука залишала клавіатуру.


1
+1 Останнє трішки - це вирішальний розділ для майже всіх переваг: без моєї руки покинути клавіатуру
замовлення

... Або :!/bin/bash. Я використовую :!досить часто.
greyfade

Я зазвичай використовую:sh
Девід Браун

3

Це я можу використовувати hjklдля переміщення курсору, не виходячи з головного дому клавіатури. У мене є більшість програм (наприклад, читачів PDF), які дозволяють змінювати вкладки клавіш, налаштовані на використання клавіш руху Vim для прокрутки тощо.


1

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

Однак те, що я вважаю, відрізняє Vim від інших редакторів (так, навіть Emacs, на цьому) - це те, що він справді чудовий редактор . Я за минулий час користувався багатьма редакторами і можу чесно сказати, що дуже мало таких функцій для маніпулювання текстом, як це робить Vim.

Наприклад, мій стиль маніпулювання текстом включає дуже часто використання дублювання (рядок / вибір декількох рядків) та переміщення (рядок / виділення кількох рядків) вгору та вниз, для чого я давно визначив швидкі ярлики. Я сумую за цими можливостями у більшості IDE (хоча я чув, що ReSharper для VS має щось подібне).


1

Чи знаєте ви, що існує модуль vi для затемнення ? Коштує 15 євро (20ish US $), але це так варто. Більше немає ddв середині документа і не вистачає всіх крихітних корисних речей.

Можливо, трохи поза темою, але я подумав, що це варто вказати.


0

Залежно від мови, якою ви програмуєте, дотримуйтесь ідеї або отримайте ідею, яка пропонує найбільш рефактори, які ви можете знайти, отримайте переробку для візуальної студії, якщо ви робите c #, intellij для java або візуальну допомогу для візуальної студії, максимум перероблювачів у затемненні чи сітках.

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


3
Це дуже багато дурниць. Так, рефакторинг - важливий інструмент, але код не пише сам. Хороший текстовий редактор значно більше сприяє продуктивності програміста, ніж хороший інструмент рефакторингу.
Chinmay Kanchi

-1

Вибір стовпців таблиці

Схоже, це не є серед популярних IDE, і якщо це так, вони зберігають його добре. Це дуже зручно для тестування регулярного вираження на стовпчик у файлі даних CSV.


-3

Більшість IDE не дозволяють розділити екран. Мені подобається ця функція у VIM.


5
Більшість IDE ні? Я думаю, що насправді так роблять, принаймні ті, якими я користувався.
Анто

Чи можете ви навести кілька прикладів?
projecktzero

1
Екран ручки більшості IDE розділяється інакше, ніж Vim / Emacs. Вони роблять це зазвичай за допомогою вкладок. Це важче / неможливо маніпулювати клавіатурою (порівняйте відкриття 50 файлів у Emacs проти 50 відкритих файлів у Eclipse, і ви швидко побачите, як Emacs виграє).
jsternberg

Більшість IDE, які мають сплітскрін, не забезпечують простих методів навігації / коригування a-la<C-w>
Wayne Werner
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.