Самые полезные функции VIM, которые не являются стандартными в IDE [закрыто]

30

Я думаю о том, стоит ли мне снова начать использовать VIM вместо IDE. Каковы наиболее полезные функции VIM, которые не являются стандартными в IDE?

Casebash
источник
3
Какой IDE вы используете? Многие IDE имеют плагины VIM, поэтому вы можете редактировать, как если бы вы использовали VIM.
Брайан Р. Бонди
2
@ Брайан: Конечно, они не эмулировали все расширенные функции?
Casebash
1
Наверное, не все, кроме тех, которые я использовал, отлично подходят для VS. Их как минимум 2. viemu.com и github.com/jaredpar/VsVim
Брайан Р. Бонди
2
@ Brian R Bondy: Никто из них даже близко не подходит к тому, чтобы охватить все функции vim. Они царапают поверхность и больше ничего не делают
Дейнит,
2
Или вы могли бы быть действительно разумным и начать использовать emacsвместо этого. ;-)
Orbling 22.12.10

Ответы:

32

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

Хотя это может показаться на первый взгляд не интуитивным, но оно того стоит. Даже если вы не используете его как стандартную IDE (я обычно использую Visual Studio или Eclipse, например), вы обнаружите, что используете VIM для быстрого открытия и редактирования файлов, потому что это становится намного быстрее, чем ожидание IDE для нагрузить.

Потратьте время, чтобы научиться правильно пользоваться VIM, и вы никогда не пожалеете об этом. Я бы сказал, что это сравнимо с обучением прикосновению.

Брайан Хейлз
источник
3
Этот ответ, вероятно, самая полезная функция для Vim, а также одна из единственных. Все, что запрограммировано для Vim, также может быть легко применено к IDE, это всего лишь обработка текста ...
Тамара Вийсман
4
+1 Пока я преданный Emacs, применяется тот же аргумент. Современные IDE слишком «графичны» для текстовых редакторов.
Orbling 22.12.10
22

Для меня :globalкоманда - приложение-убийца. Он будет выполнять произвольные команды vim в любой строке, которая соответствует (или не соответствует) регулярному выражению.

Вот некоторые примеры:

Поведение по умолчанию состоит в перечислении каждой подходящей строки, поэтому:

:g/TODO:/

будет перечислять каждую строку, которая содержит текст "TODO:"

замените «Микки» на «Минни» в любой строке, которая также содержит слово «Мышь»

:g/Mouse/ s/Mickey/Minnie/

Команды могут иметь свой собственный диапазон, поэтому он будет удалять из каждой строки с «TODO:» следующую пустую строку:

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

Использование: g! выполнить в каждой строке, которая НЕ соответствует регулярному выражению, например, заменить «emacs» на «vim», за исключением строк, содержащих слово «sucks»:

:g!/sucks/ s/emacs/vim/
Дейв Кирби
источник
Великие трюки с глобальной командой! Я никогда не думал об их использовании.
Ксавье Т.
Eclipse поддерживает регулярный поиск файлов, как отдельных файлов, проектов, так и по проектам в одной рабочей области. Замена Regex также поддерживается в некоторой степени, но я считаю, что vim обладает гораздо более мощными возможностями регулярных выражений.
Томас Оуэнс
16

Я считаю невероятно полезной возможность удаления всего, что находится между набором парных символов. Например, довольно часто я хочу заменить строку в коде. Таким образом, di"пока курсор находится в блоке, удалите строку, сохраняя при этом ""нетронутым, и поместите курсор между двумя символами кавычек. da"делает то же самое, но удаляет символы кавычки тоже.

Чинмай Канчи
источник
12
Более того, ci"удаляет и переводит курсор в режим вставки, чтобы вы могли немедленно начать запись.
Конрад Рудольф
9

«Завершение ключевого слова в режиме вставки». Ctrl-P и Ctrl-N в режиме вставки для поиска по тексту, чтобы попытаться завершить ввод любого имени переменной. Я никогда не видел этого ни в одной другой IDE, и мне очень не хватает этого. Завершение кода в IDE просто не то же самое.

