7

ho le seguenti mappature della mia Vimrc:vim gergo mappa <C-Tab> a: tabnext

map <C-S-Tab> :tabprevious<CR> 
nmap <C-S-Tab> :tabprevious<CR> 
imap <C-S-Tab> <Esc>:tabprevious<CR>i 

map <C-Tab> :tabnext<CR> 
nmap <C-Tab> :tabnext<CR> 
imap <C-Tab> <Esc>:tabnext<CR>i 

voglio cambiare le schede con Ctrl + Tab in avanti e con Ctrl + Shift + Tab all'indietro. Perché questa mappatura non funziona?

+2

Le mappature sono corrette, probabilmente il tuo terminale non sta inoltrando le chiavi. Controlla che la shell possa persino ricevere la ctrl-tab usando "read" in bash. Bloccherà per l'immissione dei caratteri e ti mostrerà quali tasti vengono ricevuti. Sul mio xterm, non vi è alcuna differenza tra c-tab e c-s-tab. Leggi mostra "^ [[Z" per entrambi. HTH. – zen

risposta

1

Qualcosa probabilmente sta impedendo a Vim di vedere la C-Tab. Questo potrebbe essere il tuo terminale o il tuo gestore di finestre.

Su alcuni SO/WM è possibile impostare eccezioni alle scorciatoie del gestore finestre, ma il modo in cui si esegue questa operazione varia pazzamente tra i WM.

Non sono sicuro se c'è una soluzione se è il terminale che blocca la pressione dei tasti.

+0

Il window manager non è il problema. Se passo a un tty-terminal senza X11/GUI, l'associazione continua a non funzionare. Io uso Ubuntu 9.04. – Fu86

8

Si sta utilizzando xterm? In tal caso, non è possibile mappare ctrl-tab senza un sacco di hackery. xterm e molti altri emulatori di terminale non riconoscono ctrl-tab e semplicemente inviano un carattere tab.

Vedere la mia risposta qui per maggiori dettagli: Mapping <C-Tab> in my vimrc fails in Ubuntu

Oppure si può semplicemente usare gvim se questo è adatto - dovrebbe funzionare senza alcun gingillarsi.

0

oh ... è necessario mappare? usare appena questi combinazioni predefinite:

  • gt: ==: tabnext

  • gT: ==: tabprevious

  • [n] gt: == salto alla scheda N, ad esempio 1gt, 3GT

definire a molte chiavi brevi è facile, ma come si può ricordare tutti loro e non li mescolare con 'ctrl + tab', 'alt + tab' (comune e usuale breve chiavi in ​​più OS)

controllare questa pagina per maggiori dettagli: http://vim.wikia.com/wiki/Alternative_tab_navigation

0

Tutto ciò che serve è xterm.

mettere questo nel file .Xresources (è possibile copiare-incollare in questo caso):

xterm*VT100.Translations: #override \ 
      Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n\ 
      Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~") 

Poi fate cd ; xrdb .Xresources e riavviare xterm.


mettere questo nel vostro .vimrc:

!! Importante - al posto di XXXX è necessario digitare CTRL-V e poi EscO copia-incollare il testo completo ed eseguire %s/\(set <F1[34]>=\)XXXX/\=submatch(1) . "\33"/g che è copia-pastable (inserirla con <CTRL-R> +).

set timeout timeoutlen=1000 ttimeoutlen=100 
set <F13>=XXXX[27;5;9~ 
nnoremap <F13> gt 
set <F14>=XXXX[27;6;9~ 
nnoremap <F14> gT 

E riavviare vim.

Fatto.