Saya dulu punya rekan kerja yang sangat bagus di UNIX.
Dia menunjukkan kepada saya bagaimana menggunakan binding kunci Vi untuk mengedit perintah shell saya.
Dia menempatkan perintah dalam file yang berjalan setiap kali saya masuk.
Sejak itu, saya pindah ke proyek lain.
Sayangnya saya tidak ingat bagaimana mengaturnya.
Apakah ada orang di sini yang tahu cara menggunakan binding kunci Vi untuk mengedit perintah di terminal?
Bagaimana saya bisa menjadikan pengaturan itu permanen?
vi bindings in the shell
fitur terbesar yang pernah ditemukan!jj
denganESC
seperti yang biasanya kita lakukan di vim?Jika Anda menggunakan bash, seperti yang dijawab jahroy dan otto jahat, Anda dapat menggunakannya
menyebabkan bash menggunakan perintah pengeditan vi-style.
Setelah selesai, Anda dapat mengetik Esc vuntuk meluncurkan editor vi dengan file sementara yang berisi salinan baris perintah saat ini. Anda dapat mengedit perintah, bahkan menggantinya dengan beberapa baris; ketika Anda menyimpan file (
:wq
), shell akan menjalankan perintah yang diedit.Jika kamu memilih
Anda dapat menggunakannya Ctl-XCtl-Euntuk melakukan hal yang sama. Ini akan menggunakan editor pilihan Anda
$EDITOR
, tidak harus emacs.(Secara pribadi, saya menggunakan vi (sebenarnya vim) untuk sebagian besar pengeditan saya, tetapi saya lebih suka
set -o emacs
di shell; beralih masuk dan keluar dari mode insert sangat bagus untuk mengedit file, tetapi canggung untuk perintah interaktif. YMMV.)sumber
set -o emacs
melakukan apa yang Anda inginkan?Anda dapat menggunakan
set -o vi
untuk mengubah perintah pengeditan baris Anda sebagai @jahroy diposting, tetapi Anda mungkin berpikir tentangfc
perintah (tersedia dalam bash dan saya pikir ksh, tetapi mungkin tidak tcsh), yang akan menempatkan perintah sebelumnya menjadi editor (FCEDIT atau EDITOR , yang mungkin telah Anda atur ke vi) dan kemudian jalankan perintah saat Anda keluar dari editor. Lihat halaman manual atauhelp fc
untuk detailnya, atau coba saja.sumber
alias r='fc -e -'
adalah alias berharga untuk menjalankan kembali perintah sebelumnya.fc
sendiri berasal dari kulit Korn, saya percaya. Anda dapat menentukan perintah berdasarkan nomor (fc 123 129
untuk mengedit nomor perintah 123 hingga 129 dalam riwayat). Anda dapat menentukan angka relatif (fc -10 -1
untuk mengedit 10 perintah terakhir yang dimasukkan). Anda dapat mendaftar perintah sebelumnya denganfc -l
. Anda dapat menentukan perintah dengan awalan denganr
alias (r make
menjalankan permintaan terakhirmake
; begitu jugar m
jika Anda belum menjalankanmv
perintah sejak Anda terakhir berlarimake
, dll.).Untuk mengedit perintah yang paling baru digunakan dalam vim dan menjalankan versi yang diedit setelah editor menyimpan dan keluar, gunakan
fc
shell built-in. Tanpa argumen apa pun akan dilakukan hal berikut:/tmp
dan mengisinya dengan perintah yang baru diketik:cquit
).Perintah berfungsi baik dalam bash dan zsh.
sumber
Memang, ini sebenarnya fitur terbesar yang pernah ada. Masih ada lagi:
Buat file dengan nama
mengandung garis
Editline , adalah pustaka versi berlisensi BSD yang menyediakan layanan seperti readline. Itu .editrc akan mengatur keybindings Anda ke mode vi di shell baris perintah MySQL, atau aplikasi apa pun yang tidak menggunakan readline.
Saya telah menjadi agak pelupa dengan berlalunya waktu, jadi .zshrc saya mencari beberapa pembungkus untuk mode vi, untuk menunjukkan kepada saya mode apa yang saya gunakan di baris perintah. Itu bagus.
Saya tahu di zsh Anda bisa mengetik
dan dapatkan daftar keybindings. Saya yakin bash pasti memiliki sesuatu yang serupa. Tidak semua tombol vi terikat secara default. Ikat mereka sesuai keinginan Anda dan Anda akan pergi ke balapan.
sumber
di terminal Anda, ketik
export EDITOR=vi
.Untuk menyimpan pengaturan ini. letakkan baris ini di file ~ / .profile
sumber
$EDITOR
)vi
. Itu tidak memungkinkan Anda mengedit perintah shell denganvi
(setidaknya tidak secara langsung).$EDITOR
berisivi
. Saya pikir itu satu-satunya shell yang melakukan ini.