ExモードのVimは、次の場合に便利です。
- (スクリプトの一部として)非インタラクティブに(複数の)ファイルを編集する必要があります。
- 接続が非常に遅いか、操作後に画面が更新されません。
- マッピングと略語は無効です。
- Escapeまたはなどの共通キーControlは正常に機能しません。
基本的にvi
は視覚モードであるためex
、Vim Ex Modeは単なるエミュレーションでありex
(同じコードを引き続き実行します)、ex
viからコマンドモードに、またはその逆からコマンドモードに切り替えることができます。実際には2つのモードがあります。Exモード(vim -e
)と、vi互換のExモード(vim -E
)よりも高度なコマンドを可能にする改良されたExモードです。参照:Exモードと改良されたExモードの違いは何ですか?
Exが編集者の家族のルートですedit
、ex
とvi
。Exはのスーパーセットでed
、最も注目に値する拡張機能はディスプレイ編集機能です。ex(1)
編集は、非対話的にファイルと同様の方法でそれを使用する最も一般的な使用法と人々であるsed
とawk
、しかし、彼らは指向よりストリームされている-彼らは唯一の(それらが複数行で動作するように設計されていない最初から最後まで前方にファイルを読み込みます)vim
バッファ指向です-ファイル内を好きなように前後に移動できるため、非常に強力です。
基本的に:
sed
あるSの treamのEDの itor、ないファイルエディタ。
それにもかかわらず、人々はファイルを編集しようとするためにそれを乱用するようであり、真実はファイルを編集しないということです。次に、インプレース(-i
)などのオプションは非標準のFreeBSD拡張機能であり、他のオペレーティングシステムでは利用できない場合があります。あなたが使用する必要があるので、あなたは移植不可能コードを避けたい場合は、I / Oのオーバーヘッドと(例えばシンボリックリンクを破壊するような)悪い副作用ex
(と一緒に標準のUNIXコマンドベースのエディタであるed
)BashFAQ。
Exモードで役立つその他のことは、python
多くのコマンドを連続して実行したり、正規表現を操作/デバッグしたり、vim設定を確認したり、外部コマンドを実行したり、レジスタを操作したりできるプレイグラウンド(コンソールに似ています)として使用することです。
例えば:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
これは、Exモードでは通常モード(最後のコマンドのみが表示される)よりも簡単です。
実用的な使用法
に次のエイリアスがあります.bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
注:using bufdo
はex
POSIX準拠の方法ではないため(マニュアルによる)、find
代わりに使用することを検討できます。!
(そうでない場合は警告が生成される)保存せずにバッファを切り替える強制するために使用されます。
すべてのソースファイルの末尾のスペースをトリミングするために使用している最初のもの、たとえば:
trim **/*.php
2番目のものは、すべてのタブをスペースに(再帰的に)変換します。例:
retab **/*.php
私にとっては使用retab
するだけで十分ですが、ここで説明するいくつかの欠点があります。-V
冗長出力を増やすために追加します。
上記の例はzshの/ bash4を使用していることに注意してくださいグロブ(**
)ので、必ずお使いのシェルがそれをサポートし、それが有効になっています。
より実用的な例(htmlファイルの解析など)については、以下を確認してください。
Ex-modeの詳細については、以下をご覧ください。
Q
とq:
はまったく異なります。あなたはQ
正しいことだけを言っていますか?