joedicastro / dotfiles

My .dotfiles

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Problemas con el autocompletado

aaloy opened this issue · comments

  1. Empezamos a escribir
  2. Aparece el autocompletado así como vamos escribiendo
  3. aparece por ejemplo:
    fabrica
    fabricacion

yo quiero escribir fa y cambiar de línea
Al pulsar intro me va a escribir fabrica, con lo que tengo que volver atrás y borrar.

Me pasa mucho escribiendo código donde existe el módulo y un nombre de función con paréntesis, escribiendo clases y demás. Es bastante molesto y contraproductivo.

Si, es un poco coñazo, yo también lo sufro a veces, pero en vez de solucionarlo hasta ahora me he apañado con un rodeo, simplemente inserto un espacio al final de la palabra antes de cambiar de línea. Si se trata de un fichero python, el plugin python-mode elimina automáticamente los espacios al final de línea, por lo tanto no me preocupa. Si no es un fichero python, la línea de estado me informa de que hay trailing-whitespaces y simplemente ejecuto el atajo adecuado <Leader>et (remove trailing whitespaces del menú text de Unite) y asunto solucionado.

Pero llevas razón, intentare no prolongar la solución más tiempo y buscar la causa de esto e intentar solucionarlo.

Le he estado dando vueltas y realmente el plugin está funcionando adecuadamente,
porque cuando pulsas Enter para comenzar otra línea lo que haces es realmente
confirmar la selección automática del dialogo emergente de autocompletado.

Veo dos alternativas para abordar este problema:

  1. Ignorar la selección automática que el autocompletado ha realizado por
    nosotros. Esto podemos hacerlo de vario modos:
    • El ortodoxo, cancelando el autocompletado con <C-E>.
    • El que comentaba antes, utilizando un espacio en blanco después de la
      palabra y antes de cambiar de linea.
    • El retorcido, que es pulsar <ESC> y luego o para cambiar de modo y
    • empezar una nueva línea.
  2. Hacer que el plugin nunca seleccione las palabras de forma automática,
    simplemente nos mostrara las palabras sugeridas y seremos nosotros los que la
    tengamos que seleccionar manualmente de la lista, usando las habituales
    teclas de navegación <C-N> y <C-P>. Esto requeriría un pequeño periodo para
    acostumbrarse, pero funciona bastante bien.

Si quieres experimentar con esta última alternativa para saber de lo que hablo, solo tienes que comentar esta línea en tu .vimrc:

let g:neocomplete#enable_auto_select = 1

Realmente distinguiría entre los usos de programación y los usos de escritura normal de texto. En programación es muy habitual tener nombre que difieren de pocas letras o que empiezan igua, o que añaden paréntesis al final.

En estos casos el autocompletado se convierte en un fastidio, ya que no te ahorra realmente pulsaciones cuando te escribe estoesunmetodolargolarguisimo cuando tu querías escribir esto: + intro. Si escribes rápido y casi sin mirar, tener que estar pendiente del autocompletado y de los intros es perder velocidad. Muchas veces es más rápido acabar de teclerar la palabra que hacer el c-n para buscarla.

Por otra parte el autocompletado es realmente útil cuando se utiliza para obtener los métodos o atributos de un objeto. Ahí tener una opción para desplegar los atributos (shift+espacio) es mi preferida va muy bien, no por lo que representa de autocompletado, sino por poder ver los métodos y hacer instrospección.

Igual podría hacer de manera local, ya que entiendo que este problema se puede dar en unas circunstancias muy concretas:

  1. Permitir autoselect por tipo de archivo
  2. En cualquier caso permitir mostar autocompletado a través de atajo de teclado.

Al C-N y C-P después de que me lo dijeras ya me había acostumbrado ;-P, lo encuentro menos fastidioso que la selección automática cuando estoy programando.

La verdad es que cuando voy rápido muchas veces también termino las palabras
antes de siquiera tener tiempo para leer las alternativas que me ofrece el
autocompletado.

Y si, la selección automática también empieza a ser un coñazo para mi cuanto más
rápido quiero trabajar. Si estás acostumbrado a usar las teclas de navegación,
pasamos de la selección automática y se muestra siempre el popup, pero solo se
hará la selección de forma manual a gusto del consumidor. Y si, yo también lo veo más útil para ver los métodos.

Por mi no tengo ningún problema y casi que lo prefiero.

En cuanto al autoselect por tipo de archivo es posible, pero seria un coñazo hacer un ajuste fino y aún así tendríamos una solución a medias, por ejemplo en los comentarios y en las docstrings de un archivo python tendríamos el mismo problema inicial al tratarse de texto puro y duro.

let g:neocomplete#enable_auto_select = 0

así de coña, mucho menos intrusivo. Para testear basta intentar escribir: "importar en sys." 👯

Bien, ahora dejame darle una pensada a ver si lo implemento por defecto o lo hago conmutable a través de un menu o un atajo. 😄

Tema resuelto en el ultimo commit, @e829c1d1, ahora el auto-select esta deshabilitado por defecto, pero se puede habilitar con el atajo <Leader>ea o con la entrada del menu edit correspondiente. De esta manera tenemos el abanico de opciones completo a un atajo de distancia 😄

Por cierto, no te pierdas la última opción que he añadido para manipular bases de datos y SQL desde Vim.