A veces necesito escribir palabras griegas, pero cuando estoy usando el teclado griego, presionar, digamos, <C-p>
se entenderá como <C-π>
y no como el comando que pretendo. Esto se puede solucionar con :map <C-p> <C-π>
. ¿Puedo hacer esto para todas las letras sin hacer una lista de todas?
PD. Hacer una lista de todos no produce un resultado perfecto. Por ejemplo, q
está ;
en el Gr. teclado, pero no queremos mapear; a q. Además, por alguna razón, ΖΖ (zeta zeta) no funciona después :map Ζ Z
. Y un comando que definí, \lw
no funciona como \λς
.
key-bindings
keyboard-layout
Toothrot
fuente
fuente
langmap
opción (ver el documento que incluye un ejemplo de diseño griego). Esta opción fue hecha para ayudar a tratar con teclados no latinos como el griego o el cirílico. Le permite definir pares de símbolos que se interpretarán normalmente en el modo de inserción pero se reemplazarán en otros modos, tal vez esto lo ayude.:echo has('langmap')
si obtienes un,1
lo tienes si obtienes uno0
que no.brew install vim --override-system-vi
y:echo has &c
ahora devuelve 1. ZZ funciona. El problema con\lv
& c persiste.:echo has &c
parte, no veo cómo está relacionadalangmap
también una vez que ha compilado vim conlangmap
usted, debe especificar las asignaciones:set langmap=ΑA,ΒB,ΨC [...]
en su vimrc.Respuestas:
Lo recomendaría
keymap
, lo que puede resolver su problema. Pon estos en tu vimrcpara deshabilitar el griego por defecto. Puede alternar la opción en (Griego) y en (Inglés) usando
<ctrl>+^
(también puede usar<ctrl>+6
, se asigna en la tecla, no en el símbolo) en el modo de inserción y el modo Reemplazar (no funciona en Modo normal). Para deshabilitar automáticamente al salir del modo de inserción, puede usarMás sobre estos
:h iminsert
:h keymap
:h imsearch
:h i_CTRL-^
EDITAR al segundo comentario:
Puede intentar esto para activar el griego automáticamente, si ingresa al modo de inserción (y al modo de reemplazo), y para desactivar automáticamente, si se va (entonces no necesita la asignación mencionada anteriormente).
fuente
:map >a
, y si hay , desasignarlo por:unmap >a
. Como usuario no griego y no MacOs, ya estoy al límite. Lo siento y buena suerte!Como dije en los comentarios, las asignaciones no están diseñadas para hacer lo que quieres hacer. Una opción interesante para este caso de uso es
langmap
.Esta opción permite mantener el comportamiento de su teclado en modo de inserción y cambiar su comportamiento en los otros modos.
Para usarlo, se debe compilar con Vim
+langmap
, puede verificar que esta opción esté habilitada conecho has('langmap')
: si el comando devuelve1
la opción está habilitada, de lo contrario, tendrá que configurarla con esta opción habilitada (para saber cómo hacerlo, se Es otra pregunta).Cuando está habilitada, la opción toma pares de caracteres, por ejemplo,
set langmap += à@
le permitirá agregar unà
en su búfer cuando esté en modo de inserción y escriba a,à
pero escribirà
en modo normal en realidad activará un@
(este ejemplo puede ser útil en azerty teclados para facilitar el trabajo con macros).Para usar langmap en griego, puede seguir el ejemplo dado al
:h 'langmap'
agregar esta línea a suvimrc
(Copiar esta línea desde aquí puede no ser una buena idea ya que realmente no estoy seguro de la codificación, es probable que extraer la línea directamente del archivo de ayuda más seguro) :Ahora, por lo que entiendo en sus comentarios, sigue siendo un problema cuando intenta usar comandos predefinidos: cuando escribe un comando, el comportamiento del modo de inserción se activará en lugar del comportamiento definido de langmap. Lamentablemente, no estoy seguro de tener una buena solución para eso. Una idea podría ser redefinir comandos, por ejemplo, así:
De esta manera, cuando escriba el comando,
λς
Vim se ejecutará,lw
pero veo varios inconvenientes en este método:Entonces, tal vez un complemento sugerido por @Alexander Myshov en su respuesta a esta pregunta podría ser útil (como nunca probé ninguno de estos, no sé si resuelven el problema, pero parece que sí lo hacen).
fuente
Escribo regularmente en inglés y sueco. El sueco es un problema menor de resolver que el griego porque solo expande el alfabeto inglés con unos pocos caracteres, pero creo que mi solución es transferible al griego.
Solía cambiar usando el interruptor de teclado del sistema de mi sistema operativo. El problema con esto es, como señaló el OP, que rompe un montón de comandos, ya que en modo normal, cada tecla envía otra señal a Vim con el teclado que no está en inglés. En la disposición del teclado sueco, por otra parte, un montón de caracteres no alfabéticos se mueven para dar paso a los nuevos personajes
å
,ä
yö
. Por ejemplo,}
se escribe con Alt-Shift-9 (que coincide con el paréntesis de apertura en el teclado en inglés), y la barra diagonal inversa se escribe con Alt-Shift-7. Cambiar a un diseño de teclado sueco de vainilla para insertmode causa así un montón de dolores de cabeza.Mi solución fue reasignar las teclas relevantes solo en modo de inserción y ajustar estas asignaciones en una función para que pueda cambiar fácilmente de un lado a otro. El siguiente código es cómo hice esto en mi
.vimrc
. Esto solo agrega los caracteres que necesito a la posición que tienen en la distribución del teclado sueco, dejando todo lo demás. Para escribir los caracteres que están enmascarados por ellos (;
,:
,[
,{
,"
, y'
), que simplemente pulsar la tecla dos veces. Afortunadamente, solo las personas tontas incluso necesitan escribir dosä
s en una fila. (Si este doble golpe no es adecuado, puede asignarlos a Ctrl o algo así. El principio básico es que los caracteres que están enmascarados permanecen en su lugar en el teclado, pero se elimina una pulsación de tecla. Me parece mucho más fácil que moverlos.) Lo que significa es que cuando quiero escribir en sueco, presiono<Leader>s
, que cambia a estos mapeos y aplico el corrector ortográfico sueco. Para volver a cambiar lo hago<Leader>e
.Ahora, para el griego, esto implicaría hacer mapeos para todo el alfabeto, lo que en realidad es menos complicado de lo que parece una vez que entiendes el principio. La parte difícil sería eliminar todos los cambios al cambiar al inglés. Quizás alguien pueda encontrar una forma ingeniosa de hacer eso.
Estoy planeando hacer una función de inserción como las siguientes para el árabe, el otro idioma que escribo a menudo. Podría volver aquí para informar sobre el proceso.
fuente
También escribo en dos idiomas: ruso e inglés. Y ahora uso este complemento https://github.com/lyokha/vim-xkbswitch . Este complemento depende del conmutador de distribución de teclado nativo, para Mac OS X puede usar el mío https://github.com/myshov/xkbswitch-macosx .
fuente