Bagaimana cara saya mengedit perintah shell saat ini di VI


31

Saya telah melihat di blog di mesin Linux Anda dapat mengedit perintah bash shell saat ini di VI (atau apa pun EDITOR diatur ke) dengan menekan ctrl-x, ctrl-e.

Ini sepertinya tidak bekerja pada 10.8. Ada ide tentang cara mengedit perintah bash saat ini di editor default?


Ini seharusnya bekerja di 10.8 (setidaknya itu berlaku untuk saya). Apakah Anda mencoba untuk membatalkan FCEDIT dan EDITOR?
nohillside

Dokumentasi untuk C-xC-e ada di sini - apa yang ada di VISUALvariabel Anda ?
glenn jackman

ini bukan tentang 10.8. Saya berada di 10.8 dan berfungsi baik dengan saya. Saya tidak mengubah apa pun di .bash_profile saya untuk mengaktifkan ini.
Vincent


1
Saya baru menyadari bahwa saya sedang melakukan Ctrl + (x, e) (menahan ctrl, menekan x, menekan e, melepaskan kontrol) - inilah mengapa tidak bekerja untuk saya. Ketika saya berubah menjadi menekan dua sapuan jelas Ctrl-x, lepaskan Ctrl, Ctrl-e - maka semuanya mulai bekerja dengan sempurna!
Dimitry K

Jawaban:


32

Anda ingin set -o vi(tambahkan ke Anda ~/.bashrc). Kemudian, untuk mengedit baris saat ini, tekan saja Escuntuk masuk ke mode perintah.

Lihat http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Untuk mengedit perintah saat ini dalam editor layar penuh, atur VISUALvariabel lingkungan Anda ke vim(saya asumsikan Anda inginkan vim), kemudian dalam mode perintah di komentar saat ini, tekan v.


5
menekan "v" adalah saus rahasia yang saya lewatkan. Terima kasih.
Scott Walter

2
Apakah mungkin untuk mendapatkan vperintah ini saat dalam mode emacs (non-vi)?
Alex Kahn

10
Cukup lakukan Ctrl-X lalu Ctrl-E.
albapa

7

Anda edit-and-execute-commandmungkin tidak terikat untuk vimode. Mencoba:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Untuk membuatnya permanen, tambahkan baris itu ke ~/.inputrcfile Anda .

(melalui jawaban ini ; kredit ke @ unforgettableid untuk tautannya)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.