Vim: mapeamento de chaves no terminal x

1

Eu normalmente uso o Vim no Windows e não tive problemas com mapeamento de chaves, mas agora que estou usando uma máquina virtual rodando Ubuntu, acessada através do MobaXterm, as coisas não funcionam como deveriam. Isso inclui coisas básicas como <c-s> para salvar e <F5> para execução, que não posso viver sem. Eu fiz minha pesquisa e li materiais que parecem resolver esse problema ( aqui e aqui ), mas eles passaram por cima da minha cabeça. Francamente, ter que pressionar <c-v> antes que uma tecla de função seja completamente estranha. E nem funcionou quando eu tentei. Alguém pode explicar, por favor? Como caso de teste, se eu quiser mapear <F2> para :pwd , o que tenho que fazer?

Para minha satisfação, descobri que meus mapeamentos de teclas do funcionam como planejado no gVim do Ubuntu, então usarei isso. Eu ainda gostaria da resposta, porque eu realmente prefiro a sensação rápida e fácil do vim simples no terminal.

    
por bongbang 06.11.2014 / 03:02

1 resposta

1

Você terá que viver sem ctrl S porque este é o comando terminal para parar a saída ( ctrl Q desfaz isso.

Outras teclas de função devem ser mapeáveis sem nenhum problema, apenas digite :map , então pressione a tecla de função que você deseja mapear que deve mostrar por exemplo <F5> para F5, então espaço, então o que você deseja mapear .

Você pode colocar essa linha (sem os dois pontos iniciais) em seu arquivo ~/.vimrc para ativar o mapeamento para cada sessão vim.

Se você já tentou isso, edite sua pergunta para mostrar exatamente o que você tentou e qual foi o resultado (e como isso diferiu de suas expectativas).

EDITAR: Se você deseja mapear sequências que não estão definidas na definição do terminal, você pode mapear manualmente a sequência.

Primeiro, você precisa descobrir quais bytes / caracteres ele enviou ao pressionar, e. ctrl deslocamento F2 . Eu sempre uso od -c para isso; inicie o comando, pressione a seqüência de teclas, tecle ctrl d para enviar um fim-de-arquivo para o comando, que então imprime a versão decodificada:

$ od -c
^[[24^
0000000 033   [   2   4   ^  \n
0000006

Então isso é escape, [ 2, 4, ^ (a nova linha é o que eu digitei após a sequência e deveria ser ignorada; você também pode pressionar ctrl d duas vezes, mas depois a saída é iniciada após a entrada e parece confusa).

Agora sabemos a sequência e podemos adicionar o mapeamento a .vimrc . Adicione uma linha como a seguinte:

map <C-[>[24^ :whateveryouwant

A sequência <C-[> é a representação vim do escape, que é o mesmo que ctrl [. Depois disso, os personagens não são especiais, então eles podem ser inseridos como estão.

Agora ctrl deslocamento F2 será mapeado para o lado direito que você digitou quando você inicia o vim.

    
por 06.11.2014 / 11:47

Tags