VIM Regex переместить текст вверх?ВИМ Гольф - PullRequest
0 голосов
/ 04 февраля 2019

Может кто-нибудь сказать мне, как я могу решить эту проблему в VIM?Я могу видеть, где строка начинается с пробела, но перемещение текста вверх не работает.

|-
| 
| 199
| TNET
  revenue
| Most
  Recent (Last)
| Purchase
| Counter
| Enabled
|-
| 
| 200
| Page
  Category (eVar 30)
| Most
  Recent (Last)
| Visit
| Text
  String
| Enabled
|-

Я хочу создать это:

|-
| 
| 199
| TNET revenue
| Most Recent (Last)
| Purchase
| Counter
| Enabled
|-
| 
| 200
| Page Category (eVar 30)
| Most Recent (Last)
| Visit
| Text String
| Enabled
|-

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы можете использовать :global (фактически :g!) и :join:

:g!/^|/-1,.join

Пояснения:

  • :g/{pat}/{cmd} запускает команду, {cmd}в каждой строке, соответствующей шаблону, {pat}
  • :g меньше :global
  • :g!/{pat}/{cmd} запускает команду для каждой строки, которая не соответствовать шаблону.
  • :vglobal (:v для краткости) совпадает с :g!
  • Используйте :join для {cmd} in :g!/{pat}/{cmd}
  • :[range]join присоединится к диапазону [range] строк.Аналогично J в обычном режиме.:j для краткости.
  • {start},{end} - диапазон занимает начальную и конечную строки
  • -1,. - диапазон для -1,.join
  • -1 означает -1 из текущей строки
  • . - текущую строку
  • В -1 можно предположить, что 1 может стать просто -
  • ,. также можно предположить

Сокращая все, что становится командой:

:v/^|/-j

Я бы не стал слишком беспокоиться о гольфе.Самое важное - это распознать проблему и узнать, как ее преодолеть.

Для получения дополнительной помощи см .:

:h :v
:h :j
:h :range
0 голосов
/ 04 февраля 2019

Это, кажется, делает трюк: :%s/n / /

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