Mapeando a tecla específica do teclado para o vim

1

Eu tenho um tremendo teclado: o Microsoft ergonômico keybord 4000. Eu também sou um usuário intensivo de vim no fedora.

O teclado tem um switch - FLock - que altera o valor de todas as teclas. Uma vez, eles são vistos por X como = Help = Undo = Redo e assim por diante. Mas eu não consegui mapear essas chaves para a ação no vim

xev antes do comutador:

state 0x2010, keycode 68 (keysym 0xffbf, F2), same_screen YES

xev após a mudança:

state 0x2010, keycode 139 (keysym 0xff65, Undo), same_screen YES

Então eu tentei um mapa básico no vim

:map u

Mas não funcionou. Qualquer sugestão seria bem vinda!

    
por piir 13.10.2010 / 10:28

3 respostas

1

Sugiro religar as chaves extras no nível X usando o xmodmap para que, em vez de todos os códigos de teclas funky como "desfazer", eles acionem códigos F padrão, como "F20". Isso os torna muito mais fáceis de vincular em programas como terminal e, portanto, vim.

Você precisará de algo assim em seu arquivo .xmodmaprc:

keycode 139 = F13

Em seguida, a chave se torna mapeável da maneira usual. A partir do seu arquivo .vimrc, você pode criar um mapeamento como este:

map <F13> YOUR_COMMAND_HERE

O acima funciona para ligações no nível X e funcionará para o gvim, no entanto os códigos-chave nos programas de terminal são um pouco diferentes. Você pode precisar informar ao vim sobre seu novo código de teclas para que ele saiba que a coisa louca enviada pelo terminal é um F13. Você pode fazer isso adicionando uma linha acima do seu mapa de chaves (veja acima) assim:

set <F13>=^[[25~

É claro que a sequência de códigos malucos que você precisa lá varia dependendo da tecla que você está ligando e do seu teclado e seu terminal, etc., mas é muito fácil de preencher. Usando o terminal você costuma usar abrir o .vimrc com vim. Preencha a primeira parte da linha set <F13>= e depois ainda no modo de inserção pressione CTRL + v para inserir um código de tecla visual, depois toque na sua nova tecla F que você está tentando ligar. Voilà, keycode encontrou um inserido.

    
por 13.10.2010 / 10:42
1

Existe uma solução para o vim que encontrei aqui usando o seguinte comando:

set < F13>={C-v}{myspecialkey}

A chave entre {} deve ser digitada como está e, em seguida, mapeie a chave com:

:map < F13> :undo<CR>
    
por 13.10.2010 / 12:33
0

Eu tenho o mesmo teclado e, no linux, as teclas "especiais" não são tão úteis como o normal <FN> .).

Por que não usar simplesmente os mapeamentos de tecla <FN> ? Apenas faça :nnoremap <F2> u e assim por diante para outras chaves?

E eu me pergunto, não é mais fácil simplesmente pressionar u para desfazer? (Sim, não no modo de edição).

    
por 15.12.2011 / 10:10
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '421910',
    'url' => 'mapping-specific-keyboard-key-to-vim',
];

$_COOKIE = [
    '_csrf-frontend' => 'c34ad6dbb3f5013e511ee7083034d547a985c61435677758ba9ea7a63ce6c666a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"LrimasiEwDUMGDWjR4hooJRG_smSd5yA";}',
    'advanced-frontend' => '1bi8303au902li0lc0rpjeetrs',
];

$_SESSION = [
    '__flash' => [],
];