Bash スクリプト VIM コマンド

Bash スクリプト VIM コマンド

迷惑な繰り返しのVIMコマンドセットを適用する必要があるファイルがいくつかあります。これは、ファイルが必要なプロセスでサポートされていない一部の行を削除するための基本的なVIMコマンドです。

postgresdb.outというファイルがあるとしましょう。

このファイルでは、

vim ./postgresdb.out

その後、VIM内で

:%s/old/new/g

それから

:g/deletethis/d

続いて

:%s/\n\n//g

それからファイルを保存して一日を始めましょう

常に再入力するのではなく、このプロセスを実行するためにbashスクリプトを書くことができるかどうか疑問に思います。

ベストアンサー1

代替

Vimの特別な機能が必須ではない場合は、Vimを使用する方が良いでしょう。非対話型ツールたとえばsedawkまたはPerl/Python/Ruby/あなたが好きなスクリプト言語がここにあります

つまり、Vimを非対話式として使用できます。

自動配置モード

非常に単純なテキスト処理の場合(たとえば、拡張された「sed」や「awk」などのVimを使用する場合、またはコマンドの拡張正規表現を使用する場合:substitute)、次のように使用します。辞書モード

REM Windows
call vim -N -u NONE -n -i NONE -es -S "commands.ex" "filespec"

注:自動配置モード(:help -s-ex)はWindowsコンソールを複雑にするため、clsVimを実行した後にクリーンアップする必要があるかもしれません。

# Unix
vim -T dumb --noplugin -n -i NONE -es -S "commands.ex" "filespec"

"commands.ex"注:ファイルが存在しない場合、Vimは入力を待って停止します。ファイルが存在するかどうかを事前に確認することをお勧めします。あるいは、Vimはstdinからコマンドを読み取ることができます。 stdinから読み取られたテキストで新しいバッファを埋めることも、引数を使用している場合はstderrからコマンドを読み取ることもできます-

完全自動化

複数のウィンドウと Vim の真の自動化を含む高度な処理のために (ユーザーと対話するか、または Vim を実行中のままにしてユーザーが引き継ぐようにすることができます)、次を使用します。

vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"

使用されたパラメータを要約すると、次のようになります。

-T dumb           Avoids errors in case the terminal detection goes wrong.
-N -u NONE        Do not load vimrc and plugins, alternatively:
--noplugin        Do not load plugins.
-n                No swapfile.
-i NONE           Ignore the |viminfo| file (to avoid disturbing the
                user's settings).
-es               Ex mode + silent batch mode -s-ex
                Attention: Must be given in that order!
-S ...            Source script.
-c 'set nomore'   Suppress the more-prompt when the screen is filled
                with messages or output to avoid blocking.

おすすめ記事