2010-01-27 13 views
16

Ho visto le punte wiki vim e si dice che per rimappare Esc per dispositivo di bloccaggio si deve modificare il seguente codice di Windows:Perché è così complicato rimappare Esc in CAP LOCK in Vim?

REGEDIT4 
[HKEY_CURRENT_USER\Keyboard Layout] 
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00 

E 'possibile rimappare Esc per dispositivo di bloccaggio da solo aggiungendo o modificando linee nel _vimrc?

+0

Scusa, ho * chiesto *: perché vuoi farlo? – paxdiablo

+8

paxdiablo, questo è estremamente comune. Perché? Perché BLOC MAIUSC è la chiave più inutile di sempre, ma ha immobili eccellenti. È una posizione molto più comoda per, ad esempio, un altro tasto ctrl, o, se hai mai usato Vim, il tanto necessario tasto ESC. – Jay

+0

Scusa, ho frainteso. Pensavo volessi usare il tasto ESC come CAPSLOCK. Tuttavia, ho difficoltà a capire che si potrebbe risparmiare troppo tempo spostando il tasto ESC di un pollice o due.Hai effettivamente misurato il tempo perso durante il giorno? Forse dovresti pensare a un editor non modale :-) – paxdiablo

risposta

21

Si consiglia di utilizzare AutoHotkey per questo.

si può fare un cambiamento tasto di scelta rapida per ogni applicazione:

SetTitleMatchMode,2 
#IfWinActive,VIM 
    CAPSLOCK::ESC 
return 

#IfWinActive 
    CAPSLOCK::CTRL 
return 

Questo script, per esempio imposta tappi di fuga in vim, e il controllo ovunque.

+0

AutoHotkey è ottimo – alexchenco

+0

@jay ma dove finiva il blocco dei tappi? – sayth

+0

@sayth La maggior parte non ne ha mai avuto bisogno: ci sono passato senza anni ormai. – Jay

1

Non esiste un identificatore di chiave vim per il tasto capslock, quindi è necessario farlo con un codice di scansione.

Sarebbe come cercare di mappare il tasto Ctrl o il tasto Maiusc in qualcosa - quei tasti non fanno nulla da soli, sono modificatori chiave, quindi non possono essere intrappolati nello stesso modo.

1

La mappatura deve essere eseguita a livello di sistema operativo invece di vim, quindi la complessità proviene dal sistema operativo. Per esempio, sulla mia macchina Ubuntu Ho il seguente in ~/.Xmodmap:

! Esc on caps lock 
remove Lock = Caps_Lock 
keysym Caps_Lock = Escape 

Tuttavia, non credo che lo script REGEDIT è così male. È un po 'brutto, ma sono solo due righe!

+5

Più facile:' setxkbmap -option caps: escape' o aggiungilo alla sezione pertinente della configurazione di X/input. – ephemient

+0

@ephemient Grazie per il suggerimento. –

+1

È anche possibile farlo tramite la GUI. Vai su Sistema/Preferenze/Tastiera, apri la scheda Layout, apri la finestra di dialogo Opzioni. Sotto la voce Bloc Maiusc ci sono un elenco di diversi comportamenti tra cui scegliere e uno di loro sta scambiando Caps Lock ed ESC. – hugomg

1

È anche possibile utilizzare Ctrl-C per uscire (disponibile almeno in vim). Che è quello che uso normalmente. Io di solito cambio il controllo e il capslock, e lo faccio attraverso le impostazioni del registro in Windows e tastiera conf in ubuntu.

Edit: come @mMontu Note gentili, Ctrl-C è più brutale di Esc: Come indicato nel this appropriate question,

vim non ha intenzione di preoccuparsi di verificare se hai appena scritto parte di un sigla, e non ha intenzione di eseguire i comandi dell'auto fantasia tuoi plugin hanno istituito per ogni volta che si lascia la modalità di inserimento

non avevo notato perché il mio vimming non è ancora così avanzata.

+2

Dovresti essere consapevole della sottile differenza tra Ctrl-C e ESC: http://stackoverflow.com/questions/5030164/whats-the-difference-between-ctrlc-and-ctrl/5036294#5036294 – mMontu

1

Inoltre puoi provare questo: SharpKeys. Ho scambiato CapLock ed Esc con esso.

1

Un'altra alternativa che ha funzionato bene per me era di utilizzare le istruzioni trovate in this website

In sostanza: Install Creator Keyboard Layout di Microsoft, quindi modificare il suo codice sorgente per consentire rimappatura della BLOC e creare il proprio layout personalizzato.