タグ付けされた質問 「autocmd」

「autocmd」は、特定のイベントで自動的に実行されるコマンドです。「autocmd」定義の作成または変更に関する質問は、このタグに適しています。

5
まだ存在しないディレクトリにファイルを保存するにはどうすればよいですか?
Vimを起動して、まだ作成されていないディレクトリ内の新しいファイルを編集するとします。 vim nonExisitingDirectory/newFile.txt Vimは喜んで空のバッファーを表示し、新しいファイルの書き込みを開始できます。しかし、ファイルをディスクに書き込みたい場合、このエラーが発生します: E212: Can't Open file for writing. これは、ディレクトリがまだ存在しないためと思われます。Vimにディレクトリの作成を強制する方法はありますか?
35 save  autocmd 

3
augroupを使用する理由は何ですか?
自動コマンドの仕組みと使用方法は理解していますが、augroupの目的は少し確信しています。読みました:help augroup *:aug* *:augroup* :aug[roup] {name} Define the autocmd group name for the following ":autocmd" commands. The name "end" or "END" selects the default group. To avoid confusion, the name should be different from existing {event} names, as this most likely will not do what you intended. これは、なぜそれらが有用であるのか、または単に一連のオートコマンドを隣り合わせに定義するだけではなく、オートコマンドグループ名を作成したい理由を実際には説明しません。 たとえば、オートコマンドfooとbarが関連している場合、なぜしたいのでしょうか augroup …
31 autocmd 

2
autocmdでイベントをANDする方法はありますか?
autocmd 2つのイベントでをトリガーしますが、通常行われる方法ではありません。つまり、いずれかのイベントが発生した場合にをトリガーしautocmdます。両方のイベントが発生した場合にトリガーします。 例: 通常の方法 autocmd BufWrite,BufRead *.c *.py *.h :call StripTrailingWhitespaces() このコードは、BufWriteまたはBufReadでStripTrailingWhiteSpaces()を呼び出します 私は次のようなことをしたいです: autocmd Filetype c,cpp,python AND BufWrite :call StripTrailingWhiteSpaces() 言い換えればautcmd、ファイルタイプがc、cpp、pythonのいずれかである場合にトリガーし、このバッファーへの書き込みが行われます。 どんな助けも大歓迎です。
21 autocmd 

