Jak przekonwertować cały tekst w Vimie na małe litery? Czy to w ogóle możliwe?
Jak przekonwertować cały tekst w Vimie na małe litery? Czy to w ogóle możliwe?
Odpowiedzi:
Jeśli naprawdę masz na myśli małe litery , to nie, nie jest to możliwe - podobnie jak nie można przekonwertować tekstu na pogrubiony lub kursywą w dowolnym edytorze tekstu (w przeciwieństwie do edytora tekstu ). Jeśli chcesz przekonwertować tekst na małe litery, utwórz blok wizualny i naciśnij u
(lub, U
aby przekonwertować na wielkie litery). Tilde ( ~
) w trybie komend odwraca wielkość znaków pod kursorem.
Jeśli chcesz zobaczyć cały tekst w Vimie małymi literami, możesz zajrzeć do guifont
opcji lub wpisać, :set guifont=*
czy twój smak Vima obsługuje wybór czcionek GUI.
guu
zmniejszy literę i gu[motion]
zmniejszy wartość tekstu tego ruchu. Podobnie gUU
i gU[motion]
działają w ten sam sposób, tylko dla wielkich liter.
Zakładam, że chcesz mały tekst. Rozwiązanie jest dość proste:
ggVGu
Wyjaśnienie:
U
na wielkie litery (np. ggVGU
)
Podobne do rozwiązania mangledorfa, ale niższe i przyjazne dla laika
:%s/.*/\L&/g
:%s/.*/\L&
wystarczyłoby (nie potrzebuję g
flagi, ponieważ .*
zaznacza całą linię)
:%s/./\L&/g
, ponieważ / g / oznacza operację globalną dla linii. Tym, co mnie jednak przyciąga, jest &
. Dlaczego to konieczne?
&
oznacza tutaj what was matched by the pattern
, więc można to rozumieć w następujący sposób: zastąp .*
przez \Lowercase(what was matched by the pattern)
. Pamiętaj, że .
globalne dopasowanie jest wolniejsze niż dopasowanie.*
Wiele sposobów na skórę kota ... oto sposób po prostu pisał o:
:%s/[A-Z]/\L&/g
Podobnie w przypadku wielkich liter:
:%s/[a-z]/\U&/g
Wolę tak, ponieważ :%s/[pattern]/replace/g
cały czas używam tej konstrukcji ( ), więc jest to bardziej naturalne.
:%s/./\U&/g
działa również. Okazuje się, że ignoruje cyfry i znaki inne niż alfabet. To, co mnie przyciąga, to &
. Dlaczego sam \ U (lub \ L) nie wystarczy? Czy możemy uzyskać wyjaśnienie?
&
jest stand-in dla dopasowanego ciągu. Dlatego \U&
wielką literę dopasowuje tak, aby można go było użyć do zamiany.
Aby uzyskać przykłady i więcej informacji, przeczytaj to: http://vim.wikia.com/wiki/Switching_case_of_characters
&
. \ L i \ U mają sens, ale dlaczego jest to &
konieczne?
posługiwać się ggguG
gg: przechodzi do pierwszej linii. gu: zmień na małe litery. G: przechodzi do ostatniej linii.
Zwykle Vu(lub VUwielkie litery) wystarczy, aby całą linię zamieniać na małe litery jakoV już zaznacza całą linię, aby zastosować akcję.
Tilda ( ~) zmienia wielkość liter pojedynczej litery , powodując wielbłąda lub podobną.
To naprawdę wspaniałe, jak Vim ma wiele różnych trybów radzenia sobie z różnymi okazjami i jak te tryby są uporządkowane.
Na przykład v- prawdziwy tryb wizualny i powiązane V- wizualna linia i Ctrl+ Q- wizualne tryby blokowania (co pozwala wybierać bloki, świetna funkcja, którą oferują inni zaawansowani edytorzy, zwykle przytrzymując Altklawisz i zaznaczając tekst).
Jeśli korzystasz ze smaku Uniksa
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!
Oznacza zewnętrzną powłokę, tak $ man tr
(w przeciwieństwie do :help tr
) ujawnia, że tr
jest translate
.
:%0,$!tr [:upper:] [:lower:]