2012-03-07 15 views
10

Che cosa significa una linea orizzontale in vim? Durante la modifica di un file remoto, vedo una linea orizzontale nella riga corrente.Riga orizzontale in vim

http://i.stack.imgur.com/M8GXB.png

non vedo, mentre la modifica dei file locali

Edit: CursorLine non viene mostrata fino risparmio il file di (: w). Quando digito: w e inserisci la password, appare la linea di cursore. Perché ha un tale comportamento? Quando modifico il file sulla macchina remota, la linea di cursore è disattivata e non viene mostrata.

+0

Che cosa si intende per "la modifica di un file remoto"? Avvio di vim su una macchina diversa in una sessione SSH? Perché ovviamente l'altra macchina probabilmente ha una configurazione diversa dalla tua. –

+0

@NiklasB. Intendo eseguire questo comando sul mio computer: "vim scp: //example.com//path/to/script" – user16948

+0

Quindi è una differenza se si utilizza 'vim/local/file' o' vim scp: // remote/file'? O stai confrontando gvim con vim? Quello è strano. –

risposta

9

Come altri hanno risposto, l'effetto è probabilmente causato dallo cursorline option.

è possibile rintracciare ciò che è scritto ha reso la modifica più recente a un'opzione eseguendo il comando set optname? sotto la verbose command:

:verbose set cursorline? 

Si avrà probabilmente solo trovare che il plugin netrw impostarlo; Netrw gestisce l'accesso alla directory locale e l'accesso a directory/file remoti come l'esempio scp://. Netrw regola cursorline (e cursorcolumn) per i propri scopi (ad esempio elenchi di directory), ma tenta di ripristinare il valore sul "valore utente". Sfortunatamente, la sua idea del "valore utente" viene catturata quando parte del codice Netrw viene caricata e non viene aggiornata in seguito.

La mia ipotesi è che, in qualche modo (tramite qualche altro plug-in o bit di configurazione), cursorline viene impostato quando Netrw carica (e ne acquisisce il valore), ma viene successivamente ripristinato dal momento in cui si inizia a modificare il primo file. Quindi, quando in seguito si salva il file (:w), Netrw ripristina il valore "catturato". Sfortunatamente, non sembra che ci sia un buon modo per aggiornare questo valore "catturato" dell'opzione cursorline (non esiste un accesso "esterno" alla variabile di script che usa, e non "ricattura" se ricarichi manualmente il file).

Ciò che si può fare, tuttavia, è caricare esplicitamente il bit di Netrw che "acquisisce" cursorline quando il valore desiderato è attivo.Si potrebbe farlo con i seguenti due comandi presto nella vostra ~/.vimrc (possibilmente in cima, se necessario-ha bisogno di essere prima che la prima volta autoload/netrw.vim sarebbe mai essere utilizzato):

set nocursorline 
runtime autoload/netrw.vim " will 'capture' cursorline and cursorcolumn values 

netrw sarà ancora impostato/resettare cursorline (e cursorcolumn), ma finché il valore che si desidera normalmente corrisponde al valore che è attivo prima che venga caricato Netrw, non lo si noterà.

+0

" sembra "almeno che il valore catturato, beh, veramente hardcoded, è in 'g: netrw_cursorline': http://code.google.com/p/vim/source/browse/runtime/autoload/netrw.vim?name=vim73#161, ma nella versione più recente, quella variabile è deprecata e sostituito con 'netrw_usercul' – SingleNegationElimination

+0

@TokenMacGuy:. le variabili“catturare”che ho descritto sono' s: netrw_usercul' e 's:. netrw_usercuc' i loro valori sono presi dai valori della' 'cursorline' e opzioni cursorcolumn' quando' autoload/netrw.vim' è caricato (cioè non codificato) Netrw v140 (fornito con stock Vim 7.3) ha un bug nel fatto che queste variabili di sessione non vengono mai create se 'g: netrw_cursor line' è predefinito (es. nel tuo ~ ~/.vimrc') -successi successivi della funzionalità di Netrw genereranno errori "variabili non definite" (sebbene questi errori possano "scorrere per" per lo più innocuo). La soluzione esatta dipende dalla versione in uso. –

4

È il cursorLine. Il suo aspetto è definito nel tuo colorscheme. Quello sul computer remoto è probabilmente diverso dal tuo o c'è una discrepanza tra il tuo client/server $TERM.

2

Yup, ": impostare CursorLine" o ": impostare nocursorline" per attivare la linea di acceso o spento.

Il comando "vim scp: // ...." copia il file remoto sul computer locale (cioè macchina in cui il processo di "vim" corre), quindi si apre il file in "vim" per voi modifica, quindi, se il file è stato modificato, copia il file sul sistema remoto. Di conseguenza, l'evidenziazione della sintassi ecc. È determinata solo da "vim" sul computer locale.

Dello stesso tipo di sintassi (": se syn" per mostrare corrente regime evidenziazione sintassi) sono evidenziati nello stesso modo. I file, in cui vedi la differenza, hanno lo stesso tipo di sintassi?

+0

cursore non viene mostrato fino a quando non salvi il file (': w'). Quando digito ': w' e inserisci la password, appare _cursorline_. Perché ha un tale comportamento? Quando modifico il file nella linea remota, la linea di cursore è disattivata – user16948

+0

Re. vedere la linea del cursore solo dopo un ': w': dovrei indovinare che si tratta di un bug di rendering del terminale, sia in quella particolare combinazione di vim/shell/OS, o nel programma terminale che usi (putty, Mac OS" terminale ", ecc.). Senza fare un ': w', cosa succede se si esegue semplicemente un' ctrl-l' per ridisegnare lo schermo? Vedete la linea del cursore allora? – aqn

+0

Re. "modifica file nella linea remota cursore è disattivato": cosa significa? Hai fatto SSH al computer remoto ed esegui l'accesso, quindi emetti 'vi file' (come oppesso a fare' vim scp: // ... "' sul tuo computer locale)? Se è così, la tua 'cursorline' è determinata da la sintassi del file in vi _ su quella macchina_. Per controllare il valore di 'cursorline' per la sintassi di quel particolare, fai': se cursorline? '. – aqn

5

io non so bene la soluzione più semplice per ottenere ottenere netrw per catturare davvero il giusto valore, ma come minimo (in quanto per me, nocul è giusto,), aggiungendo:

let g:netrw_cursorline=0 

Alla fine del mio ~/.vimrc sembra aver risolto il problema per me. Spero che questo aiuti qualcuno!

+0

Non capisco perché ho iniziato ad avere questo problema tutto ad un tratto e perché questo lo ha risolto lol – Ben

Problemi correlati