1

VIM を使用してデータ ソースをクリーンアップし、SIMILE タイムラインで使用できるように適切にフォーマットしています。

VIM はうまく機能しますが、私の知る限りでは自動化できないため、SED などを使用してデータソースをクリーンアップすることを考えていました。SED を使用して検索と置換を実行できることは知っていますが、VIM を使用してデータをクリーンアップするときは、VIM マクロと vim 正規表現の検索と置換を組み合わせて使用​​します。

SED に VIM マクロに相当するものはありますか?

4

2 に答える 2

4

:substitute非常に単純なテキスト処理 (つまり、強化された 'sed' や 'awk' のように Vim を使用し、おそらくコマンド内の強化された正規表現の恩恵を受ける) には、 Ex-modeを使用します。

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

注: サイレント バッチ モード-s-exは Windows コンソールを台無しにするためcls、Vim の実行後にクリーンアップを行う必要がある場合があります。

# Unix
vim -T dumb --noplugin -n -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.
-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.
于 2012-11-16T15:49:25.303 に答える
3

実際、vim と vi のすべての以前のバージョンを自動化できます。(しかし、はい、通常は sed(1) を使用します。) Vim は ex(1) リンクを使用して起動できます。この場合、ライン モードのままになります。

例えば:

ex - /etc/hosts << \eof
$a
10.11.12.13 a-host-name
.
w /tmp/otherhosts
q
eof

それを入れると、次のautovim.shことができます:

$ sh autovim.sh
$ cat /tmp/otherhosts
于 2012-11-16T15:44:36.377 に答える