Обмен выражениями в VIM - PullRequest
       0

Обмен выражениями в VIM

0 голосов
/ 12 октября 2019

Предположим, у меня есть код типа (<expression1>/<expression2>)

Например,

(dog/cat)
(Washington/London)

как я могу обменять expression1 и expression2 в vim быстро. Ожидаемый результат будет следующим:

(cat/dog)
(London/Washington)

Все ответы приветствуются!

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Я рекомендую использовать vim-exchange плагин

:%norm lcxiwww.

Как это работает? Чтобы обменять два слова, вы можете выбрать первое с помощью cxiw, «cx» является частью отображений плагина, «iw» - это текстовый объект vim, который означает «внутреннее слово». затем мы переходим к следующему слову и нажимаем "."(точка)

Разбивка предложенной команды

:%normal ................ apply on the whole file "%" in normal mode
l ....................... skip the first (
cxiw .................... mark the first word to exchange
ww ...................... jump to the second word

Я думаю, нет необходимости создавать какие-либо сопоставления из-за того, что vim-exchange очень интуитивно понятен.

0 голосов
/ 12 октября 2019

Если fast означает одним нажатием клавиши, используйте mapping , например, для клавиши q:

:map q F(ldf/f)pr)F)r/

Поместите курсор где-нибудь междускобки и нажмите q. Что это делает:

  • F(l Находит открытие ( и перемещается к началу первого слова
  • df/ Удаляет вплоть до /
  • f)p Находит ) и вставляет удаленное слово (теперь выглядит как (cat)dog/)
  • r) Заменяет вставленный / на )
  • F)r/Возвращается к ) и заменяет его на /

Ограничения: слова не должны содержать /, ( или ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...