Pelacak bug Gnats memiliki perintah (edit-pr) yang membuka tiket dalam $ EDITOR. $ EDITOR saya adalah VIM, dan ketika perintah ini membuka tiket dalam $ EDITOR, saya ingin secara otomatis melakukan beberapa pengeditan naskah tanpa harus membuat penekanan tombol tambahan.
Apakah ada cara untuk menulis skrip VIM yang dapat dijalankan secara non-interaktif seperti ini?
Meskipun Anda sudah menerima jawaban untuk pertanyaan Anda, orang lain mungkin menemukan ini berguna.
Perintah Vim juga dapat ditentukan dalam file yang dieksekusi menggunakan
-s
opsi:Contoh:
Ini akan menggunakan Vim untuk indentasi isi file, simpan dan keluar.
sumber
Perintah Vim dapat ditentukan pada baris perintah saat Anda menjalankan program seperti ini:
Anda dapat terus menambahkan perintah dengan menambahkan
"+[cmd]"
argumen. Anda dapat mengakhiri di sana dan editor akan membuka, menjalankan perintah itu dan menunggu atau Anda, atau Anda dapat menambahkan"+:wq"
untuk menyimpan dan menutup file.Anda juga dapat menulis skrip menggunakan sintaks vimscript dan membungkusnya dalam fungsi untuk memanggil ketika file dibuka atau dalam skrip terpisah untuk mengimpor dan menerapkan buffer menggunakan sintaks di atas.
sumber
Untuk melaksanakan vim dalam mode non-interaktif, Anda dapat menggunakan salah
+{command}
/-c {command}
atau-s
parameter yang akan memungkinkan Anda untuk menjalankan perintah vim setelah file pertama sudah dibaca.Lihat beberapa contoh di bawah ini.
Input dan output standar sederhana menggunakan pipa dapat dicapai dengan perintah:
Untuk mengedit satu file dan menyimpan perubahan ke yang lain:
Untuk mengedit file di tempat, Anda dapat menggunakannya
-s {scriptin}
agar file skrip dibaca, misalnya:Untuk mem-parsing file dan mengirimkannya ke output pipeline, Anda dapat mencoba yang berikut:
atau:
Lihat lebih lanjut: Bagaimana cara mengedit file secara non-interaktif (mis. Dalam pipeline)? di Vim SE
sumber
:hi
dapat digulir dan ditampilkan-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? Itu tidak muncul dalam daftar buffer, dan menulis dengan:w
menulis file kosong (dan keystroke 'enter' menyebabkan pager untuk menggulir atau keluar.) Saya dapat menggunakan:redir! >file | :hi | :redir END
, yang menangkap sebanyak yang saya gulir. Saya pikir ini dapat bekerja secara mekanis seperti 2 arahmore
. Saya harus bertanya-tanya mengapa:help
dan:hi
tidak keduanya paged atau keduanya RO-buffered ...