2011-11-05 23 views
14

De forma predeterminada, cuando se desplaza hacia abajo hasta el final del búfer mostrado en una ventana vim, puede desplazarse hasta que la última línea del archivo esté en la primera línea del área de visualización vim. Todas las demás líneas del área de visualización están marcadas con "~" caracteres. ¿Hay alguna configuración para detener el desplazamiento cuando la última línea de archivo se encuentra en la parte inferior de la ventana de vim?vim - Detener el desplazamiento después del primer archivo que finaliza

Editar: Para ser más precisos, este comportamiento solo se aplica al desplazamiento de la rueda del mouse o la navegación de la tecla de navegación que llenan la pantalla con esas marcas de línea inexistentes. I el cursor se mueve línea por línea usando la tecla de flecha hacia abajo, se detiene correctamente en la última línea de archivo.

+0

Me pregunto si podría manejar para obtener VIM trabajando como si quisiera? – JohnTortugo

Respuesta

10

Simplemente zb para alinear la línea actual a la parte inferior de la ventana.

E.g.Gzb

No mi sorpresa hay una familia de movimientos de paneo relacionados:

  • zj abajo
  • zk hasta
  • zt superior
  • zb inferior
  • zz centro (centro)
  • zz centro (centro)

Para compl eteness:

  • zl/zL pan vertical a la derecha
  • zh/zH pan vertical a la
  • izquierda

También, echar un vistazo a scrolloff

utilizo

:set scrolloff=2 

a mantener siempre un buffer mínimo de 2 líneas antes o después de la línea actual del cursor. Esto hace que estos movimientos de panorámica sean casi mágicos. Me paso todas las bases de código días de navegación usando nada más que

  • paginación Cd/Cu, hjkl y reubicaciones de paneo frecuente con (en su mayoría) zz
  • navegar }/{
  • ctags para todas las demás necesidades de navegación
+0

Sí, ya tengo una configuración de desplazamiento. Pero no tiene ningún efecto con PgDown o el desplazamiento de la rueda del mouse. – greydet

+0

¿Hay alguna manera de reasignar la rueda hacia abajo o la rueda del mouse hacia abajo para usar un combo basado en el comando 'z' para detenerlos automáticamente en la última línea del archivo? – greydet

+0

De hecho, una posible solución es reasignar el desplazamiento de la rueda del mouse y la tecla de avance de página hacia el comando '}'. Gracias por dejarme saber estos comandos de navegación – greydet

1

No lo creo. Pero incluso si hubiera, ¿cómo le gustaría que se comportara si hubiera menos líneas en su archivo que en su pantalla? Tendría que mostrar esas líneas inexistentes de alguna manera.

Debería haber alguna manera de decirle a vim que muestre esas líneas si la parte superior del archivo está a la vista, pero no las deje mostrar si la parte superior no está a la vista.

+3

Por supuesto, si el archivo no contiene suficientes líneas para llenar la pantalla, no hay ningún problema con esas marcas de línea inexistentes. Simplemente no quiero que PgDown o la rueda del mouse se muevan por debajo del final del archivo – greydet

1

No, su descripción no es correcta.

Al desplazarse por línea por línea hacia abajo con flechas o con las teclas j/k, Vim se detendrá en la parte inferior de la pantalla. Es decir, no va a llene la pantalla con líneas inexistentes.

Cuando, sin embargo, uno va página por página con PgDown/PgUp, entonces puede obtener líneas inexistentes en la pantalla. No se puede evitar, ya que las teclas PgDown/PgUp no saltan línea por línea.

+1

Sí, eso es lo que quiero evitar: tener líneas inexistentes en la pantalla usando PgDown o la rueda del mouse. – greydet

+0

@greydet - Bueno, ¿cómo te gustaría que Vim se comportara cuando abandonaste en la última página? – Rook

0

Acabo de encontrar este (http://vimrc-dissection.blogspot.se/2009/02/fixing-pageup-and-pagedown.html):

map <silent> <PageUp> 1000<C-U> 
map <silent> <PageDown> 1000<C-D> 
imap <silent> <PageUp> <C-O>1000<C-U> 
imap <silent> <PageDown> <C-O>1000<C-D> 

que parece funcionar para las teclas de página.Y después de buscar sin éxito en relación con el desplazamiento, se me ocurrió esto:

map <ScrollWheelUp> H5k 
map <ScrollWheelDown> L5j 

Se pierde la línea, pero no es muy útil cuando se desplaza de todos modos? Como alternativa, también se puede hacer:

map <ScrollWheelUp> <C-U> 
map <ScrollWheelDown> <C-D> 

Si no te importa el desplazamiento muy rápido ...

Cuestiones relacionadas