2
WinEnter、BufEnter、BufRead、Syntax、FileTypeイベントの順序は何ですか?
私はautocmd.txtヘルプを試しましたが、これに関する情報は散在しており、常に存在するわけではありません(例:with BufRead)。 これをよく理解している人がこれらのイベントの順序をリストできますか? WinEnter BufEnter (if this window is for a different buffer than the current) 簡単に参照できるように? 注(以下の自分のコメントからコピー):それらの個々の説明については話していないが、それは問題ありませんが、それらが互いにどのように相互作用し、どの順序で起こるかについてです。たとえば、WinEnter「VimはWinEnterオートコマンドの後にBufEnterオートコマンドを実行します」、TabEnter「WinEnterをトリガーした後、BufEnterイベントをトリガーする前に」と言うと、このように多くの場所に散らばっています。そして、時にはそれは、例えばのために(すべてでは言及していない。BufReadそれはBufEnter後、または前に実行されるかどうか言及していない- 。多分専門家が情報のいくつかの他の部分からそれを推測することができますが、私はできません ので、ここに私の意図がにありますこれらのイベントの順序に関する単一の単純な参照を作成します。これらの参照は、専門家以外でもすばやく検索できます。autocmd イベント仕様。

2
ファイルのサイズと種類に応じて構文の強調表示を無効にする
多くの場合、vimを使用してさまざまなXMLファイルを編集する必要があります。vimはサイズが大きく異なります-数百行の構成ファイルから最大2GBの実稼働データファイルまで。巨大なファイルを扱う場合、構文の強調表示を有効にすることはもちろん非常に悪い考えです。したがって、ファイルがしきい値よりも大きい場合は無効にします。 シェルからvimを起動するときに構文が有効になる前にautocommandコマンドが実行されるように見えるため、これを直接使用して構文の強調表示を無効にすることはできませんでした: " this autocmd has no effect except for the echo: autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif 構文の強調表示をグローバルに無効にしてから、xml以外のすべてのファイルタイプに対して再度有効にし、ファイルがしきい値より大きくない場合にファイルタイプxmlに対して有効にすることができるという回避策を見つけました。 syntax off autocmd Filetype * syntax off autocmd Filetype * if &ft != 'xml' | syntax enable | endif autocmd Filetype xml …

1
ftpluginのautocmdの場合、パターンマッチングまたは<buffer>を使用する必要がありますか?
TeXおよびMarkdownファイルのautocmdを使用して、ファイルを自動的に保存します。異常なし: autocmd CursorHold *.tex,*.md w ただし、これらのファイルのカスタム設定が増加したため、それらをftplugin/tex.vimおよびに分割しましたftplugin/markdown.vim。 " ftplugin/tex.vim autocmd CursorHold *.tex w " ftplugin/markdown.vim autocmd CursorHold *.md w 現在、これらのファイルは適切なファイルのみをソースとしているため、パターンマッチングは冗長です。どうやら、autocmdsはバッファローカルにすることができます。から:h autocmd-buffer-local: Buffer-local autocommands are attached to a specific buffer. They are useful if the buffer does not have a name and when the name does not match a specific pattern. But …
14 autocmd  filetype 

1
Vimで.odt、.doc、.docx、.rtf、およびその他の非テキスト形式を簡単に操作できますか?
時折誰かが私に送信し.odt、.doc、および.docxファイル。OpenOfficeでそれらを開くのは常に苦痛です。 現在、さまざまなコマンドラインツール(などodt2txt)を使用してこれらのファイルをプレーンテキストに変換し、プレーンテキストを一時ファイルに保存してから、Vimで表示(および編集)します。 これをもっと簡単にできますか?おそらくオートグループで何か?それとももっと良い方法がありますか?私はただやりたい: $ vim file.odt そして、Vimは私のために変換を処理してくれましたか? さらに良い(ボーナスポイント)は、ファイルを(にfile.txt)保存することができた場合ですが、書き込みを行うまでこれは作成されません ...

3
単語の2番目の文字を自動的に小文字にする方法は?
たくさんのテキストを入力しなければならないshiftとき、私はしばしば次のような文の最初の文字を書くときに指を押し続ける傾向があります。 [...]end of sentence. NEw sentence[...] ここで、Eof NEwは小文字でなければなりません。次に、入力する文の最初の単語の2番目の文字が大文字かどうかを検出し、小文字にする関数を作成しようとしています。重要な部分は、文章の終わりを入力している間に修正が自動的に行われることです。 これまでのところInsertCharPre、このイベントによってトリガーされる関数によってテキストを変更できないことに気付く前に、オートコマンドイベントを試してみました。 良い解決策は何でしょうか? 注これまでのところ、頭字語のような大文字の場合や、このようなことをする必要があるエッジケースに焦点を合わせる必要はありません。 編集私はこれを作成しましたが、これは完璧な回避策ではありません: autocmd CursorMovedI * call RemoveUnwantedUpper() function! RemoveUnwantedUpper() " Get the current sentence " Based on http://stackoverflow.com/a/23315227/4194289 let l:save_clipboard = &amp;clipboard set clipboard= " Avoid clobbering the selection and clipboard registers. let l:save_reg = getreg('"') let l:save_regmode = getregtype('"') …

2
vim autocomandからの出力を抑制する
私のvimrcでオートコマンドが定義されています: au BufWritePost * !./make.sh スクリプトmake.shは.texファイルを3回コンパイルしますが、出力を表示したくありません。 出力を抑制する方法はありますか? コマンドのsilent前に1行追加しようとしましたauが、機能しませんでした。私もこの方法で成功しませんでした。
13 autocmd 

3
その場でaugroupを有効/無効にする方法は?
augroup私.vimrcはいくつかのautocmdを含むを作成しましたがautocommand、オンザフライで有効/無効にする必要があります。 アイデアは、F4一度押すとこれらのオートコマンドを有効にし、もう一度押すとファイルをソースしたり、を再ロードしたりすることなく無効にするマッピング(たとえば、としましょう)を作成すること.vimrcです。 どうやってやるの?


1
ファイルなし、存在しないファイル、または空のファイルでVimを起動するときにautocmdを実行するにはどうすればよいですか(ただし、既存のファイルで起動するときはできません)。
Vimを起動するときに、次のシナリオでautocmdを実行したいと思います。 ファイル名が指定されていません。 ファイルが新しい場合。 ファイルは存在するが完全に空白の場合。 上記の3つのケースすべてで、autocmdを実行したいと思います。具体的には、上記のシナリオでのみ挿入モードを自動的に開始したいと思います(すでに存在していて空白ではないファイルを開いているときではありません)。 更新: 私は次のことをに入れようとしました_vimrcが、うまくいきません(さらに、ファイルを開く前に、ファイル内の文字数をカウントする(ゼロかどうかを確認する)関数がvimにあるかどうかわかりません: if @% == "" || filereadable(@%) autocmd BufRead,BufNewFile * startinsert endif

1
エラーをスローせずにVimがファイルを書き込めないようにするにはどうすればよいですか?
私はこの答えのコードを改善して、不足しているディレクトリを作成する前に確認を求めようとしています。これは私が書いたものです: function! CreateDirectoryAskConfirmation(path) if !isdirectory(a:path) echohl Question echo "Create directory " . a:path . "?" echohl None let response = nr2char(getchar()) if response ==? "y" call mkdir(a:path, "p") endif endif endfunction autocmd BufWritePre * call CreateDirectoryAskConfirmation(expand("&lt;afile&gt;:p:h")) 1つ欠けているのyは、プロンプトを押さない場合は、Vimに書き込みを中止させて、エラーが発生しないようにE212: Can't open file for writingするためです。エラーメッセージを非表示にするために別のキーを押す必要はありません。これを達成する方法はありますか?
10 save  autocmd  error 

3
新しいvimファイルにスケルトンテキストを追加するにはどうすればよいですか?
私はC ++の記述にVimを使用しており、#include&lt;&gt;作成する新しい各ファイルに含める必要のあるステートメント、コメントなどがかなりあります。私は追加しました autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) vimrcに追加しました。これにより、必要なテキストを含むバッファーが作成されると聞きました。このテキストを新しいファイルに追加するにはどうすればよいですか?バッファからこれを行う簡単な方法はありますか、またはこれを実行する別の簡単な方法はありますか?テンプレートプラグインについても少し聞いたことがあります。私のためにこれを行うことができる非常に単純なものはありますか?

1
ファイルの最初と最後の5行?ファイル固有のスペル無視リストに使用しますか?
噂によるとvim、ファイルの最初の5行または最後の5行にコマンドを配置することは可能です。しかし、Googleではこれを見つけることができませんでした。どんなリードもいただければ幸いです。 この機能を使用して、単語リストにファイル固有の追加を定義することは可能でしょうか。 感謝を編集!modelineそれはです!提案されている方法でスペルチェックに使用できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.