#text #full-text-search #text-editor #vim
#текст #полнотекстовый поиск #текстовый редактор #vim
Вопрос:
У меня есть следующий текст:
HELLO TO STACKOVERFLOW
WELCOME TO STACKOVERFLOW
Я хочу, чтобы текст был изменен следующим образом:
heLLO TO STACKOVERFLOW
weLCOME TO STACKOVERFLOW
Как я могу это сделать в Vim?
Ответ №1:
Выделите визуальный блок для первых двух столбцов с помощьюCTRL—V
Введите gu
или u
для уменьшения выделенного текста, gU
или U
для увеличения.
Комментарии:
1. или
~
инвертировать регистр. Будьте осторожны при отправке скриншотов, ваше окно полупрозрачно, будьте особенно осторожны, если у вас есть разумные данные (здесь не беспокойтесь)2. @Benoit Да, я буду, но мне нечего скрывать 🙂 Спасибо за редактирование и
~
совет.3. 1 для тех, кто еще использует VsVim в Visual Studio,
~
трюк работает (gu
иgU
не сработал для меня).
Ответ №2:
Хотя @Jin предоставил хороший ответ для интерактивного использования, вот способ сделать это в сценариях:
для запуска в каждую строку буфера:
:%normal 0gu2l
или вы можете указать диапазон строк, в котором будет применяться команда. Это будет применяться к строкам 4 и 5:
:4,5normal 0gu2l
Комментарии:
1. 1, вы также можете указать столбцы, с которыми хотите работать.
:%normal 15|gu3l
будут уменьшены столбцы с 15 по 17 для всех строк.
Ответ №3:
В обычном режиме:
- если
startofline
установлено (:verb set sol?
сообщит вам), вы можете использовать:lgu
CTRL-VG
.
Подробнее :l
переходит к следующему персонажуgu
ожидает лиmake lowercase
оператор движенияCTRL-V
указывает, что движение выполняется поблочноG
переходит к первому столбцу в последней строке.
- если
startofline
не установлено, тоgu
CTRL-VGl.
(l
переходит к следующему символу и.
повторяет ту же команду).
Для изменения на заглавные буквы измените gu
с gU
помощью, для переключения регистра убедитесь, что tildeop
это установлено и используется ~
вместо этого.
Комментарии:
1. Хорошее объяснение
'startofline'
и использование'tildeop'
Ответ №4:
В дополнение к ответам, данным @Benoit, @Jin и @progo:
:%s/^../Lamp;E/
см . :help sub-replace-special
Ответ №5:
Вы можете использовать замену
:%s/.*</Lamp;
который использует %c
атом шаблона поиска, соответствующий
символу в определенном столбце строки. Используя этот атом, вы можете
легко настроить шаблон так, чтобы он соответствовал любому количеству первых символов
в строке.