Mapping Gnome-terminal + Vim e Ctrl-Shift


11

E 'possibile mappare la sequenza con Ctrl- Shiftin Gnome Terminal?

Sto cercando di aggiungere i mapping

  • map <C-S-[> gT
  • map <C-S-]> gt

e non funziona. Come farlo?

In qualche modo ho mappato <C-S-]>, ma alla fine non lo è <C-S-]>, ma <C-]>, quindi, sembra che non riconosca Shift in questa sequenza. È configurato male o è colpa di gnome-terminal?

Oltretutto. La mappatura <C-[>, dopo essere stata premuta, sembra che VIM stia aspettando. Suppongo sia il timeout della mappatura, ma come sbarazzarsi di questo timeout quando premo con precisione <C-[>e non voglio premere nient'altro?

Ho appena iniziato a studiare Vim, quindi mi dispiace se c'è qualcosa di ovviamente sbagliato in quel mapping.

Risposte:


8

Penso che il problema qui sia che stai cercando di ottenere VIM, che prevede di essere eseguito in un terminale, per riconoscere una sequenza CTRL-SHIFT. Mentre è possibile per X riconoscere tali combinazioni, le applicazioni che girano in un terminale (o, in questi giorni, un emulatore di terminale) non possono. Questo perché, storicamente, i terminali potevano solo inviare e ricevere sequenze a sette o otto bit di dati ASCII attraverso una connessione seriale (sebbene ciò potesse includere "sequenze di escape" che posizionano il cursore, scorrere o eliminare le linee, cambiare colore e altri utili effetti).

Esistono 32 "Codici di controllo" nel set di caratteri ASCII, compreso il familiare CTRL-A fino a CTRL-Z. Ma non ci sono codici ASCII corrispondenti per "CTRL-SHIFT" da A a Z. Ora, lo stesso gnome-terminal può riconoscere questi codici (CTRL-SHIFT-V, per esempio, incollerà il testo dagli appunti), ma vim non sarà in grado di accedervi direttamente.

Naturalmente, potrebbe essere possibile (non lo so) che un emulatore di terminale venga impostato per convertire le pressioni dei tasti CTRL-SHIFT in una sequenza di escape che può quindi essere riconosciuta da una mappatura vim.

=======

AGGIORNARE

Potresti essere interessato a gvim, che è una versione grafica di vim che funziona come un programma X piuttosto che un programma terminale. Forse gvim sarà in grado di capire i codici CTRL-SHIFT?


4

Sembra essere un problema con il Terminale GNOME che non consente determinate combinazioni con la Ctrlchiave. La ricerca online mostra molti casi di questo.

Nel caso non lo sapessi, Ctrl+ page up/ page downscorre ciclicamente le schede.


3

Come ha sottolineato Bartleby , questa è una restrizione terminale, perché vi vede i codici chiave come gli stessi.

Per terminali come questi xtermpuoi cambiarlo. Per il gnome-terminal quale ignora le impostazioni delle risorse X non so come fare quanto segue:

Questa domanda SO copre lo stesso argomento e questo esempio mostra questo in uso per mappare più chiavi nel .Xresourcesfile. Per esempio:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Ora abbiamo diverse sequenze di tasti che entrano in VI per Ctrlacontro CtrlShifta, Ctrlbcontro CtrlShiftb, Ctrlfcontro CtrlShiftf.

Ora possiamo mapparli diversamente in ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>

La domanda originale riguardava gnome-terminal, mentre la tua risposta si riferisce xterm.
egmont,

@egmont: buon punto e una svista da parte mia. Secondo questa risposta l' .Xresourcesvengono ignorati dai gnome-terminal. Questo è sfortunato. Risposta aggiornata.
cfi,

Questa risposta è stata leggermente riformulata / crosspostata come una coppia di domande e risposte in SuperUser , perché probabilmente dovrei eliminarla qui perché non si applica al terminale del richiedente.
cfi,

1

Sembra che devi solo disabilitare tutte le scorciatoie da tastiera in gnome-terminal.


2
Perché disabilitare le scorciatoie da tastiera aiuta?
Eliah Kagan,

Non sembra affatto aiutare, dalla mia esperienza.
Elliot Foster,

1

Nelle gnome-terminalsequenze di escape generate dai tasti non sono configurabili. Per molti tasti Ctrl+ keye Shift+ Ctrl+ keygenerano sequenze diverse; sfortunatamente per [e ]loro no, quindi non puoi distinguerli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.