avvolgere la linea vim con rientro


20

Vim / gvim avvolgerà le linee lunghe in questo modo:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

C'è un modo per convincere Vim a avvolgere quelle righe in questo modo:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Voglio che la linea avvolta inizi un po 'oltre il rientro di quella linea. (Per essere chiari, sto parlando di avvolgimento, non di larghezza del testo.)

Voglio che il rientro della riga venga preso in considerazione nell'involucro di quella riga in modo che la struttura del codice non sia nascosta da righe avvolte.

Risposte:


17

AGGIORNAMENTO: questa funzionalità è stata rilasciata in vim 7.4.338, anche se vorrai 7.4.354 o successivo .


Quindi a quanto pare ciò richiede una patch per Vim . C'è una patch di Vaclav Smilauer del 2007. Ho aggiornato la patch per funzionare con Vim 7.2.148 di Fedora 11. Ma sembra che funzioni.


1
Mentre Fedora rilascia aggiornamenti a Vim, sto aggiornando la patch. Vedi retracile.net/wiki/VimBreakIndent per l'ultimo.
retracile

Punti bonus a qualcuno che può spiegare come farlo funzionare con MacVim.
Ciambella

Dov'è la patch? Quel sito non si collega a nessuno che io possa vedere
puk

@puk: Siamo spiacenti, un importante aggiornamento del software ha cambiato alcune posizioni dei collegamenti. Ho risolto quelli ora.
retracile

1
Ad oggi (25 giugno 2014) la patch breakentent fa ufficialmente parte di Vim 7.4 - viene aggiunta dalla patch 338 e 345.
Heptite,

14

Nel tuo .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

O semplicemente digitare :set showbreak=----->in qualsiasi sessione.

Per riferimento, il mio percorso di ricerca (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


Molto bello, ma non è quello che volevo dire. L'hai preso un po 'più letteralmente di quanto pensassi, quindi la mia colpa è lì. Vedrò se posso chiarire.
retracile

1

La soluzione alla tua domanda può essere raggiunta impostando due parametri nel tuo vimrc:

Per interrompere le linee con la stessa rientranza: set breakindent

E uno spazio per il rientro di linee morbide: let &showbreak=' '

Funzionerà in questo modo:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

Non è la risposta perfetta che stai cercando, ma ecco cosa faccio per aggirare la mancanza di indentazione di Vim.

Innanzitutto, scarica la guida al rientro di Nathanael Kane (opzionale) poiché indica meglio a quale livello di rientro sei, fino al punto in cui puoi impostare le larghezze di tabulazione su solo 2 spazi!

In secondo luogo, mappare una combinazione di tasti per attivare la parola a capo automatico. Ho impostato il mio 'r' per 'avvolgere' ('w' è per salvare) in questo modo

:noremap <leader>r :set nowrap! <CR>

Poi ho sempre la parola a capo, dal momento che è esteticamente più piacevole, e la abilito rapidamente se devo modificare la linea.


0

Il fallo "soluzione alternativa" che attualmente uso è di avere un rientro fisso ma grande nel prefisso. Sembra buono, fintanto che questa rientranza fissa è più grande della rientranza della linea avvolta, come nella maggior parte dei casi.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.