2012-03-07 26 views
10

¿Qué significa una línea horizontal en vim? Al editar un archivo remoto, veo una línea horizontal en la línea actual.Línea horizontal en vim

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

no veo que durante la edición de los archivos locales

Editar: cursorline no se muestra hasta puedo guardar el archivo (: w). Cuando escribo: w e ingreso la contraseña, aparece la línea de cursor. ¿Por qué tiene tal comportamiento? Cuando edito el archivo en la máquina remota, la línea de cursor se apaga y no se muestra.

+0

¿Qué quiere decir con "la edición de un archivo remoto"? ¿Iniciar vim en una máquina diferente en una sesión SSH? Porque obviamente la otra máquina probablemente tiene una configuración diferente a la tuya. –

+0

@NiklasB. Me refiero a ejecutar este comando en mi propia máquina: "vim scp: //example.com//path/to/script" – user16948

+0

Así que es una diferencia si usas 'vim/local/file' o' vim scp: // remote/archivo'? ¿O estás comparando gvim con vim? Eso es raro. –

Respuesta

9

Como han respondido otros, el efecto probablemente sea causado por cursorline option.

Puede rastrear lo que es Default realizó el cambio más reciente de una opción mediante la ejecución del comando set optname? bajo la verbose command:

:verbose set cursorline? 

Es probable que acaba de descubrir que el plugin netrw la puso; Netrw maneja la exploración del directorio local y el acceso remoto al directorio/archivo, como su ejemplo scp://. Netrw ajusta cursorline (y cursorcolumn) para sus propios fines (por ejemplo, listados de directorios), pero intenta restaurar el valor al "valor de usuario". Desafortunadamente, su idea del "valor del usuario" se captura cuando se carga una parte del código Netrw y no se actualiza posteriormente.

Supongo que, de alguna manera (a través de otro complemento o configuración), cursorline se establece cuando Netrw carga (y captura su valor), pero luego se restablece cuando comienza a editar el primer archivo. Luego, cuando más tarde guarde el archivo (:w), Netrw restablecerá el valor "capturado". Desafortunadamente, no parece haber una buena forma de actualizar este valor "capturado" de la opción cursorline (no hay acceso "externo" a la variable de script que utiliza, y no se "vuelve a capturar" si recarga manualmente el archivo)

Lo que puede hacer, sin embargo, es cargar explícitamente el bit de Netrw que "captura" cursorline cuando su valor deseado está activo.Se podría hacer lo mismo con los dos comandos siguientes al comienzo de su ~/.vimrc (posiblemente en la parte superior, si es necesario, tiene que ser antes de la primera vez autoload/netrw.vim nunca se utilizaría): seguirá siendo establecido

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

netrw/reinicie cursorline (y cursorcolumn), pero mientras el valor que normalmente desee coincida con el valor que está activo justo antes de cargar Netrw, entonces no lo notará.

+0

" parece "al menos que el valor capturado, bien, realmente codificado, es en 'g: netrw_cursorline': http://code.google.com/p/vim/source/browse/runtime/autoload/netrw.vim?name=vim73#161, pero en la versión más reciente, esa variable está en desuso y reemplazado por 'netrw_usercul'. – SingleNegationElimination

+0

@TokenMacGuy: Las variables de" captura "que describí son' s: netrw_usercul' y 's: netrw_usercuc'. Sus valores se toman de los valores de las opciones' cursorline' y 'cursorcolumn' cuando' autocarga/netrw.vim' está cargado (es decir, no está codificado). Netrw v140 (incluido con stock Vim 7.3) tiene un error porque estas variables de sesión nunca se crean si 'g: netrw_cursor line' está predefinido (es decir en su '~/.vimrc') usos subsiguientes de la funcionalidad Netrw generarán errores de" variable indefinida "(aunque estos errores pueden" desplazarse por "en su mayoría inofensivamente). La solución exacta depende de la versión en uso. –

4

Es el cursorLine. Su apariencia se define en su esquema de colores. El de la máquina remota es probablemente diferente al suyo o hay una discrepancia entre el cliente $TERM.

2

Sí, ": set cursorline" o ": set nocursorline" para activar la línea de encendido o apagado.

El comando "vim SCP: // ...." copia el archivo remoto en su máquina local (es decir, equipo en el que el proceso de "vim" corre), a continuación, abre el archivo en "vim" para que usted pueda edite, luego, si ha modificado el archivo, copia el archivo nuevamente en el sistema remoto. Como tal, el resaltado de sintaxis, etc. se determina solo por "vim" en su máquina local.

Los archivos con el mismo tipo de sintaxis (": se syn" para mostrar el esquema actual de resaltado de sintaxis) se resaltan de la misma manera. ¿Los archivos, en los que ve la diferencia, tienen el mismo tipo de sintaxis?

+0

cursorline no se muestra hasta que guarde el archivo (': w'). Cuando escribo ': w' e ingreso la contraseña, aparece _cursorline_. ¿Por qué tiene tal comportamiento? Cuando edito el archivo en la máquina remota, la línea de cursor está desactivada – user16948

+0

Re. ver la línea del cursor solo después de ': w': tendría que adivinar que es un error de renderizado de terminal, ya sea en esa combinación particular de vim/shell/OS, o en el programa de terminal que usas (putty, Mac OS") terminal ", etc.). Sin hacer un ': w', ¿qué sucede si solo hace un' ctrl-l' para volver a dibujar la pantalla? ¿Ves la línea del cursor entonces? – aqn

+0

Re. "editar archivo en la línea de cursor de la máquina remota está desactivado": ¿qué significa eso? ¿Hiciste SSH en la máquina remota e iniciaste sesión, luego echas 'vi file' (como oppsoed para hacer' vim scp: // ... "' en tu máquina local)? Si es así, tu 'cursorline' está determinada por la sintaxis del archivo en vi _en esa máquina_. Para verificar el valor de 'cursorline' para la sintaxis de ese particular, do': se cursorline? '. – aqn

5

yo no sé muy bien la solución más simple para conseguir obtener netrw para capturar realmente el valor correcto, pero al menos (ya que para mí, es nocul derecha,) añadir:

let g:netrw_cursorline=0 

Para el final de mi ~/.vimrc parece que me arregló el problema. ¡Espero que esto ayude a alguien!

+0

No entiendo por qué empecé a tener este problema de repente y por qué esto lo solucionó jajaja – Ben

2

La versión 142 de netrw.vim ha corregido este error, al menos para mí (vim 7.3, la versión anterior de netrw.vim era 140, ejecutándose bajo cygwin).

, usted puede obtener la versión más reciente aquí: http://www.vim.org/scripts/script.php?script_id=1075

Cuestiones relacionadas