Właśnie patrzyłem na ten post, który opisuje jak zawijać całe słowa w vimie. Zaakceptowanym rozwiązaniem było:
:set formatoptions=l
:set lbr
Który przyjmuje ten tekst (karty są wyświetlane jako \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
W ten sposób uzyskuje się takie zachowanie (karty są wyświetlane jako \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Chciałbym jednak przedefiniować tę funkcję. Chciałbym, aby zawinięty wiersz miał taką samą liczbę zakładek przed sobą, jak powyższy wiersz plus jeden. To znaczy:
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Jakieś pomysły?
Odpowiedzi:
Łata breakindent ma to, czego szukasz. Z powodzeniem zastosowałem go, korzystając z instrukcji zawartych w tym wątku:
Załataj Vima przełomową łatką na OS X za pomocą Homebrew
W szczególności formuła Homebrew firmy Echristopherson.
Wiem, że ten wątek jest stary, ale jest popularny w Google i natknąłem się na niego wiele razy, próbując znaleźć rozwiązanie.
EDYCJA: Ta poprawka jest teraz dołączona do vima jako łatka 7.4.338. Zobacz: https://retracile.net/blog/2014/07/18/18.00
Na Yosemite (Mac OS X) użyłem polecenia snowbound z hombrew:
źródło
brew install macvim --with-features=huge --override-system-vim --HEAD
To nie zadziałało, gdy pierwotnie zadano pytanie, ale od 25 czerwca 2014 r. Będzie działać. (Zakładając, że zaktualizujesz swój vim do wersji nowszej niż ta data)
Dodaj do swojego .vimrc:
I to wszystko!
-
Niektóre osoby (łącznie ze mną) współużytkują jeden plik .vimrc na wielu komputerach. W takim przypadku ważne jest, aby ta linia była solidna (aby uniknąć irytujących komunikatów o błędach). To jest trochę lepsze:
W ten sposób, jeśli korzystasz z wcześniejszej wersji vima, nie otrzymasz komunikatu o błędzie.
źródło
if has("patch-7.4.354")
Najlepsze, co dostaniesz, to
showbreak
opcja, która umieści stały ciąg przed każdym zawiniętym wierszem (używamset showbreak=...
).źródło
:help 'showbreak'
, nie, nie możesz -showbreak
to tylko ciąg.Zgadzam się z odpowiedzią, która mówi, że „showbreak” jest najlepszą opcją. Showbreak zazwyczaj nie pozwala na umieszczanie znaków niedrukowalnych (np. Spacji lub tabulatorów) w ciągu showbreak, więc jak zwykle jest używany, daje tylko wskaźnik wzdłuż lewego marginesu, tj. Bez rzeczywistego wcięcia. To nie jest świetne, ponieważ moim zdaniem głównym celem OP jest nadanie zawiniętym liniom wcięcia, aby nie zaśmiecały lewego obszaru marginesu i nie wyglądały jak własne linie.
Tak więc jednym ze sposobów dodania (brzydkiego) wcięcia przy użyciu funkcji showbreak jest po prostu użycie dużej liczby znaków, .eg, ": set showbreak => --------------->". Powoduje to coś, co wygląda tak:
Lepszą alternatywą może być użycie nierozdzielających znaków spacji (zakładając, że twoja instancja Vima obsługuje Unicode), z których każdy można wprowadzić do ciągu showbreak za pomocą sekwencji klawiszy ctrl-v, 160. W ten sposób możesz wprowadzić ciąg showbreak, który jest pusty po lewej stronie i wygląda jak prawdziwe wcięcie. Np. ": Set showbreak =.......... >>" gdzie każdy '.' w poleceniu jest właściwie nierozerwalnym znakiem spacji wprowadzanym przez naciśnięcie Ctrl-V, 160. W ten sposób otrzymasz opakowanie, które jest ładnie wcięte, na przykład:
Nadal nie masz możliwości zmiany poziomu wcięcia w zależności od wcięcia poprzedniej linii, ale przynajmniej otrzymujesz czyste wcięcie zawiniętych linii bez dużej ilości wizualnego bałaganu wzdłuż lewego marginesu okna. Wciąż może być zamieszanie, jeśli wcięcie zawiniętej linii jest mniejsze niż na początku rzeczywistej linii, ale można by tego uniknąć, ustawiając dość duże „wcięcie” showbreak (tj. Większe niż jakiekolwiek wcięcie powszechnie występujące w kodzie ), ale wciąż na tyle mały, że zapewnia wystarczająco dużo miejsca na czytelne zawijanie tekstu. W przypadku wielu zastosowań myślę, że wcięcie typu showbreak z 40 lub 50 spacjami zrobiłoby to całkiem dobrze.
źródło
:set showbreak=\ \ \ \
. Jednak nadal nie działa w przypadku kart.