Vim dalam mode Ex berguna ketika:
- Anda perlu mengedit (banyak) file secara non-interaktif (sebagai bagian dari skrip).
- Koneksi Anda sangat lambat atau layar tidak diperbarui setelah tindakan Anda.
- Pemetaan dan singkatan dinonaktifkan.
- Kunci umum seperti Escapeatau Controltidak berfungsi dengan baik.
Pada dasarnya vi
adalah mode visual karena ex
itu Mode Vim Ex hanya emulasi ex
(mereka masih menjalankan kode yang sama), sehingga dimungkinkan untuk mendapatkan ke mode perintah ex
dari dalam vi dan sebaliknya. Sebenarnya ada dua mode: Ex mode ( vim -e
) dan mode Ex ditingkatkan yang memungkinkan untuk perintah lebih lanjut daripada mode Ex-kompatibel ( vim -E
). Lihat: Apa perbedaan antara mode Ex dan mode Ex yang ditingkatkan?
Ex adalah akar dari keluarga editor: edit
, ex
dan vi
. Ex adalah super-set ed
, dengan ekstensi yang paling terkenal adalah fasilitas pengeditan tampilan. ex (1)
Mengedit file secara non-interaktif adalah penggunaan yang paling umum dan orang-orang menggunakannya dengan cara yang sama seperti sed
dan awk
, namun mereka lebih berorientasi pada aliran - mereka hanya membaca file dari awal sampai akhir (mereka tidak dirancang untuk bekerja dengan banyak baris ) sementara vim
berorientasi buffer - Anda dapat bergerak maju dan mundur dalam file sesuka Anda yang membuatnya sangat kuat.
Pada dasarnya:
sed
adalah S tream ED itor, bukan file editor.
Namun demikian, orang-orang tampaknya menyalahgunakannya karena mencoba mengedit file dan kenyataannya tidak mengedit file. Kedua pilihannya seperti in-place ( -i
) adalah ekstensi FreeBSD non-standar dan mungkin tidak tersedia pada sistem operasi lain. Jadi, jika Anda ingin menghindari kode yang tidak dapat diakses, overhead I / O dan efek samping yang buruk (seperti menghancurkan symlink), Anda harus menggunakan ex
yang merupakan editor berbasis perintah UNIX standar (bersama dengan ed
) BashFAQ .
Hal-hal lain yang saya temukan berguna dalam mode Ex adalah menggunakannya sebagai taman bermain (mirip dengan python
konsol) di mana Anda dapat menjalankan banyak perintah berturut-turut, bekerja / men-debug ekspresi reguler, memeriksa konfigurasi vim, menjalankan perintah eksternal atau bekerja dengan register, dll .
Sebagai contoh:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
yang lebih mudah dalam mode Ex daripada dalam mode normal (di mana Anda hanya dapat melihat perintah terakhir Anda).
Penggunaan praktis
Saya memiliki alias berikut di .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Catatan: Menggunakan bufdo
bukan ex
metode yang sesuai dengan POSIX (sesuai manual ), jadi Anda dapat mempertimbangkan untuk menggunakannya find
. Ini !
digunakan untuk memaksa mengganti buffer tanpa menyimpan (jika tidak, peringatan akan dihasilkan).
Yang pertama saya gunakan untuk memangkas spasi tambahan di semua file sumber saya, misalnya:
trim **/*.php
Yang kedua mengubah semua tab menjadi spasi (secara rekursif), misalnya:
retab **/*.php
Bagi saya menggunakan retab
sudah cukup, tetapi ada beberapa kelemahan yang dijelaskan di sini . Tambahkan ekstra -V
untuk meningkatkan output verbositas.
Perhatikan bahwa contoh di atas menggunakan globbing zsh / bash4 ( **
), jadi pastikan shell Anda mendukungnya dan diaktifkan.
Untuk contoh yang lebih praktis (seperti parsing file html), periksa:
Pelajari juga lebih lanjut tentang Ex-mode di:
Q
danq:
sangat berbeda. Anda hanya merujuk keQ
kanan?