Как я присоединяюсь к следующей строке, когда строка соответствует regex для целого документа в VI?

Почему Вы выполняете в этом .xsessionrc и не, например, в .bash_profile или безотносительно другого файла Ваше использование оболочки на входе в систему (не путают с .bashrc, который получен каждой оболочкой)? Здесь (Fedora) это даже имеет полезный комментарий User specific environment and startup programs...

4
26.02.2019, 00:10
1 ответ

В нормальном режиме, J (в отличие от j, который перемещается, курсор вниз одна строка) используется для присоединения к строке с той непосредственно под ним. Однако по умолчанию это добавляет пространство в конец первой строки; для получения результата, Вы хотите (присоединение к строкам, не вставляя дополнительный пробел), нужно было бы использовать gJ.

Для использования команд нормального режима в экс-режиме (который Вы вводите путем нажатия : в то время как в нормальном режиме), нужно использовать normal команда. Посмотрите :h normal в энергии. Так, для работы со следующей строкой, которая соответствует шаблону можно было бы использовать (обратите внимание, что по умолчанию, необходимо выйти + заставить это работать с regex энергии, последствием поддержания совместимости с древним regex механизмом исходного vi):

:/^a.\+g$/normal gJ

Для работы над каждой строкой, которая соответствует шаблону можно было бы использовать :global команда (см. :h :g в энергии) как так:

:global/^a.\+g$/normal gJ

Или, более кратко:

:g/^a.\+g$/norm gJ

Также возможно использовать исключая командой join (см. :h :join) достигнуть того же самого с очень немного меньшим количеством ввода ( ! в конце, в этом случае, говорит join не вставлять пробел в конце первой строки).

:g/^a.\+g$/join!
11
27.01.2020, 20:47
  • 1
    спасибо за исключая командой. в wasavi, normal команда не работает, но join делает. –  törzsmókus 11.01.2017, 21:44
  • 2
    Ни один из них, кажется, не работает на присоединение к последовательным строкам. Если у меня есть n строки, подряд соответствующие шаблону, я должен повторить команду примерно n/2 времена... –  Alex Leach 28.11.2017, 16:45

Теги

Похожие вопросы