Remapeamento de chaves na "visão de diretório" do vim

3

A "Lista de diretórios do Netrw" obtida abrindo um diretório no vim (por exemplo, :e . ) parece usar um conjunto diferente de atalhos de teclado do que o vim simples para navegação

Eu tenho minhas chaves hjkl remapeadas assim:

noremap d h
noremap h gj
noremap t gk
noremap n l
noremap e d
noremap l n

Mas quando pressiono 't' (também conhecido como seta para cima) na lista de diretórios, ele realmente abre o arquivo sob o cursor, em vez de subir. Como faço para implementar mapeamentos de teclas semelhantes nesse modo de listagem de diretório?

    
por hhaamu 13.02.2012 / 19:27

1 resposta

8

Eu tenho medo de não entender.

[eliminou algumas divagações com as quais falei antes de descobrir a causa raiz]

O que você está tentando realizar? Sua lista de noremap não faz sentido para mim de qualquer maneira.

Aha! Entendi!

Você está usando um layout de teclado DVORAK , não é? AGORA, os mapeamentos começam a fazer sentido. (Esqueci de mencionar isso ... nós não!)

Olhando para a fonte do plugin NETRW, parece que o buffer netrw está configurando nnoremaps BUFFER ONLY ... que, obviamente, sobrescrevem o seu. Estou procurando uma solução.

Pelo que eu posso dizer, você teria que fazer uma grande cirurgia no arquivo $ VIMRUNTIME / autoload / netrw.vim, o que tornaria a atualização um problema, e espalharia novos mapeamentos por todo o seu chão limpo. Mas outra ideia me surpreendeu:

O plug-in netrw configura o tipo de arquivo para 'netrw' quando ele abre o buffer, para que você possa configurar um comando automático em seu .vimrc para definir suas conversões de chave necessárias, conforme necessário, na janela netrw.

augroup netrw_dvorak_fix
    autocmd!
    autocmd filetype netrw call Fix_netrw_maps_for_dvorak()
augroup END
function! Fix_netrw_maps_for_dvorak()
    noremap <buffer> d h
    noremap <buffer> h gj
    noremap <buffer> t gk
    noremap <buffer> n l
    noremap <buffer> e d
    noremap <buffer> l n
    " and any others...
endfunction

O tipo de coisa precisa ser feito assim, já que você não pode concatenar os comandos do mapa. Deve funcionar para você.

Suponho que, se você estiver usando o noremap do dvorak por toda parte, poderá remover o < buffer > modificador.

    
por 13.07.2012 / 08:20

Tags