Ланг Шарп
источник
2
У вас также есть правильное завершение кода, если вы хотите, используя omni-complete. ^X^Oomni-завершает в режиме вставки, если он у вас включен. Но вы правы, я обнаружил, что использую завершение ключевых слов гораздо больше, чем полное.
Чинмай Канчи
@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 делает то же самое в визуальной студии.
Рауль
Алан: dd также обрезает текущую строку в том смысле, что ее можно вставить позже с помощью p
user281377 22.12.10
3
@Raoul, мы знаем, что в emacs есть серия из n комбинаций из 3-х клавиш, которые повторяют каждую команду vim. Тем не менее, 3dd - это поэзия.
cbrandolino
6

cКоманда. Например, ci"изменить внутри кавычек. cwизменить слово. Много полезных трюков с ним.

Daenyth
источник
5

.Команда. Это повторяет последнюю команду.

Адам Яскевич
источник
+1 к этому, и ко всем другим функциональным возможностям, связанным с макросами.
P Shved
3

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

Jé Queue
источник
3

Быстрый доступ к командной строке. CTRL + Z или: wqa даст мне командную строку менее чем за 1 секунду, и моя рука не покинет клавиатуру.

luispedro
источник
1
+1 Этот последний маленький кусочек является решающим разделом для почти всех преимуществ: без моей руки, покидающей клавиатуру
Orbling
... или :!/bin/bash. Я пользуюсь :!довольно часто.
Greyfade
Я обычно использую:sh
Дэвид Браун
3

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

Анто
источник
1

На этот вопрос довольно сложно ответить, в какой-то мере из-за неопределенности вопроса и в некоторой степени из-за того, что IDE отличаются, и многие предоставляют функции, которых нет у других (и тот факт, что у меня их всего несколько).

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

Мой стиль манипулирования текстом, например, очень часто включает дублирование (строка / выделение нескольких строк) и перемещение (выделение / выделение нескольких строк) вверх и вниз, для которых я давно определил быстрые ярлыки. Я скучаю по этим функциям в большинстве IDE (хотя я слышал, что ReSharper для VS имеет нечто подобное).

ладья
источник
1

Знаете ли вы, что есть плагин vi для затмения ? Это стоит 15 евро (20 долларов США), но оно того стоит. Нет больше ddв середине документа, и пропущены все крошечные полезные вещи.

Возможно, немного не по теме, но я подумал, что на это стоит обратить внимание.

lorenzog
источник
0

В зависимости от того, на каком языке вы программируете, придерживайтесь ide или получите ide, предлагающий наибольшее количество рефакторингов, которые вы можете найти, получите более резкий инструмент для visual studio, если вы делаете c #, intellij для java или Visual Assist для Visual Studio, максимизировать рефакторинги в затмении или нетбинах.

Мы должны перейти от манипулирования текстом к манипулированию кодом, инструменты рефакторинга дают вам эту возможность. Если vim действительно предоставляет все функции, я, например, больше не хочу иметь дело с текстовым редактором.

Харальд Шейрих
источник
3
Это в значительной степени глупость. Да, рефакторинг - важный инструмент, но код сам себя не пишет. Хороший текстовый редактор способствует гораздо большей производительности программиста, чем хороший инструмент рефакторинга.
Чинмай Канчи
-1

Выбор столбца таблицы

Похоже, этого нет в популярных IDE, и если это так, то они хорошо скрывают это. Это действительно удобно для тестирования регулярных выражений для столбца в файле данных CSV.

Сэл
источник
-3

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

projecktzero
источник
5
Большинство IDE не делают? Я думаю, что большинство на самом деле так, по крайней мере те, которые я использовал.
Anto
Можете привести несколько примеров?
projecktzero
1
Большинство IDE обрабатывают экран по-разному, чем Vim / Emacs. Они обычно делают это с помощью вкладок. С ними труднее / невозможно манипулировать с помощью клавиатуры (сравните с 50 открытыми файлами в Emacs и с 50 открытыми файлами в Eclipse, и вы быстро увидите, как Emacs победит).
Йтернберг
Большинство IDE, которые имеют разделенный экран, не предоставляют простых методов навигации / настройки а-ля<C-w>
Уэйн Вернер,