Porozmawiajmy o miarach względnych. Mój Vim wygląda tak:
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
etc
Chciałbym, żeby był mniejszy:
aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc
Jak mogę to dostać? A jak sobie poradzę z ustawieniem długości takiego bloku?
vim
indentation
Léo Léopold Hertz 준영
źródło
źródło
Odpowiedzi:
W rzeczywistości możesz zrobić dwie rzeczy:
Które chcesz?
Wariant 1 zostałby osiągnięty poprzez ustawienie
textwidth
(na przykład:set textwidth=30
(na podstawie odpowiedzi Swaaropa)). Następnie możesz zmienić format tekstu, podświetlając go (w trybie wizualnym) i wpisującgq
. (textwidth
można skrócić jakotw
, więc:set tw=30
.)Opcję 2 można przełączyć, uruchamiając
:set wrap
/:set nowrap
. Spowoduje to zawinięcie linii, które są zbyt długie dla okna.Obie są niezależne.
źródło
fold
polecenia tak jak w odpowiedzi fgm.wrap
zawinie się na granicy okna, a nie natextwidth
.Po ustawieniu 'textwidth' możesz wybrać tekst w trybie wizualnym i nacisnąć gq, aby ładnie go zawinąć (możesz również użyć Q w niektórych starszych / starszych konfiguracjach).
Kilka przydatnych wskazówek:
źródło
gqq
również zawija bieżącą linię (zamiastgqgq
lubgq$
).Korzystanie z fold (1) to jedna z możliwości:
Wynik:
źródło
źródło
textwidth
nie poradzi sobie z sytuacją bez spacji. Możesz napisać własnąformatexpr
funkcję, aby to zrobić.Jeśli masz tekst bez spacji, który chcesz przerwać na określonej długości, nie musisz używać zewnętrznego
fold
ani pisać własnegoformatexpr
.:%s/\(.\{80\}\)/\1\r/g
złamie wszystkie linie przy 80 znakach.
źródło