GNU/Linux >> Belajar Linux >  >> Linux

Buka Vim dari dalam skrip Bash Shell

ex adalah versi baris perintah untuk vi , dan lebih mudah digunakan dalam skrip.

ex $yourfile <<EOEX
  :%s/$string_to_replace/$string_to_replace_it_with/g
  :x
EOEX

Anda bertanya bagaimana cara menulis "sesuatu" ke dalam file teks melalui vim dan belum ada jawaban yang membahasnya.

Untuk menyisipkan teks:

ex $yourfile <<EOEX
  :i
  my text to insert
  .
  :x
EOEX

:i memasuki mode penyisipan. Semua baris berikut disisipkan teks hingga . terlihat muncul dengan sendirinya di barisnya sendiri.

Berikut ini cara mencari dan menyisipkan juga. Anda dapat melakukan sesuatu seperti:

ex $yourfile <<EOEX
  :/my search query\zs
  :a
  my text to insert
  .
  :x
EOEX

Ini akan menemukan pilihan pertama yang cocok dengan regex yang ditentukan oleh :/ , letakkan kursor di lokasi yang ditentukan oleh \zs , dan masuk ke mode penyisipan setelah kursor.

Anda dapat memindahkan \zs untuk mencapai hasil yang berbeda. Misalnya:

ex $yourfile <<EOEX
  :/start of match \zs end of match
  :a
  my text to insert 
  .
  :x
EOEX

Ini akan mengubah kejadian pertama dari "awal pertandingan akhir pertandingan" menjadi "awal pertandingan teks saya untuk menyisipkan akhir pertandingan".

Jika Anda ingin mengizinkan jumlah ruang putih apa pun dalam pencarian Anda di antara kata kunci, gunakan \_s* . Misalnya, mencari fungsi yang menghasilkan 0::/\_s*return\_s*0}


Jika Anda ingin melihat pekerjaan yang dilakukan di dalam vim atau gvim, Anda dapat menggunakan --remote-send

gvim --servername SHELL_DRIVER
bashpromt# cat mybash.sh
#!/bin/bash
echo "about to open $1"
gvim --servername SHELL_DRIVER $1 #I need to use vim application to open a file
#now write something into file.txt and close it
gvim --servername SHELL_DRIVER --remote-send '<ESC>i something to the file<ESC>:wq<CR>'
echo "done."

Ini akan lambat tetapi akan melakukan apa yang Anda inginkan.
Pertama kami membuka gvim di mana kami dapat membuka semua file kami (untuk efisiensi)
Dengan baris gvim pertama kami membuka file di gvim yang sebelumnya dibuka.
Pada baris gvim kedua kami mengirimkan perintah ke instance gvim yang dibuka sebelumnya (dengan file yang diinginkan masih terbuka).
Perintahnya adalah sebagai berikut:
<ESC> - keluar dari mode apa pun yang mungkin digunakan gvim
i something to the file - masuk ke mode penyisipan dan ketik "sesuatu ke file"
<ESC> - keluar dari mode penyisipan
:wq - tulis file dan keluar dari vim


Vim memiliki beberapa opsi:

  • -c => berikan perintah ex. Contoh:vim myfile.txt -c 'wq' untuk memaksa baris terakhir file diakhiri dengan baris baru (kecuali binary diatur dalam beberapa cara oleh skrip)
  • -s => mainkan scriptout yang direkam dengan -W . Misalnya, jika file Anda berisi ZZ , lalu vim myfile.txt -s the_file_containing_ZZ akan melakukan hal yang sama seperti sebelumnya.

Perhatikan juga bahwa, dipanggil sebagai ex , vim akan mulai dalam mode ex; Anda dapat mencoba ex my_file.txt <<< wq


Linux
  1. Bash Script Untuk Menghapus File Terlama Dari Folder A?

  2. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  3. Menggunakan perintah passwd dari dalam skrip shell

  1. Bagaimana cara menyorot skrip Bash di Vim?

  2. Jalankan skrip bash dari URL

  3. Skrip Bash untuk menghapus file terlama dari folder

  1. Mencegah skrip bash berjalan secara bersamaan

  2. Bisakah Skrip Bash Dihubungkan ke File?

  3. Bash Script:Periksa Apakah File Adalah File Teks?