Às vezes, preciso escrever palavras gregas, mas quando estou usando o teclado grego, pressionar, digamos, <C-p>
será entendido como <C-π>
e não como o comando que pretendo. Isso pode ser corrigido com :map <C-p> <C-π>
. Posso fazer isso para todas as cartas sem fazer uma lista de todas?
PS. Fazer uma lista de tudo não produz um resultado perfeito. Por exemplo, q
está ;
no Gr. teclado, mas não queremos mapear; para q. Além disso, por algum motivo, ΖΖ (zeta zeta) não funciona depois :map Ζ Z
. E um comando que eu defini \lw
,, não funciona como \λς
.
key-bindings
keyboard-layout
Toothrot
fonte
fonte
langmap
opção (consulte o documento que inclui um exemplo de layout grego). Essa opção foi realmente feita para ajudar a lidar com teclados não latinos, como grego ou cirílico. Permite definir pares de símbolos que serão interpretados normalmente no modo de inserção, mas serão substituídos em outros modos; talvez isso ajude você.:echo has('langmap')
se tiver um1
, se0
tiver, não.brew install vim --override-system-vi
e:echo has &c
agora retorna 1. ZZ funciona. O problema com o\lv
& c permanece.:echo has &c
parte, não vejo como ela está relacionadalangmap
também depois que o vim foi compilado,langmap
você deve especificar os mapeamentos:set langmap=ΑA,ΒB,ΨC [...]
no vimrc.Respostas:
Eu recomendaria
keymap
, o que pode resolver seu problema. Coloque-os no seu vimrcpara desativar o grego como padrão. Você pode ativar (grego) e desativar (inglês) a opção usando
<ctrl>+^
(você também pode usar<ctrl>+6
, ele está mapeado na tecla, não no símbolo) nos modos de inserção e Substituir (não funciona no Modo normal). Para desativar automaticamente ao sair do modo de inserção, você pode usarMais sobre estes
:h iminsert
:h keymap
:h imsearch
:h i_CTRL-^
EDITAR para o segundo comentário:
Você pode tentar isso para ativar o grego automaticamente, se entrar no modo de inserção (e modo de substituição), e para desligar automaticamente, se sair (não precisará do mapeamento mencionado anteriormente).
fonte
:map >a
e, se houver , remova o mapeamento por:unmap >a
. Como usuário não-grego e não-MacOs, já estou no meu juízo final. Desculpe e boa sorte!Como eu disse nos comentários, os mapeamentos no não são projetados para fazer o que você deseja fazer. Uma opção interessante para esse caso de uso é
langmap
.Esta opção permite manter o comportamento ou o teclado no modo de inserção e alterar o comportamento nos outros modos.
Para usá-lo, o Vim precisa ser compilado
+langmap
, você pode verificar se esta opção está ativada comecho has('langmap')
: se o comando retornar1
a opção está ativada, caso contrário, você precisará fazer uma configuração com esta opção ativada (para saber como fazer isso, é outra questão).Quando está ativada, a opção aceita pares de caracteres, por exemplo
set langmap += à@
, permitirá que você adicione aà
no seu buffer quando estiver no modo de inserção e você digitar a,à
mas digitarà
no modo normal acionará a@
(este exemplo pode ser útil no azerty teclados para facilitar o trabalho com macros).Para usar o langmap em grego, você pode seguir o exemplo dado ao
:h 'langmap'
adicionar esta linha ao seuvimrc
(Copiar esta linha daqui pode não ser uma boa ideia, pois não tenho muita certeza da codificação, é provável que puxar a linha diretamente do arquivo de ajuda mais seguro) :Agora, pelo que entendi nos seus comentários, permanece um problema quando você tenta usar comandos predefinidos: quando você digita um comando, o comportamento do modo de inserção será acionado em vez do comportamento definido pelo langmap. Infelizmente, não tenho certeza se tenho uma boa solução para isso. Uma idéia poderia ser redefinir comandos, por exemplo, assim:
Dessa forma, quando você digitar o comando o
λς
Vim executará,lw
mas vejo várias desvantagens desse método:Talvez um plugin sugerido por @Alexander Myshov em sua resposta a essa pergunta possa ser útil (como eu nunca tentei nenhum deles, não sei se eles resolvem o problema, mas parece que sim).
fonte
Eu digito regularmente em inglês e sueco. O sueco é um problema menor de resolver do que o grego, porque só expande o alfabeto inglês com alguns caracteres, mas acho que minha solução é transferível para o grego.
Eu costumava mudar usando o teclado do sistema do meu sistema operacional. O problema é que, como observou o OP, ele quebra vários comandos, pois no modo normal, cada tecla envia outro sinal ao Vim com o teclado que não é o inglês. No layout de teclado sueco, além disso, todo um conjunto de caracteres não-alfabéticos são movidos para abrir caminho para os novos personagens
å
,ä
eö
. Por exemplo,}
é digitado com Alt-Shift-9 (correspondendo ao parêntese de abertura no teclado inglês) e a barra invertida é digitada com Alt-Shift-7. Mudar para um layout de teclado sueco de baunilha para insertmode, portanto, causa um monte de dores de cabeça.Minha solução foi remapear as chaves relevantes apenas no modo insert e agrupar esses mapeamentos em uma função para que eu possa alternar facilmente. O código abaixo é como eu fiz isso no meu
.vimrc
. Isso adiciona apenas os caracteres necessários à posição que eles têm no layout do teclado sueco, deixando todo o resto. Para digitar os caracteres que são mascarados por eles (;
,:
,[
,{
,"
, e'
), eu simplesmente pressione a tecla duas vezes. Felizmente, apenas pessoas tolas precisam digitar duasä
s em uma fileira. (Se esse toque duplo não for adequado, você poderá mapeá-los para Ctrl ou algo assim. O princípio básico é que os caracteres mascarados permaneçam em seu lugar no teclado, mas uma tecla foi removida da realização. Acho isso muito mais fácil do que movê-los.) O que significa é que, quando quero digitar sueco, eu clico em<Leader>s
, que muda para esses mapeamentos e aplica a verificação ortográfica sueca. Para voltar, eu faço<Leader>e
.Agora, para o grego, isso envolveria mapeamentos para todo o alfabeto, o que é realmente menos trabalhoso do que parece quando você aprova o princípio. A parte complicada seria remover o mapeamento de todas essas alterações ao mudar para o inglês. Talvez alguém possa ter uma maneira bacana de fazer isso.
Estou planejando executar uma função de inserção como as abaixo para o árabe, o outro idioma que digito com frequência. Posso voltar aqui para relatar o processo.
fonte
Também digito em dois idiomas: russo e inglês. E agora eu uso este plugin https://github.com/lyokha/vim-xkbswitch . Este plug-in depende do alternador de layout de teclado nativo. Para o Mac OS X, você pode usar o meu https://github.com/myshov/xkbswitch-macosx .
fonte