我经常使用inputdialog来执行命令:
let n = confirm({msg} [, {choices} [, {default} [, {type}]]])
体育专业。搜索号码
如果n == 1 - >体育使用'。,'来搜索所有数字
如果n == 2 - >体育搜索所有指数数字
如果n == 3 - >体育搜索3位数的所有数字
等
但是使用这种方法我只能选择一个参数。
在Vim中有没有办法在inputdialog中一起选择多个参数?
答案 0 :(得分: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
由于返回的字符串可能是用户决定输入的任何内容,因此您可能希望添加一些完整性检查,表明字符串确实是整数列表。
答案 1 :(得分: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
该功能会将它们分成一个列表。