2011-10-25 20 views
6

Soy nuevo en Vim y trato de configurar algunos complementos. Hasta ahora he instalado patógenos, pyflakes y supertab. El último no parece funcionar; presionando tab mientras está en modo de inserción simplemente escribe la cadena <Plug>SuperTabForward.Vim: establecer langmap = e; h rompe el complemento supertab

El problema sólo se produce con la siguiente línea en mi vimrc (para una mejor navegación mediante el diseño Colemak):

set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL 

Sin la línea anterior funciona bien. Después de otros experimentos, lo reduje al set langmap=e;h. Esta única línea rompe supertab.

Tengo muy poca experiencia con Vim para tener la menor idea de lo que está pasando o cómo solucionarlo. Incluso una solución alternativa sería de interés.

+0

Tengo exactamente el mismo problema. – porgarmingduod

+0

Creo que su problema es similar a [este] (http://stackoverflow.com/questions/8464534/entering-text-in-snippet-fields-uses-wrong-character-when-using-langmap/8471492#8471492) – romainl

+0

@romainl: De hecho, ese enlace me hizo probar una solución (que publiqué como respuesta a continuación). Sin embargo, plantea más preguntas de las que responde, y con mucho gusto otorgaré la recompensa a cualquiera que pueda explicarlo. – porgarmingduod

Respuesta

2

me di cuenta de una solución: Edición supertab.vim, sustituyendo las instancias de <Plug>SuperTab con <P>P, lo que hace que las cadenas como <Plug>SuperTabForward para convertirse en <P>PForward.

Supongo que funciona porque esas cadenas ya no incluyen ninguna de las letras involucradas en set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL. Varios problemas aún no están resueltos. ¿Está langmap bugged? A mí me parece la opción existe expresamente para permitir la asignación que los efectos únicos comandos:

When you are typing text in Insert mode the characters are 
inserted directly. When in command mode the 'langmap' option takes 
care of translating these special characters to the original meaning 
of the key. This means you don't have to change the keyboard mode to 
be able to execute Normal mode commands. 

No tiene ningún sentido para mí lo que nunca, entonces, que la presencia de un personaje langmap asignada en una cadena imap, que es una asignación de modo de inserción , hace la diferencia. Si lo hace, romperá aleatoriamente cualquier complemento como SuperTab que use cadenas largas imap. Solo para ilustrar cuán extraño es esto, si hago imap no yes, escribir jo es necesario para activarlo. No tengo idea de cómo funciona la lógica detrás de eso.

+0

Si tienes 'set showmode', ¿ves incluso un breve' - SELECT --' en la línea de comando mientras presionas ''? – romainl

+0

No estoy tan lejos como puedo decir. Dice '- INSERT - 'y una muy breve' = 17_SuperTab (' n ') 'que solo noté al mantener presionada la tecla' '. Eso es todo. – porgarmingduod

0

he tenido el mismo problema, pero esta solución no encajaban en mi caso, por lo que he publicado mi propia pregunta y alguien hizo un parche que arregla:

Vim langmap breaks plugin (bépo)

https://groups.google.com/forum/#!msg/vim_dev/QnNwLWhJ744/1qNcD7d9OvgJ (ver el último mensaje)

Este parche introduce una nueva configuración: langnoremap que, cuando se establece, impide que langmap afecte dichas asignaciones.

Es posible que necesite un poco más de prueba y no se puede incluir en vim muy pronto, pero parece funcionar bastante bien.

Cuestiones relacionadas