GNU/Linux >> Linux の 問題 >  >> Linux

Bash シェル スクリプト内から Vim を開く

ex vi のコマンドライン バージョンです。 、スクリプトでの使用がはるかに簡単です。

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

vim を介してテキスト ファイルに「何か」を書き込む方法を質問されましたが、まだそれをカバーしている回答はありません。

テキストを挿入するには:

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

:i 挿入モードに入ります。以降のすべての行は . までテキストが挿入されます

ここでは、検索と挿入の方法についても説明します。次のようなことができます:

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

これにより、:/ で指定された正規表現に一致する最初の選択が見つかります 、 \zs で指定された位置にカーソルを置きます をクリックし、カーソルの後に挿入モードに入ります。

\zs 移動できます さまざまな結果を達成するために。例:

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

これにより、最初に出現する「試合の開始」が「試合の開始」から「試合の終了を挿入するテキストの開始」に変更されます。

キーワード間の検索で任意の量の空白を許可したい場合は、 \_s* を使用してください .たとえば、0 を返す関数を検索する::/\_s*return\_s*0}


vim または gvim 内で行われている作業を見たい場合は、 --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."

これは遅くなりますが、あなたが望むことをします。
まず、すべてのファイルを開くことができる gvim を開きます (効率のため)。
最初の gvim 行では、以前に開いた gvim でファイルを開きます。
2 番目の gvim 行では、以前に開いた gvim のインスタンスにコマンドを送信します (目的のファイルはまだ開いています)。
コマンドは次のとおりです。
<ESC> - gvim があった可能性のあるモードから抜け出す
i something to the file - 挿入モードに入り、「something to the file」と入力します
<ESC> - 挿入モードを終了
:wq - ファイルを書き込んで vim を終了


Vim にはいくつかのオプションがあります:

  • -c => ex コマンドを渡します。例:vim myfile.txt -c 'wq' ファイルの最後の行を強制的に改行で終了させる (binary を除く) スクリプトによって何らかの方法で設定されます)
  • -s => -W で記録されたスクリプトを再生します .たとえば、ファイルに ZZ が含まれている場合 、次に vim myfile.txt -s the_file_containing_ZZ 以前と同じように行います。

ex として呼び出されることにも注意してください。 、vimはexモードで起動します; ex my_file.txt <<< wq を試すことができます


Linux
  1. bashスクリプトが同時に実行されないようにする

  2. Bashスクリプトをファイルに接続できますか?

  3. シェルスクリプト内から passwd コマンドを使用する

  1. VimでBashスクリプトを強調表示するには?

  2. アトミック作成ファイルが存在しない場合は、bash スクリプトから

  3. .sh ファイルがマルウェアになる可能性はありますか?

  1. フォルダから最も古いファイルを削除するためのBashスクリプト?

  2. フォルダーから最も古いファイルを削除する Bash スクリプト

  3. bash + bashスクリプトでファイルから変数と値を読み取る