В принципе, я хотел бы знать разницу между: :w
и :w!
или :wq
и :wq!
Какое использование восклицательного знака ('!') В командной строке Vim после некоторых команд типа ": w!"?
Ответ 1
Помимо ситуаций, когда восклицательный знак заставляет вещи, как и записи, превращать команду в команду переключения. Поэтому, если я это сделаю:
:set cursorline
будет выделена строка, на которой курсор находится. Я могу отключить его:
:set nocursorline
Или я мог бы сделать:
:set cursorline!
Эта команда переворачивается между двумя настройками, выключена и включена.
Я часто включаю и выключаю курсорную линию, и команда toggle позволяет мне делать это с помощью простого отображения функциональных клавиш. Без переключения мне понадобится либо два отображения: один, чтобы включить его, и секунду, чтобы отключить его. Или мне пришлось бы написать функцию, чтобы определить, включено или выключено значение курсовой линии, а затем включить противоположную настройку.
Это работает, насколько мне известно, все параметры командной строки, которые имеют параметры включения и выключения, такие как hlsearch, paste, cursorcolumn, number, insearch и т.д.
Обратите внимание также, что восклицательный знак переключит версию команды без нее. Например, вы также можете переключить линию курсора с помощью:
:set nocursorline!
Ответ 2
The! квалификатор говорит Vim, чтобы заставить операцию. Например, если файл был доступен только для чтения, вы должны использовать: w! писать все равно. Если файл был изменен и вы хотите выйти без сохранения, вы должны использовать: q!.: WQ! просто означает, что команда принудительно записывается и завершается одной командой.
Ответ 3
Восклицательный знак обычно означает принудительное действие. Тем не менее, есть много других применений, например,
-
!
затем какая-то команда выполняет эту команду непосредственно из редактора, например:! ls/etc
:! ls/etc
-
:w !cmd
передает содержимое текущего буфера в командуcmd
, например:w !sudo tee %
(также как запись с помощью трюка sudo).
Ответ 4
Это действительно зависит от рассматриваемой команды. Что касается тех, которые вы перечислили, он заставляет команду, так как другие уже ответили вам.
Однако существуют и другие команды, такие как :global
, :map
, :make
, :silent
,..., где bang (!
) имеет другие эффекты. Прочтите их документацию:
:help help
(и мы можем дать удар любому значению, которое мы хотим в командах, которые мы определяем)