Come posso impostare la larghezza della finestra di gvim su 80 colonne di testo, oltre a quelle necessarie per mostrare il numero di riga


9

Uso gvim con

set number

nel mio .vimrccosì mostra il numero di biancheria, più uno spazio, prima di ogni riga.

Se il documento ha meno di 10 righe, sono necessarie 2 colonne, se contiene più di 10, 3 colonne e così via.

Se lo metto

set lines=40 columns=80

in .gvimrc, mostrerà 78 colonne di codice e 2 per il numero di biancheria più ritmo, o 77 + 3 e così via.

Vorrei che la larghezza della finestra fosse impostata su 80 colonne + qualunque numero di colonne fosse necessario per mostrare il numero di biancheria.

Non deve essere dinamico, ma mi piacerebbe poter leggere il numero di righe di un determinato file e impostarlo in columnsbase. (Certo, una soluzione dinamica sarebbe davvero pulita, ma non essenziale)

Risposte:


9

Prova questo nel tuo ~ / .vimrc:

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

Ogni volta che carichi un buffer (ovvero, apri un file), che determinerà il numero di colonne richieste per mostrare il numero di riga più grande, imposta l'opzione 'numberwidth' di conseguenza, e imposta 'colonne' su quel numero più 80 per il tuo testo .


Grazie! Funziona benissimo quando si apre un file. Qualche idea su come farlo anche quando si cambia scheda? Grazie in anticipo.
Elton Carvalho,

1
Gli eventi di autocommand di Vim sono elencati in :help autocommand-events. Tra questi c'è TabEnter, quindi potresti provare a sostituire BufReadcon BufRead,TabEnterl'esempio sopra e vedere se questo ti dà il comportamento che desideri. Non ho testato l'esempio con quell'evento da solo.
garyjohn,

Grazie @garyjohn, TabEnter ha funzionato come previsto. Forse più tardi suonerò con quegli eventi con autocommand. Sono utilmente utili!
Elton Carvalho,

1
@david_nash: 'numberwidth'cresce solo logaritmicamente con il numero di righe nel file, quindi se puoi permetterti di 'number'abilitare lo spazio orizzontale , non penso che dovresti preoccuparti di limitarlo.
Garyjohn,

1
@JonathanHartley: Sarebbe abbastanza facile controllarlo con un operatore ternario ( :help expr1) o con un if / endif (es :help options-in-terminal.). Il problema sta cambiando e colonne quando 'number'viene modificato. Ho pensato di utilizzare l'evento autocommand OptionSet, ma :help OptionSetdice che è una cattiva idea ripristinare un'opzione durante l'elaborazione di questo evento.
garyjohn,

2

Io uso

set lines=24 columns=84

nel mio $ HOME / .gvimrc che mi dà quello che vuoi. Raramente (se mai) ho file che sono più lunghi delle 999 righe, quindi funziona per me.


Questo è quello che stavo facendo, ma mantenere esattamente 80 colonne di testo è bello perché posso evitare di finire con 81 caratteri in una riga, il che non è un grosso problema, ma è bello evitare.
Elton Carvalho,

2

Ho impostato la larghezza del numero su, diciamo, 5 e quindi ho impostato le colonne su 85 (80 + 5). Questo dovrebbe essere buono per i file da 0 righe a un milione di righe.

Ecco cosa potresti dover inserire nel file ~ (.vimrc (predefinito)

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

Vedrai che il numero di riga è formattato con '% 5d' (5 è la larghezza del numero sopra) invece del formato predefinito '% d', sprecando un po 'di proprietà immobiliare prima dei numeri di riga, ma mantenendo la coerenza.


Benvenuto in Super User. Tieni presente che hai inviato una risposta a una domanda molto vecchia. Sebbene non ci sia nulla di sbagliato nel farlo, tieni presente che potresti non ricevere una risposta.
CharlieRB,
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.