Почему в vim для присоединения к строке выше используется :-1j?

Почему в vim для присоединения к строке выше используется :-1j?

Почему в vim нужно :-1jобъединиться со строкой выше?

например :g/^ /-1j, чтобы объединить все строки, начинающиеся с пробела.

Команды легче запомнить, когда понимаешь, как они возникают, и в этом случае я ожидал:g/^ /-1J

-1перейти на строку выше и Jсоединиться со строкой ниже.

решение1

Вы не можете использовать обычную команду в командной строке.как есть.

В :g/^ /-1j, jэто сокращение от :join: вы поднимаетесь на одну строку вверх ( -1может быть -) и выполняете :join.

В :g/^ /-1JVim Jничего не значит: вы используете команду обычного режима вне ее контекста, поэтому, по сути, после этого она ничего не делает, -1кроме как выводит четкое сообщение об ошибке.

Vim ожидает команду Ex, а не команду обычного режима.

Ваше замешательство может быть вызвано тем фактом, что двоеточие необходимо только один раз, поэтому вы не узнаете команды Ex. Если бы мы добавили пару двоеточий, полная команда, вероятно, имела бы для вас больше смысла:

:g/^ /:-1:j

Чтобы использовать команды обычного режима в командной строке, используйте :norm:

:g/^ /-1norm J

решение2

В vi. Есть команды, которые можно вызывать непосредственно из командного режима в любом месте файла (я не уверен, есть ли конкретное название для таких команд), и есть команды, которые exработают со строками (не с символами) и требуют :символа для своего вызова.

Обычно exс командой можно использовать только команды :g.

Связанный контент