Какой самый быстрый способ отменить список разделенных запятыми в vim? - PullRequest
10 голосов
/ 16 апреля 2009

Я часто должен исправить следующий код рельсов:

assert_equal value, expected

Два аргумента assert_equal не в порядке и должны выглядеть следующим образом:

assert_equal expected, value

В vim, какой самый эффективный способ перехода с первой строки на вторую?

Ответы [ 6 ]

6 голосов
/ 16 апреля 2009

через регулярное выражение:

:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/

Если вы делаете это часто, вы можете сделать из него карту, например ::

:nmap <F5> :s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/<CR>

Поместите курсор на строку, которую хотите перевернуть, и нажмите F5.

5 голосов
/ 16 апреля 2009

Это меняет слово, на котором находится ваш курсор, на следующее - просто нажмите F9 в командном режиме:

:map <F9> "qdiwdwep"qp
  • "qdiw: поместите слово, в котором находится ваш курсор, в буфер 'q'
  • dw: Удалить все символы в начале следующего слова (возможно, запятая + пробел)
  • e: перейти к концу слова
  • p: вставка (запятая + пробел)
  • "qp: вставить буфер 'q' (первое слово)
1 голос
/ 16 апреля 2009

Мне всегда нравился поиск и замена регулярных выражений для задач такого типа:

:s/\(\w*\), \(\w*\)/\2, \1/

Поменяет первое слово со вторым в списке через запятую.

1 голос
/ 16 апреля 2009

Карта комбинации клавиш для выполнения команды:

:s/^assert_equal \(.*\), \(.*\)$/assert_equal \2, \1
0 голосов
/ 17 апреля 2009

для чего-то такого простого, я бы просто сделал небольшой макрос

qadf ea, ^[pxxq

затем @a прочь

0 голосов
/ 16 апреля 2009

Хм ... Я бы сказал "tdwxx $ i, ^ [" tp, но это не очень эффективно или просто, просто достаточно быстро, чтобы напечатать ...

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