Подтвердить что ты не робот

Почему некоторые команды в vim требуют двоеточия, а некоторые нет?

Некоторые команды из vim задаются путем ввода двоеточия (:) например.: wq для сохранения файла и выхода из него. Хотя некоторым из команд не требуется двоеточие, например команда Replace (R). Я хочу знать, в чем разница между этими двумя подходами? Есть ли какое-либо конкретное правило относительно того, какие из них требуют двоеточие, а какие нет?

4b9b3361

Ответ 1

Вы должны заглянуть в историю vi, предшественника Vim, для объяснения. Давным-давно, когда редактирование текста нужно было делать с клавиатуры и подключенного принтера (называемого терминалом), не было мыши, нет отображения, отличного от бумаги, и, следовательно, мало интерактивности. Редактирование состояло из коротких, мнемонических команд через редактор под названием ex. Вы выдали команду, адресованную одной или нескольким строкам (например, :substitute/foo/bar), и редактор подчинялся. Если вы не были уверены в командных эффектах, вы могли бы :print выделить несколько строк.

Прошло время, появились видеотерминалы, а в редакторе vi были добавлены команды ex (потому что они были полезны, а программисты использовались для них), но вводили более интерактивные команды, такие как delete (x), insert (i), и так далее. Команды ex все еще доступны в режиме командной строки, который запускается с помощью : и завершается с помощью Enter.

Vi и Vim являются особыми в этом отношении, потому что они имеют разные режимы, когда одни и те же клавиши означают разные вещи в зависимости от того, в каком режиме он находится. Чтобы стать опытным в Vim, вам нужно узнать о разных режимах и о том, как чтобы наилучшим образом использовать их для достижения ваших целей редактирования.

:help vim-modes дает вам отправную точку в превосходных и всесторонних справочных службах.

Ответ 2

Команды, которые "не требуют" двоеточия, называются "нормальными (режимными) командами".

Команды, которые требуют "двоеточия", называются "командами Ex".

Vim, являющийся модальным редактором, имеет множество команд, которые являются контекстуальными для режима, в котором вы находитесь. Наиболее очевидным эффектом является то, что попадание одного и того же ключа в разных контекстах может привести к различным результатам.

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

Вам нужно переключиться в обычный режим, чтобы выдернуть, поместить, удалить, переместить курсор... нормальный режим - это то, где вы делаете лазерное редактирование. Vim славится и использует команды типа dcggsi/.* и т.д.

Вы входите в режим командной строки, нажав : в нормальном /* визуальном * режиме. Он обычно используется для двух вещей:

  • выполнять административные задачи (запись на диск, переключение буферов, открытие файлов...)
  • используйте классные команды редактирования, такие как :m10 или :t1 или :g/foo/d...

Многие команды, которые вы можете использовать в этом режиме, являются (очень мощными) остатками Vim прошлого и называются командами Ex.

Короче говоря, ни команды нормального режима, ни команды Ex не начинаются с двоеточия. Двоеточие просто используется для изменения режимов.