Come gestisco le righe molto lunghe nel testo (oltre 500 caratteri)?


19

Per alcuni formati di testo, le interruzioni di riga contano.

Ad esempio, uso spesso Vim per scrivere documenti MediaWiki, in cui non puoi semplicemente inserire un'interruzione di riga ovunque (diversamente da Markdown). Quindi sono costretto a scrivere righe con molti personaggi.

Questo può portare a linee lunghe (oltre 200 caratteri) o anche molto lunghe (oltre 1000 caratteri). Lo trovo molto imbarazzante da usare in Vim. Un esempio è se voglio modificare qualcosa nel mezzo della linea di 1000 caratteri, devo spostare il cursore 500 volte.

Questo può essere reso un po 'più veloce con wo /, ma è comunque imbarazzante.

Ci sono modi migliori per affrontarlo? Tasti di movimento migliori? Una sorta di "wrapping falso" (il testo si comporta come se tw=80, ma no \nnel file) o qualcos'altro?


1
È inoltre possibile impostare anche display = lastline per evitare righe @ vuote alla fine dello schermo.
Casuale 832,

Risposte:


21

È possibile utilizzare una gserie di comandi per spostarsi ai confini dell'area dello schermo visibile. Ad esempio, si g$sposta sul bordo destro dello schermo (che non è necessariamente la fine della linea). gjsposta il cursore in basso di una riga come appare sullo schermo (che non è necessariamente una riga logica in basso).

Forse potresti ricollegare i tasti freccia:

nnoremap <Up> gk
nnoremap <Down> gj

Oppure alcune persone si ricollegano direttamente ke j:

nnoremap k gk
nnoremap j gj

Per la modalità di inserimento, è possibile utilizzare:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

O:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

Inoltre, se usi :set wrap, Vim avvolgerà le linee, in modo da poter vedere tutte le linee. Puoi anche usare set showsbreak=+per mostrare a +per indicare che Vim sta eseguendo il wrapping.


Per passare a posizioni specifiche della colonna, è possibile utilizzare il |comando Ad esempio, 200|andrà alla posizione della colonna 200.


1
... e g5jsaltare 5 giù, come al solito.
yo'

1
@yo 'Penso che intendi5gj
Martin Tournoij il

1
@Carpetsmoker Strange; con la maggior parte dei comandi non importa in quale ordine si danno i prefissi e i numeri, purché il comando stesso sia l'ultimo. Qui non: - /
yo

@yo ', beh, in g5j, g5viene visualizzato per primo, che passa al successivo 5prima di applicare il j. Ecco perché non può fare quello che 5gjfa.
Shahbaz,

3

Vim ha il supporto per il soft wrapping, solo set wrapper abilitarlo e avvolgerà le linee lunghe che vanno oltre lo schermo visibile. Puoi usare gj& gkper spostarti rispettivamente su / giù su tali linee avvolte.


2

Quando ho a che fare con linee molto lunghe, il più grande punto di dolore ha a che fare con diverse lunghezze di linea. Cioè, spostandosi verso l'alto o verso il basso vicino alle estremità delle linee scorre la finestra molto a sinistra oa destra.

Questo può essere evitato impostando virtualedit=all, che consente di spostare il cursore nello spazio molto dopo la fine della linea.


1

Come altri hanno già detto, puoi usare g+ qualcosa per spostarti. Tuttavia, quando si hanno linee estremamente lunghe, premere gjpiù volte per spostarsi verso il basso non è ergonomico. Ho il seguente nel mio .vimrcper rendere molto più facile:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

Su un Mac, questo mi permette di usare j, k, $, 0 e ^ sulle righe del display tenendo premuto il tasto comando. Su altri sistemi, invece di Dte puoi provare Mo Aper Alt o Cper Control.

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.