[解決済み] Vimはexceptを除くすべてのファイルタイプでautocmdを実行します。
2023-03-09 16:11:55
質問
Vim の autocmd で、書き込みの前にファイルの末尾の空白を削除するものがあります。私はこれをほぼ 100% 使用したいのですが、無効にしてほしいファイル タイプがいくつかあります。従来の常識では、自動実行させたいファイルの種類をカンマ区切りでリストアップします。
autocmd BufWritePre *.rb, *.js, *.pl
しかし、この場合、それは負担になります。
パターンに一致するファイル以外のすべてのファイルに対して autocmd パターンをマッチさせる方法はありますか?ドキュメントで NOT matcher に相当するものを見つけることができません。
どのように解決するのですか?
*.rb
はファイルタイプではありません。 ファイルパターンです。
ruby
はファイルタイプであり、また
.rb
拡張子を持たないファイルに設定することもできます。 したがって、最も必要なのは、autocmd が呼び出す関数で、処理されるべきではない filetypes をチェックし、空白を除去することです。
fun! StripTrailingWhitespace()
" Don't strip on these filetypes
if &ft =~ 'ruby\|javascript\|perl'
return
endif
%s/\s\+$//e
endfun
autocmd BufWritePre * call StripTrailingWhitespace()
evan の回答を基に、buffer-local 変数をチェックし、それを使用してストリップを行うかどうかを決定することができます。 これは、通常ストリップするファイル タイプのバッファをストリップしたくないと判断した場合に、1 回限りの無効化を行うことも可能にします。
fun! StripTrailingWhitespace()
" Only strip if the b:noStripeWhitespace variable isn't set
if exists('b:noStripWhitespace')
return
endif
%s/\s\+$//e
endfun
autocmd BufWritePre * call StripTrailingWhitespace()
autocmd FileType ruby,javascript,perl let b:noStripWhitespace=1
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] Vimで行末に移動するにはどうしたらいいですか?
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] vimとnotepad++ [終了しました]。
-
[解決済み] .vimrcファイルはどこですか?
-
[解決済み] Vimの効果的な使い方:ワイルドメニュー
-
[解決済み] Vimのマッピングコマンドであるremap, noremap, nnoremap, vnoremapの違いは何ですか?
-
[解決済み] vimでカーソルをファイル末尾に移動させる
-
[解決済み] vi/Vimで複数行の選択範囲の先頭にテキストを挿入する方法
-
[解決済み] 開いているタブをすべて一度に閉じるにはどうすればよいですか?
-
[解決済み] VIM:現在位置からスペースまで削除する
-
[解決済み] Vimで前に開いていたファイルに戻るには?重複
-
[解決済み] Vimでコマンドのエイリアスを作成する方法は?