Come si converte tutto il testo in Vim in minuscolo? È anche possibile?
Come si converte tutto il testo in Vim in minuscolo? È anche possibile?
Risposte:
Se intendi davvero maiuscoletto , allora no, questo non è possibile - proprio come non è possibile convertire il testo in grassetto o corsivo in qualsiasi editor di testo (al contrario dell'elaboratore di testi ). Se vuoi convertire il testo in minuscolo, crea un blocco visivo e premi u
(o U
per convertire in maiuscolo). Tilde ( ~
) in modalità comando inverte il caso del carattere sotto il cursore.
Se vuoi vedere tutto il testo in Vim in maiuscolo, potresti voler guardare l' guifont
opzione, o digitare :set guifont=*
se il tuo sapore Vim supporta il selettore di caratteri della GUI.
guu
minuscola una linea e gu[motion]
minuscola il testo di quel movimento. Allo stesso modo, gUU
e gU[motion]
funziona allo stesso modo, solo in maiuscolo.
Presumo che tu voglia il testo in minuscolo. La soluzione è piuttosto semplice:
ggVGu
Spiegazione:
U
maiuscolo per maiuscolo (es. ggVGU
)
Simile alla soluzione di Mangledorf, ma più breve e amichevole per i non addetti ai lavori
:%s/.*/\L&/g
:%s/.*/\L&
basterebbe (non serve la g
bandiera poiché .*
seleziona l'intera linea)
:%s/./\L&/g
, poiché / g / indica un'operazione globale per la linea. Quello che mi prende, però, è il &
. Perché è necessario?
&
sta qui per what was matched by the pattern
, quindi può essere compreso come segue: sostituire .*
con \Lowercase(what was matched by the pattern)
. Nota che la corrispondenza a .
livello globale è più lenta della corrispondenza.*
Molti modi per scuoiare un gatto ... ecco il modo in cui ho appena pubblicato :
:%s/[A-Z]/\L&/g
Allo stesso modo per le maiuscole:
:%s/[a-z]/\U&/g
Preferisco così perché sto usando questo costrutto ( :%s/[pattern]/replace/g
) continuamente, quindi è più naturale.
:%s/./\U&/g
funziona anche. Si scopre che ignora numeri e caratteri non alfabetici. Quello che mi prende è il &
. Perché \ U (o \ L) da solo non basta? Possiamo avere una spiegazione per questo?
&
è uno stand-in per la stringa corrispondente. In questo modo viene \U&
capitalizzata la stringa corrispondente in modo che possa essere utilizzata per la sostituzione.
Per esempi e maggiori informazioni, leggi questo: http://vim.wikia.com/wiki/Switching_case_of_characters
&
. \ L e \ U hanno perfettamente senso, ma perché è &
necessario?
uso ggguG
gg: passa alla prima riga. gu: cambia in minuscolo. G: passa all'ultima riga.
Di solito Vu(o VUmaiuscolo) è sufficiente trasformare l'intera linea in minuscolo comeV già seleziona l'intera linea per applicare l'azione.
Tilda ( ~) cambia il caso della singola lettera , con conseguente caso di cammello o simile.
È davvero fantastico come Vim abbia molte modalità diverse per gestire le varie occasioni e come queste modalità siano organizzate in modo ordinato.
Ad esempio, v- la vera modalità visiva e le relative V- linea visiva e Ctrl+ Q- modalità di blocco visivo (ciò che consente di selezionare i blocchi, una grande funzionalità offerta da altri editor avanzati di solito tenendo premuto il Alttasto e selezionando il testo).
Se corri con un sapore Unix
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!
indica un comando esterno di shell, quindi $ man tr
(a differenza :help tr
) rivela che tr
è per translate
.
:%0,$!tr [:upper:] [:lower:]