2011-09-11 3 views
2

私はpxを作成するときにtemplate-file-loader vimスクリプトを使ってテンプレートファイルを読み込みます。新しいラテックスファイル。vimでサイレント機能を静かにする

テンプレート・ファイル・ローダー・スクリプトは、私は新しいTeXファイルを編集するときにカスタムTemplateFileFunction_texを実行することができる。..

fun! TemplateFileFunc_tex() 
    let tex_templates = "$HOME/.vim/templates/tex/" 
    let choice = confirm("Which template should i load", 
       \ "&presentation\n" . 
       \ "&hd-presentation\n" . 
       \ "&paper\n" . 
       \ "hd-pape&r\n" . 
       \ "&xelatex-default\n") 
    if choice == 1 " presentation 
     execute "0r " . expand(tex_templates . "presentation.tex") 
" [...] 
endfun 

問題はサイレントで関数を呼び出すプラグインテンプレートファイル・ローダーです。

プラグインを変更せずにカスタム機能を「無垢」にする方法はありますか?

+0

私はvimでunsilent関数を見つけましたが、確認関数でどのように使用するのか分かりません。 「無垢の確認」を書いても機能しません。 – Kungi

答えて

3

confirmがサイレントモードでユーザー入力を受け取らないようにする方法はありません。しかし、あなたは代わりにgetcharを使用することができます。

let variants=['&presentation', '&hd-presentation', ...] 
echohl MoreMsg 
unsilent echo "Which template should I load\n".join(variants, "\n") 
echohl None 
let reply=getchar() 
if type(reply)==type(0) 
    let reply=nr2char(reply) 
endif 
if reply is# "\n" 
    let choice=1 
else 
    let replkeys=map(copy(variants), 'tolower(v:val[stridx(v:val, "&")+1])') 
    let choice=index(replkeys, reply)+1 
endif 
if choice==1 
    ... 
+0

ユーザー入力を受信することは問題ではありません。適切な文字を入力すると、正しいユーザー入力が得られます。 **無反応のエコー**はまさに私が欲しかったものです。ありがとうございました。私は選択の前に可能な選択をエコーすることができます。それは私のための最も簡単な方法のようです。 – Kungi

+0

@Kungi私のシステムでは、 ''(そして 'O'、しかし私はそれをテストすることができませんでした)を除く全ての入力を無視して、プロンプトを表示している間に、サイレントunsilent echo confirm(" Description \ n&choice1 \ nc&hoice2 \ n "私はこれが問題だと思った(私は今、助けを読んで、 'サイレント無垢エコー確認(" Description "、"&choice1 \ nc&hoice2 ")')を書くべきであることを認識した。最後の変形では、確認は正常に機能します。私は関数でこれをテストしていません。 – ZyX

+0

最後のものはうまくいきますが、値をエコーし​​ていないので、関数にラップする方法はありません。私はこのようなものを試してみる: '選択肢=無音の確認(...)'をすれば何も印刷されない。だから、私は「エコー」の選択肢に固執するでしょう。 choice = confirm(...) 'をします。これは確認の目的を幾分打ち負かしますが、私のために働きます:-)。 @Kungi。 – Kungi

0

これは、別のテンプレートエキスパンダーであるが、それでも、mu-templateは正しく、エンドユーザへの質問を処理します。例えば

VimL: " @file {rtp}/templates/tex.template 

VimL: " way 1: 
VimL: " instructions continued on several lines are not supported 
VimL: let s:tex_kind = CONFIRM("Which template should i load", "&presentation\n&hd-presentation\n&paper\nhd-pape&r\n&xelatex-default\n", 1) 
VimL: " include {rtp}/templates/tex/internals/presentation.template ? 
VimL: if s:tex_kind == 1 | call s:Include('presentation', 'tex/internals') | endif 
VimL: " include {rtp}/templates/tex/internals/hd-presentation.template ? 
VimL: if s:tex_kind == 2 | call s:Include('hd-presentation', 'tex/internals') | endif 
... 

VimL: " Way 2 
VimL: let s:tex_kind = WHICH("CONFIRM", "Which template should i load", "&presentation\n&hd-presentation\n&paper\nhd-pape&r\n&xelatex-default\n", 1) 
VimL: let s:tex_kind = substitute(s:tex_kind, '&', '', 'g') 
VimL: call s:Include(s:tex_kind, 'tex/internals') 
関連する問題