Какие функции Vim вы используете? [закрыто]

13

Я почти весь день занимаюсь программированием в Vim, и я уверен, что многие из вас тоже. Какие функции вы используете, которые делают ваше повседневное программирование намного лучше? Я использую gv , который позволит вам повторно выбрать ранее выделенный текст. Это отлично подходит для переопределения!

Peter Mortensen
источник
1
Для исторических целей, вот ссылка на оригинальный вопрос SO: stackoverflow.com/questions/95072/…
Jax
Обратите внимание на мой комментарий ниже, и вам даже не придется печатать gv. :)
Натан Лонг

Ответы:

9

:% s / x / y / g

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

Также / строка поиска

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

karlgrz
источник
На самом деле я работаю над преобразованием большой части нашей кодовой базы на работе и делаю это полностью с помощью регулярных выражений vim (пока). Это работает очень хорошо!
Фрю Шмидт
Добавьте 'c' в конец этого, чтобы сделать команду интерактивной. Например:% s / x / y / gc
sml
1
Обратите внимание, что %это место для замены - %означает «текущий файл». Если вы визуально выделите некоторые строки и напечатаете их :s, вы можете сделать замену только в этом выделении.
Натан Лонг
7

== делает хороший авто-отступ на текущей строке.

Обычно, однако, я использую =с движением, например, =Gдля отступа в конец файла или =i}для отступа внутри текущего набора фигурных скобок.

Натан Лонг
источник
2
Также имейте в виду >> и <<, которые могут делать (не) отступ.
Фрю Шмидт
@Frew - да. Кроме того, если вы добавите vmap <Tab> >gvи vmap <S-Tab> <gvк своему .vimrc, вы можете делать отступы и отступы с помощью Tab и Shift-Tab, соответственно, И они вернутся обратно в режим визуального выбора, чтобы вы могли делать отступы или отступы дальше.
Натан Лонг
6

=% для автоматического отступа всего в блоке кода.

Kristo
источник
Оооо! Это ново для меня!
Фрю Шмидт
Это работает, если ваш курсор находится в начале {. Если вы внутри блока, вы можете сделать =i{для «отступа внутри фигурных скобок».
Натан Лонг
5

Используйте *в командном режиме для поиска слова под курсором.

Jonas
источник
1
И не забывайте, что это сестринская команда, #, которая делает то же самое, но идет назад, а не вперед!
Фрю Шмидт
5

Команда :!- бесценна для lsпингвинов, и "sudo tee" трюк.

Меня попросили объяснить трюк. По сути, он позволяет вам сохранить текстовый файл с правами администратора, даже если вы не запускали VIM от имени root:

:w !sudo tee %
человек-б
источник
Возможно, вы захотите объяснить трюк "sudo tee" здесь :-) Также мне нравится делать:! Sort после выделения определений переменных и еще много чего.
Фрю Шмидт
Вы действительно можете превратить Vim в отличный редактор с поддержкой скриптов, используя:! и некоторые сценарии оболочки / Python / Perl / другие.
Джонас
У меня на самом деле есть альтернатива !ls, которая запускает vnew, выводит r!lsв новый буфер и сжимает его по горизонтали. Я не могу потрудиться запомнить все файлы в каталоге с более чем тремя;)
new123456
4
.

Ударить клавиша повторяет предыдущую команду. Прекрасно, скажем, для редактирования .iniили около того.

Phoshi
источник
это удивительно мощно, но требуется немного энергии, прежде чем вы действительно сможете с этим справиться.
Аарон
3

цветовая подсветка синтаксиса

Рождество
источник
2

Я всегда использую gq для повторения разрывов строк в электронной почте, текстовых файлах и т. Д. Действительно полезно при ответе на электронную почту (я использую Pine) и редактировании нескольких предыдущих ответов.

erichui
источник
Ооо, я совсем забыла об этом!
Фрю Шмидт
Почему, почему, более популярные почтовые клиенты не поддерживают подобную функциональность?
erichui
В последнее время я использую gw вместо gq, потому что он сохраняет позицию курсора
SergioAraujo
2

С чего начать ... Вот то, что я могу вспомнить, я использовал за последние 5 минут или около того.

  • NERD Tree - Просмотр файлов. Делает VIM больше похожим на IDE.
    • Для меня очень важна возможность cdсоздания каталога, а затем перехода к приглашению оболочки через мои отображения оболочки (ниже).
  • ci для опустошения всего, что вы застряли между.
  • :! для запуска стандартных приложений.
    • У меня есть сопоставления для запуска приглашения оболочки, клиента mysql, файлов журнала apache и т. Д.
    • Интеграция Subversion всегда хороша. Быстрый diffс, statс и т. Д.
  • :abbr за повторяющуюся печать больших блоков уходи.
  • Вкладки. Нужно ли мне сказать больше?
  • Разделение файлов, всегда хорошо. :Sexвсегда приятно
  • :set paste! чтобы избежать авто-отступа.
Джек М.
источник
Я использую все это, за исключением аббревиатуры. Я стараюсь делать больше макросов, чем аббревиатур.
Фрю Шмидт
2

ZZ сохранить и выйти (вместо: wq!)

кендырь
источник
А? Как насчет х ?
DevSolar
1

Я интенсивно использую следующие команды при написании или обходе кода C / Tcl / Perl:

скопировать и вставить код

CTRL-fи CTRL-bдля просмотра страниц вперед и назад
%для блочного обхода
^ перейти к началу строки
$ перейти к последнему концу строки

начните выбирать код, используя команду v(визуальный режим) и любой из приведенных выше ключей обхода
yдля копирования
pдля вставки

s удалить символ и перейти в режим вставки для ввода нового текста.

Обход уровня кода (требуется дисциплина стиля кодирования)

]]для запуска следующей функции
[[для запуска предыдущей функции

CTRL-] перейти к определению переменной / функции / макроса, если доступны теги.

Поиск

* => поисковое слово (или текст, выбранный с помощью v) в прямом направлении
# => поисковое слово (или текст, выбранный с помощью v) в обратном направлении
n => выполнить предыдущую команду поиска в прямом направлении
N => выполнить предыдущую команду поиска в обратном направлении

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

оборота SecureBadshah
источник
Ах,]] и [[являются новыми для меня. Это классно!
Фрю Шмидт
0

Я просто ввожу текст. Все остальное просто ... Сахар.

Акира
источник
0

Я бывший пользователь TextPad и запомнил многие из клавиш ускорения этой программы. Первым делом, которое я сделал в Vim, было изучение функции карты для обеспечения согласованности (поиск F5, замена F8 и т. Д.). Я создал свою личную цветовую схему и много позаимствовал из других файлов vimrc. Вива Вим! Настраивается в любой степени.

оборота wbogacz
источник