新しいファイルが書かれているときにcommandTflushコマンドを実行します

StackOverflow https://stackoverflow.com/questions/3486747

  •  28-09-2019
  •  | 
  •  

質問

新しいファイルが書かれているときはいつでも、vimに「commandtflush」コマンドを実行させようとしています。 Command-Tプラグインを使用していない場合は、「CommandTflush」コマンドを使用して、現在のディレクトリ内のファイルのインデックスを再構築します。

私がやりたいのは、ファイルがディスクに書き込まれた後にコマンドを実行することです。これにより、CommandTflushがファイルを見つけてインデックスに追加します。

私は自分で関数を書き込んでみましたが、それが発射されないか、それがあまりにも早く発射されないかのいずれかです(ファイルが書かれている前に、そして全体のポイントはインデックスにファイルを追加することです):

au! BufWritePre * ks| call NewFilesUpdatesCommandT()
function! NewFilesUpdatesCommandT()
    let filename=@%
    if !filereadable(filename)
        CommandTFlush
    endif
endfunction

bufwritepreにブールvar(isthefilenew)を設定し、ファイルが作成された場合にbufwritepostでcommandtflushコマンドを実行することで解決できると思いますが、構文はわかりません。もう1つのソリューションは、BufwritePreのコールバックからBUFWRITEPOSTコールバックを設定/設定/設定することです。可能であれば...

誰かがここで私を助けてくれますか? ;)

役に立ちましたか?

解決

augroup NFUCT
    autocmd!
    autocmd BufWritePre * call NFUCTset()
augroup END
function NFUCTset()
    if !filereadable(expand('%'))
        augroup NFUCT
            autocmd BufWritePost * call NFUCT()
        augroup END
    endif
endfunction
function NFUCT()
    augroup NFUCT
        autocmd!
        autocmd BufWritePre * call NFUCTset()
    augroup END
    CommandTFlush
endfunction

これはあなたの2番目の提案の実現です。

他のヒント

これが私の解決策です。ファイルが書かれているときはいつでも、またVimのウィンドウが焦点を獲得するたびにCommandTflushをトリガーします。これは、VIMの外側にファイルを作成する場合に役立ちます。たとえば、バージョン制御システムのブランチを切り替えることで役立ちます。新しいファイルは、VIMを再入力した直後にCommandTで利用可能になります。

augroup CommandTExtension
  autocmd!
  autocmd FocusGained * CommandTFlush
  autocmd BufWritePost * CommandTFlush
augroup END
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top