Почему в vim нужно :-1j
объединиться со строкой выше?
например :g/^ /-1j
, чтобы объединить все строки, начинающиеся с пробела.
Команды легче запомнить, когда понимаешь, как они возникают, и в этом случае я ожидал:g/^ /-1J
-1
перейти на строку выше и J
соединиться со строкой ниже.
решение1
Вы не можете использовать обычную команду в командной строке.как есть.
В :g/^ /-1j
, j
это сокращение от :join
: вы поднимаетесь на одну строку вверх ( -1
может быть -
) и выполняете :join
.
В :g/^ /-1J
Vim J
ничего не значит: вы используете команду обычного режима вне ее контекста, поэтому, по сути, после этого она ничего не делает, -1
кроме как выводит четкое сообщение об ошибке.
Vim ожидает команду Ex, а не команду обычного режима.
Ваше замешательство может быть вызвано тем фактом, что двоеточие необходимо только один раз, поэтому вы не узнаете команды Ex. Если бы мы добавили пару двоеточий, полная команда, вероятно, имела бы для вас больше смысла:
:g/^ /:-1:j
Чтобы использовать команды обычного режима в командной строке, используйте :norm
:
:g/^ /-1norm J
решение2
В vi
. Есть команды, которые можно вызывать непосредственно из командного режима в любом месте файла (я не уверен, есть ли конкретное название для таких команд), и есть команды, которые ex
работают со строками (не с символами) и требуют :
символа для своего вызова.
Обычно ex
с командой можно использовать только команды :g
.