Ottenere <ctrl> + <backspace> per eliminare le parole in modalità gnome-terminal e vim insert


10

Sembra che ctrl+ Welimini all'indietro una parola alla volta. È fantastico, ma mi piacerebbe davvero che funzioni con ctrl+ backspacecome la maggior parte delle altre app.

Qual'è il miglior modo per farlo? Avrei bisogno della modifica per influenzare i comandi gnome-terminal, la riga di comando vim e la GUI vim.


1
In vim puoi premere D, poi B e farà la stessa cosa. Tuttavia, anche a me manca questa funzione nel terminale perché è necessario uscire e non funziona durante il funzionamento in modalità Inserisci. Consiglio eccezionale per CTRL + W.
mchid

Risposte:


7

Nota che funzionerà nel terminale e nella modalità emacs predefinita (che stai usando se Ctrl+ Wcancella la parola precedente per te). Non funzionerà nella modalità vi di bash e non influenzerà vi / vim stesso. Questa è, quindi, solo una risposta parziale, ma la migliore che questo utente emacs può offrire.


Questo genere di cose è gestito dalla readlinelibreria il cui comportamento può essere controllato tramite ~/.inputrc. Modifica (o crea, se non esiste) ~/.inputrce aggiungi questa riga:

"\C-H":"\C-W"

Ora, apri un nuovo terminale e dovrebbe funzionare.

Spiegazione

In \C-Hrealtà è Control+ BackSpace. Puoi vedere i codici chiave premendo Ctrl+ V, quindi il tasto che stai cercando. Vedrai che BackSpaceritorna ^H.

Ora, dovrebbe essere possibile associare Control+ BackSpacealla funzione bash che elimina la parola precedente ( backward-kill-wordo unix-word-rubout) usando "\C-H": backward-kill-word. Tuttavia, non riesco a farlo funzionare. Funziona perfettamente con chiavi diverse ( "\C-E": backward-kill-wordad esempio, fa Ctrl+ Ecancellare la parola precedente) ma per qualche motivo, non riesco a farlo funzionare BackSpace.

Quindi, per ovviare al problema, è sufficiente mappare Ctrl+ Backspacea Ctrl+ a Wcui è già stato mappato backward-kill-word. Quindi, quando premi Ctrl+ Backspace, verrà tradotto in Ctrl+ Wche, a sua volta, invierà backward-kill-word. Ho avuto l'idea per questa soluzione alternativa da questo post SU .


4

Fino a poco tempo fa, gnome-terminal ha emesso lo stesso codice su Backspacee Ctrl+ Backspace, quindi non è possibile distinguere i due nell'applicazione.

Questo problema è stato risolto in vte-0.42, che fa parte di Gnome 3.18 rilasciato questo autunno.

Se stai usando Wily, puoi trovare pacchetti aggiornati in Gnome3 Staging .


posso farlo funzionare in modo affidabile senza aggiungere quell'enorme PPA?
Ciprian Tomoiagă,

Non senza scaricare, applicare patch, compilare e installare il pacchetto libvte 2.90 che corrisponde a fidato. La patch è su bugzilla.gnome.org/show_bug.cgi?id=733246 .
egmont,

3

Usa Alt+ Backspaceinvece: funziona come Ctrl+ Backspacee non richiede alcuna configurazione.


1

Funziona sulla mia macchina. Assicurati di usare tmux da master e nvim da linuxbrew e control + backspace funziona anche in bash e vim!

(Ottieni bash anche da linuxbrew)

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.