2010-06-22 14 views

risposta

22

Oltre alle situazioni in cui le forze del punto esclamativo cose, come scrive, si trasformerà un comando in un comando di attivazione/disattivazione. Quindi, se lo faccio:

:set cursorline 

la riga su cui si trova il cursore sarà evidenziata. Posso spegnerlo con:

:set nocursorline 

Oppure potrei fare:

:set cursorline! 

quel comando salti mortali tra le due impostazioni, off e on.

Accendo frequentemente la linea del cursore evidenziando e accendendo, e il comando di attivazione/disattivazione mi consente di farlo con una semplice mappatura dei tasti funzione. Senza il commutatore, avrei bisogno di due mappature: una per accenderla e una per spegnerla. O dovrei scrivere una funzione per determinare se l'impostazione della linea di cursore è stata attivata o disattivata e quindi attivare l'impostazione opposta.

Questo funziona con, per quanto ne so, tutte le impostazioni della riga di comando che hanno dentro e fuori le impostazioni, come hlsearch, pasta, cursorcolumn, il numero, insearch, ecc

Si noti inoltre che il punto esclamativo commuta la versione no del comando. Ad esempio, è possibile anche attivare o disattivare l'impostazione della linea del cursore con:

:set nocursorline! 
33

L'! qualificatore dice a Vim di forzare l'operazione. Ad esempio, se il file fosse di sola lettura, useresti: w! per scriverlo comunque. Se il file è stato modificato e si desidera uscire senza salvare, si utilizzerà: q !. : Wq! significa solo forzare la scrittura e uscire da un comando.

+0

Sì Recentemente ho cambiato il mio mappatura: Ctrl + S usato per essere: l'aggiornamento e ora è: w !, perché ho un file pronto per soli persistente . Avrei problemi in futuro a causa di quel cambiamento? – alexchenco

+2

@janoChen, sì, ti servirai di 'Ctrl-S' e non eserciterai': w! 'Abbastanza :) – OscarRyz

+0

@janoChen: Ctrl + S non sembra avere una mappatura di default quindi dovrebbe esserci nessun problema altrove.L'unico problema potrebbe essere il salvataggio accidentale su un file di sola lettura che non si desidera sovrascrivere. –

22

Il punto esclamativo di solito significa forzare un'azione.

Un altro uso del marchio di eslamazione: ! seguito da un comando esegue questo comando direttamente dall'editor.

:! ls /etc 
9

Dipende davvero dal comando considerato. Riguardo a quelli che hai enumerato, forza il comando mentre altri ti hanno già risposto.

Tuttavia, ci sono altri comandi come :global, :map, :make, :silent, ..., dove il botto (!) ha altri effetti. Leggete la loro documentazione:

:help help 

(e siamo in grado di dare il botto alcun significato che vogliamo nei comandi definiamo)

Problemi correlati