Saya telah melihat banyak pengembang menggunakan perintah ini untuk mengatur opsi ke vi. Saya tidak pernah mengerti penggunaan sebenarnya dari ini?
Saat menggunakan perintah bash, bantuan apa yang diberikan oleh switching ke vi?
Saya telah melihat banyak pengembang menggunakan perintah ini untuk mengatur opsi ke vi. Saya tidak pernah mengerti penggunaan sebenarnya dari ini?
Saat menggunakan perintah bash, bantuan apa yang diberikan oleh switching ke vi?
Jawaban:
Dengan mengatur pengeditan readline Anda menjadi emacs (default) atau vi ( set -o vi
), Anda pada dasarnya menstandarkan perintah pengeditan Anda, melintasi shell dan editor pilihan Anda 1 .
Jadi, jika Anda ingin mengedit perintah dalam shell Anda menggunakan perintah 2 yang sama seperti yang Anda lakukan jika Anda berada di editor teks Anda. Ini berarti hanya harus mengingat satu sintaks perintah dan (jika itu tidak cukup menguntungkan) mungkin akan membuat pengeditan Anda di kedua lingkungan lebih cepat dan lebih sedikit kesalahan ...
Anda dapat lebih meningkatkan hubungan ini dalam mode-vi dengan menarik perintah apa saja dari riwayat shell Anda, menekan Escapeuntuk masuk ke mode perintah dan kemudian menekan v, yang akan membuka $ EDITOR Anda dengan perintah yang dimuat untuk pengeditan yang lebih kompleks dengan kekuatan penuh vim. Setelah Anda selesai mengedit perintah untuk kepuasan Anda, :wqdan perintah dijalankan kembali di shell Anda.
1. Dengan asumsi, tentu saja, bahwa Anda menggunakan Emacs atau Vi / m sebagai editor Anda.
2. Atau, lebih tepatnya, bagian dari ...
set -o vi
yang tidak diketahui kebanyakan orang. Ini terutama benar jika Anda ingin mengeluarkan perintah yang sama beberapa kali dengan argumen yang berbeda (seperti beberapa perintah baris perintah).
set -o vi
. Di bawah pengaturan default set -o EMACS
, Cx, Ce akan memunculkan jendela emacs (atau $EDITOR
, jika diatur) di mana Anda dapat mengedit perintah sebelum menjalankannya.
Mode Vi adalah peningkatan kegunaan yang sangat besar jika Anda menggunakan klien SSH seluler seperti ConnectBot untuk Android.
Ini karena berkurangnya ketergantungan pada kunci pengubah.
Vim jauh lebih mudah digunakan dengan keyboard virtual di smartphone atau tablet daripada ... apa pun, termasuk metode pengeditan asli yang dibangun ke dalam Android UI. Ironisnya, lebih mudah untuk mengedit sumber C dengan Vim dalam sesi SSH daripada mengedit, katakanlah, pesan instan dengan widget pengeditan platform sendiri untuk tujuan itu.
Mode Shell vi membawa manfaat serupa.
Ini memungkinkan Anda mengedit hal-hal di baris perintah menggunakan mode vi dan operasi.
Contoh akan membantu membuatnya lebih jelas:
Anda mengetik cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
tetapi Anda mendapatkan kesalahan - Anda seharusnya mengetik file1.txt
tidakfile1.xt
Tanpa opsi ini disetel, Anda menekan panah atas dan kemudian menekan panah kiri dan membiarkannya mengulangi ... 35 kali, sampai Anda mendapatkan .xt
dan kemudian Anda mengetik ekstra t
. Total penekanan tombol: 37 .
Dengan opsi ini Anda dapat (misalnya) menekan panah ke atas satu kali, kemudian Escape untuk mode perintah, 0 untuk pergi ke awal baris dan kemudian /xt[return]
untuk sampai ke xt
dan kemudian Anda dapat mengetik i
untuk memasukkan mode dan ketik t hilang. Ini mungkin tampak sangat rumit dalam beberapa hal tetapi jika Anda adalah pengguna vim perintah ini sudah sangat terkenal. Total penekanan tombol: 9
Alt+B
s atau a Ctrl+Alt+]
.
dalam mode Emacs juga, jadi ini sepertinya bukan contoh yang kuat bagi saya.
Up
, Ctrl+Alt+]
, .
, Right
, t
, Enter
= 8. Vi modus: Up
, F
, .
, a
, t
, Enter
= 7. :)
Esc
di sana juga, itu panas sekali.
Saya tidak yakin apakah ada keuntungan langsung. Saya telah menjadi vi
pengguna selama lebih dari 20 tahun. Saya juga screen
pengguna lebih lama, dan dari program lain yang menggunakan vi
kunci. Wajar bagi saya untuk lebih memilih untuk mengatur mode "vi" di bash. Tapi saya juga bekerja pada ratusan server dalam pekerjaan saya, sebagian besar diatur ke mode "emacs" default. Jadi saya harus menggunakan kedua mode. Tapi itu benar-benar hanya masalah preferensi.
ssh
ing. Tentu saja, itu tidak membantu ketika saya menggunakan mesin lokal yang tidak memiliki .bashrc
barang - barang saya di atasnya.
Keuntungan utama adalah pengeditan modal dari baris perintah Anda. Jika Anda terbiasa dengan Vim dan menyukai filosofinya, manfaatnya harus jelas. Jika Anda berpengalaman dengan itu, memori otot jari Anda akan membuat Anda mengedit perintah bash Anda dalam kecepatan kilat.
NB : Jika Anda tidak menyukai pengeditan modal, Anda harus tetap belajar untuk mengambil keuntungan dari mode-emacs (default). Berikut adalah beberapa pintasan keyboard bagus yang akan bekerja pada proses apa pun dengan readline
, seperti bash
.
Jika Anda terbiasa vi
, maka Anda mengaturnya ke mode vi sebagai editor shell Anda. Itu akan menjadi alasan yang jelas. Yang lain adalah ketika bash
tidak tersedia secara default di beberapa OS (kebanyakan UNIX seperti AIX, Solaris), sehingga fitur riwayat shell tidak tersedia, jadi cara Anda mendapatkan perintah sebelumnya dengan mengatur editor shell ke vi
, dan Esc, Ctrl+ Katau Ctrl+L
Itu dapat membuat Anda dengan mudah menavigasi dan mengedit baris perintah menggunakan pintasan vim, misalnya dengan cepat pindah ke satu kata ke kanan, menghapus kata.
Dengan pintasan default, ketika Anda harus pergi ke akhir baris, Anda perlu Ctrl+ e, sedangkan dengan set -o vi
, Anda cukup menekan $
, seperti di vim.
Mungkin terlambat ke pesta, tetapi bagi saya menggunakan mode vi lebih tentang membuat skrip interaktif .. misalnya
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
contoh yang sangat sederhana dari apa yang bisa sangat rumit .. menggunakan ESCkvmenempatkan Anda ke dalam sesi vi di mana Anda dapat memodifikasi skrip, dan kemudian :wq
menjalankannya.
vi
mode, tetapi ini adalah contoh buruk dari kode bash. (1) Menggunakan output dari ls
sebagai input ke segala jenis pemrosesan adalah ide yang buruk. (2) $(…)
Sintaksis untuk substitusi perintah secara luas dianggap lebih mudah dibaca daripada `…`
sintaksis. (3) Anda harus selalu mengutip variabel shell kecuali Anda memiliki alasan yang kuat untuk tidak melakukannya, dan Anda yakin tahu apa yang Anda lakukan.