Apakah ada cara untuk mengaktifkan Ctrl + L untuk menghapus layar ketika 'set -o vi' diatur?

54

Ketika Anda menekan Ctrl+ Ldalam mode default bash, layar dihapus. Tetapi ketika saya menjalankan set -o vidan menekan Ctrl+ Ltombol ditekan dicetak ( ^L). Apakah ada cara untuk menjaga perilaku ini?

David Martínez
sumber

Jawaban:

61

Ctrl+ Ljuga terikat dalam mode perintah vi tetapi tidak dalam mode sisipkan. Tidak ada pengikatan default untuk clear-screendalam mode sisipkan. Binding Readline harus ditentukan dalam ~/.inputrc, seperti:

set editing-mode vi
$if mode=vi

set keymap vi-command
# these are for vi-command mode
Control-l: clear-screen

set keymap vi-insert
# these are for vi-insert mode
Control-l: clear-screen 
$endif

Ini akan mengikat Ctrl+ Luntuk menghapus layar dalam mode normal dan insert. Tentu, jika Anda lebih suka menggunakannya dalam satu mode, cukup hapus opsi yang relevan.

Ada banyak perintah readline yang bisa Anda gunakan untuk menyesuaikan bash shell Anda.

jasonwryan
sumber
1
karena penasaran, mengapa repot-repot dengan vi-command jika sudah dipetakan? hanya demi kelengkapan, atau adakah alasan teknis?
Ken Bellows
2
@ KenBellows untuk kejelasan, sesuai komentar (dan saya membutuhkan contoh di blok vi-command untuk alasan estetika murni).
jasonwryan
22

Masukkan baris ini di bashrc:

bind -m vi-insert "\C-l":clear-screen
casey
sumber