2016-03-31 6 views
4

私の.vimrcでは、vim -Rまたはviewのいずれかで実行されているかどうかを確認できます。もしそうなら、私はすぐにファイルを見たい時にスピードを上げるためにいくつかのプラグインの読み込みを無効にするか遅らせる予定です。vimrcで読み取り専用モード(-R)で実行されたかどうかを確認するには

:argsおよびargv()すべてのコマンドラインフラグではなく、編集したいファイルのみが表示されます。

チェックするとif &readonlyがほとんど動作します。私は、このお持ちの場合:

if &readonly 
    echo "read only" 
else 
    echo "not read only" 
endif 

をそれから私はread onlyを取得し、私はviewまたはvim -Rを実行するときにエコーが、私はview ~/.vimrcまたはvim -R ~/.vimrcいずれかを行う場合、私はnot read onlyを取得します。非常に奇妙な。

ありがとうございます!

+0

問題を再現することはできません。新しいファイル( 'test_readonly.vim')に' if 'を保存し、 'view -u test_readonly.vim -R〜/ .vimrc'を実行して、プラグインが干渉しないことを確認してください。 ':w!'は 'readonly'を無効にしますので、もしあなたのプラグインのどれかがそれを行うなら、それが理由です。 – Amadan

+0

@Amadan私はまったく同じことをしたが、同じ行動をまだ観察している。 'vim -u test_readonly.vim〜/ .vimrc'と' view -u test_readonly.vim〜/ .vimrc'は 'not read only'をエコーし​​ます。編集するファイルを指定しないで*同じコマンドを実行すると、それぞれ 'not read only'と' read only'が返されます。 'test_readonly.vim'はif文です。 – jmacdonagh

答えて

1

&readonlyの設定はバッファにローカルであり、バッファがロードされるまで設定されません。あなたのvimrcファイルは、の前に解析され、のバッファがロードされます。

vim -o /etc/passwd ~/readableと入力するとどうなるか考えてみましょう。 1つのバッファは読み込み専用で、もう1つのバッファは読み込まれません。この設定をオンまたはオフにする必要がありますか?

だから、バッファにファイルを読み込んだ後に実行されるBufReadPost自動コマンド、にフックする必要があります:期待される結果を与える必要があり、どの

autocmd BufReadPost * 
    \ if &readonly 
    \| echo "read only" 
    \| else 
    \| echo "not read only" 
    \| endif 

バッファがロードされるたびにが実行されることに注意してください。一度だけ表示したい場合は、この自動コマンドが実行されたときにこれを削除する必要があります。これは、自動コマンドグループで行うことができます。 autocommand! <group_name>は、グループ内のすべての自動コマンドを削除します。

augroup readonly 
    autocmd! 
    autocmd BufReadPost * 
     \ if &readonly 
     \| echom "read only" 
     \| else 
     \| echom "not read only" 
     \| endif 
     \| autocmd! readonly 
augroup end 
+0

これは完璧な意味合いです。私は 'readonly'がバッファローカルであると理解していますが、' .vimrc'がロードされているときに特別な意味があることを期待していました。私は現在あなたの答えを[this](https://github.com/junegunn/vim-plug/wiki/faq#loading-plugins-manually)とマージしていますが、いくつかの困難を抱えています。私はそれと一緒に遊んでいきます。ありがとう! – jmacdonagh

関連する問題