¿Cómo reasignar gg a g?

8

No uso ninguno, g combinationsexcepto ggen modo normal. ¿Cómo puedo lograr que presionar guna vez sea suficiente?

nnoremap g gghace que espere unos 3 segundos para que continúe el comando. Desmapear de gantemano tampoco funciona, porque no puedo mapear ggsi desmapeo g. ¿Debo desasignar todas las combinaciones que no lo son gg?

Peret Finctor
fuente
77
El hecho de que no use ninguna gasignación ahora, no significa que no usará ninguna en el futuro. Hay algunos bastante útiles allí. por ejemplo gE, g_, gt, gT, g,, g;, gu, gU, gn, y mi personal favorito gf. Consulte :h gpara obtener una lista de todas las asignaciones de g.
Peter Rincker
Oh si, gf es genial. Pero no lo necesito tan a menudo en este momento. Tal vez lo traslade a una tecla de acceso rápido por separado cuando lo necesite. (Nuestros nombres son tan simuladores, me pregunto si miré el tuyo cuando elegí el mío).
Peret Finctor
Y quiero que vim y menos se comporten igual, si es posible. Menos utiliza un solo g.
Peret Finctor
3
Probablemente uso gvaproximadamente cada 90 segundos más o menos
the_velour_fog
1
También hay algunos complementos cuyas asignaciones predeterminadas comienzan con g, como gcen los comentarios . También debe considerar que va a funcionar fuera de teclas si continúa utilizando Vim desde hace mucho tiempo, y que se necesita un poco de tiempo / esfuerzo para entrenar a su memoria muscular después de que se acostumbre a una asignación dada.
mMontu

Respuestas:

22

Suponiendo que tiene una versión más nueva de Vim (7.3.1261+) puede usar <nowait>

nnoremap <nowait> g gg

Aunque, no puedo enfatizar la utilidad de algunas de las gasignaciones. Aquí hay una breve lista de gasignaciones útiles :

  • gE - final del movimiento de la palabra hacia atrás
  • g_ - hasta el último carácter no en blanco de una línea
  • gt& gT- navegación por pestañas
  • g,& g;- de ida y vuelta a través de la lista de cambios
  • gu& gU- cambio de mayúsculas y minúsculas
  • gn - seleccionar visualmente el patrón actual
  • gv - vuelva a seleccionar la selección visual anterior
  • gi - iniciar el modo de inserción en la misma posición El modo de inserción se detuvo por última vez
  • gf - Ir al archivo debajo del cursor (Mi favorito personal)

Consulte :h gpara obtener una lista de todas las gasignaciones.

Personalmente, simplemente aprendería a usarlo, ggya que es un buen hábito y menos se sabe que es un buen emulador de Vi / Vim.

Para más ayuda ver:

:h g
:h :map-nowait
Peter Rincker
fuente
99
gitambién es bastante fantástico (ingrese al modo de inserción donde lo dejó anteriormente). Lo uso todo el tiempo cuando estoy escribiendo una línea de código y tengo que ir a verificar algo en otra parte del archivo.
Pomo
1
Sí. Esto es como la gente que se asignan wa :w<CR>y qa :qall<CR>porque es "más rápido". Solo te estás robando los beneficios de vim.
wchargin
@WChargin oh, así que no soy el primero. ¿Sabes más sobre este tipo de remaps, puedes redirigirme a esas personas?
Peret Finctor
2
@PeretFinctor No estoy seguro de si estás bromeando, mi punto es que este tipo de remaps son muy malas ideas. Las personas que hacen esto solo están tratando de usar vim como un editor común y corriente; w, qy gtodos ofrecen una funcionalidad extremadamente extensa que deberías usar con frecuencia durante la edición, pero que estás suprimiendo para ahorrar fracciones de segundo cuando guardas. No sé sobre usted, ¡pero ahorro con mucha menos frecuencia que avanzo una palabra!
wchargin
1
@PeretFinctor: ¿Por qué no usas w / W y b / B para avanzar y retroceder palabras, de la forma en que Vim proporciona de forma inmediata? - ¿Ves el patrón aquí? Intentas luchar con Vim. Muévete con él, usa las cosas que proporciona como se proporcionan. Se va a ser más fácil de esa manera, y más beneficioso para el flujo de trabajo en el largo plazo.
DevSolar
7

Solo para intervenir, si realmente quieres una sola tecla, ¡aún puedes usar ... otra (es decir, una tecla que no necesitas tanto)! De esta manera, puede dejar solo el útil gprefijo.

Por ejemplo, puede "sobrecargarse" 0para alternar entre funcionalidad 0y ^, cuando se presiona repetidamente, y en su ^lugar es libre para su uso (ya que es un carácter de subida intuitivo ).

Estoy seguro de que esto no es perfecto, pero aquí hay una posible prueba de concepto rápida y sucia:

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

Lo anterior todavía permite usar 0 como movimiento, y también desde el modo visual. En una línea con sangría, y0ahora se copiaría de la posición del cursor al primer carácter que no esté en blanco. Si desea copiar en la columna de inicio, tendrá que ir visual:v00y

Ahora también puede usar 13^para ir a la línea 13.

VanLaser
fuente
1
Esa es realmente una muy buena idea, ¡gracias!
Peret Finctor