以下の内容ですcmd.txt
:
:w 2.txt
:q
コマンドラインでは、
D:\>vim 1.txt<cmd.txt
入力ストリームとして cmd.txt (キーボードではなく) を想定しており、vim は 1.txt を 2.txt として保存して終了します。
しかし、動作しません。Vim は入力が端末からではないと表示し、フリーズします。
外部ファイルからコマンドを送信したいのですが、どうすればいいでしょうか?
アップデート:
私がやりたいのは、たくさんのパターンを置き換えることです。NBA の歴史について語るファイルがあり、チーム名が都市名で呼ばれていますが、それを「姓」に変更したいと考えています。
何らかの方法で置換コマンド (30 ルール/行) を生成しました。
:%s/\v<Boston>/Celtics/g
:%s/\v<Brooklyn>/Nets/g
:%s/\v<New York>/Knicks/g
:%s/\v<Philadelphia>/76ers/g
:%s/\v<Toronto>/Raptors/g
:%s/\v<Golden St>/Warriors/g
:%s/\v<LA Clippers>/Clippers/g
:%s/\v<LA Lakers>/Lakers/g
:%s/\v<Phoenix>/Suns/g
:%s/\v<Sacramento>/Kings/g
:%s/\v<Chicago>/Bulls/g
:%s/\v<Cleveland>/Cavaliers/g
:%s/\v<Detroit>/Pistons/g
:%s/\v<Indiana>/Pacers/g
:%s/\v<Milwaukee>/Bucks/g
.....
これらのコマンドを実行するために、vim にファイルを入力したいのですが、これらのコマンドを手動で入力したくありません。
別の方法でルールを生成して他のプログラムに入力するか、置換を行う簡単なプログラムを作成することもできます。ただし、最近学習している Vim、Powershell、または Total Commanders で実行できれば幸いです。
答え1
これはコマンドラインオプションで実行できます-s
:
vim -s cmd.txt 1.txt
しかし、テウン・ヴィンクのコメントは依然として有効です。あなたは実際に何をしようとしているのですか?これは古典的なX->Y問題。
答え2
この投稿は古いものだとわかっていますが、@Gqqnbig が求めていることは可能です。
頻繁に実行したいコマンドのリストをファイルに保存するだけです。理想的には、.vim 拡張子を付けます (例: nbaEdits.vim)。
コマンドを実行するデータ ファイルでは、VIM コマンド ラインから次のコマンドを発行するだけです (私はこれを Windows 経由でのみ試しました)。
:source c:\myVimCommands\nbaEdits.vim
**上記は、コマンドファイルがc:\myVimCommandsのフォルダにあることを前提としています。