2

私はよくinputdialogを使用して、以下を使用してコマンドを実行します。

  let n = confirm({msg} [, {choices} [, {default} [, {type}]]])

pe
はn==1の場合に数値を検索します->peは'。、'を使用してすべての数値を検索します
n ==2->peはすべての指数数値を
検索します3桁の数字
など

しかし、この方法では、引数を1つしか選択できません。

inputdialogで複数の引数を一緒に選択できるVimの方法はありますか?

4

2 に答える 2

3

を使用input()して、ユーザーに文字列の入力を求め、返されたリストを調べることができます。

let string = input( {msg}, {choices}, ... )

たとえば、ユーザーがと入力する1,2,3と、次の文字列のテキスト比較を実行できます。

if ( string =~ 1 )
    " do something
endif

if ( string =~ 2 )
    " do something
endif

if ( string =~ 3 )
    " do something
endif

より洗練されたアプローチ(たとえば、9つを超えるオプションがある場合)は、文字列をリストに分割することです。

let choice_list = split( string, ',' )

for choice in choice_list
    if choice == 1
        " do something
    endif
    if choice == 2
        " do something
    endif
    if choice == 3
        " do something
    endif
endfor

返される文字列は、ユーザーが入力することを決定したものであれば何でもかまいません。そのため、文字列が実際に整数のリストであるという健全性チェックを追加することをお勧めします。

于 2012-04-30T16:16:31.140 に答える
2

回避策、input()関数を使用して、ユーザーが複数のオプションを選択し、それらをリストに分割して処理できるようにします。例:

vimrc次の関数または同様のファイルを追加します。

func My_search()
    let my_grouped_opts = input ( "1.- Search one\n2.- Search two\n3.- Search three\n" )
    let my_list_opts = split( my_grouped_opts, '.\zs' )
    for opt in my_list_opts
        echo "Option number " opt " selected"
    endfor
endfunction

あれを呼べ:

:call My_search()

オプションが表示されます:

1.- Search one
2.- Search two
3.- Search three

次のように選択します。

23

そして、関数はそれらをリストに分割します。

于 2012-04-30T16:18:49.293 に答える