Używam gvima do pisania e-maili i tw=72
łamania długich linii. Teraz edytuję również podstawowe nagłówki wiadomości w tym samym dokumencie, np. Dodam odbiorców do mojej poczty. Teraz z tw=72
nim również łamie się za każdym razem po 72 znakach.
Jak ustawić tw=0
pierwsze 4 wiersze (to jest część nagłówka) i tw=72
resztę dokumentu?
Moje opcje formatu wyglądają tak, jeśli to istotne:
set fo+=tcqn
formatting
mxmehl
źródło
źródło
textwidth
jest stosowany do całego bufora.line('.') < 5
, lub sprawdzając, czy rozpoczyna linia z nagłówka e-mail (na przykładFrom:
,To:
itd.)Odpowiedzi:
Dzięki komentarzowi @ Carpetsmoker do mojego pytania udało mi się rozwiązać to dokładnie tak, jak chciałem.
Dzięki następującej funkcji w .vimrc (lub w moim przypadku w specjalnym pliku, który został załadowany tylko podczas edycji moich wiadomości e-mail), tw jest ustawione na 500, jeśli numer wiersza jest mniejszy niż 5, w przeciwnym razie jest to 72. Przy
au CursorMovedI
tym jest sprawdzane za każdym razem kursor się porusza.Jeśli ktoś planuje to zaimplementować, zastanów się nad zastąpieniem symbolu wieloznacznego
au CursorMovedI *
stałą ścieżką lub sufiksem pliku.źródło
Bardziej niezawodna alternatywa dla odpowiedzi MXMEHL.
Jeśli używasz
filetype=mail
Vima, podświetli dla ciebie nagłówki:Możemy użyć informacji o składni, aby ustalić, czy wiersz jest nagłówkiem i odpowiednio ustawić szerokość tekstu.
Nazwa Składnia nagłówkach są
mailHeaderKey
,mailSubject
,mailHeaderEmail
, imailHeader
. Dowiedziałem się tego, patrząc na/usr/share/vim/vim74/syntax/mail.vim
.Powodem, dla którego wolę to rozwiązanie, jest to, że nie zależy on od dowolnych numerów linii, ale że działa równie poprawnie dla wiadomości e-mail z jednym nagłówkiem i dwudziestoma nagłówkami.
źródło
Możesz to osiągnąć za pomocą autocmds. Możesz dołączyć je do swojego vimrc, ale zwykle lepiej jest dołączyć je do typu pliku, jak wyjaśniono tutaj .
Następnie możesz użyć następujących opcji:
Jeśli wolisz używać go bez wtyczki typu pliku, musisz zastąpić
<buffer>
ją wzorcem pliku.Chodzi o zmianę,
'textwidth'
kiedy wejdziesz w tryb wstawiania i przywrócenie go, gdy go opuścisz.Jeśli zazwyczaj poruszasz się po tekście w trybie wstawiania (np. Za pomocą klawiszy strzałek), możesz go ulepszyć na podstawie linku wspomnianego przez @Carpetsmoke: Zapobiegnij Vimowi zerwania linków w środkowym tagu podczas przeceny.
źródło
Nie wierzę, że to jest możliwe. Istnieje jednak kilka obejść.
Możesz napisać nagłówek, a następnie
:set tw=72
. Ponieważtw
nie stosuje się z mocą wsteczną do tekstu znajdującego się już w buforze,Możesz wpisać całą rzecz za pomocą,
:set tw=0
a następnie, gdy skończysz, przejdź do linii 4:set tw=72
, igqG
. Lub, jeśli nie masz ochoty robić tego ręcznie, możesz go makro lub zmapować. Na przykład oba będą działać:(„r” dla „reformat”)
Możesz nawet ustawić automatyczne uruchamianie po zamknięciu vima, zakładając, że chcesz go sformatować po zamknięciu vima i że istnieje typ pliku, którego używasz tylko do wiadomości e-mail. Na przykład, jeśli wszystkie e-maile mają
.email
rozszerzenie, możesz:Oczywiście musisz zmienić
*.email
na dowolne rozszerzenie pliku, którego faktycznie używasz. Jeśli używasz czegoś podobnego.txt
, nie poleciłbym tego, ponieważ spowoduje to bałagan przy każdym.txt
pliku, który masz.źródło