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
を試すことができます