我经常使用 inputdialog 来执行命令:
let n = confirm({msg} [, {choices} [, {default} [, {type}]]])
pe search numbers
if n == 1 --> pe 用 '.,' 搜索所有数字
if n == 2 --> pe 搜索所有指数数
if n == 3 --> pe 搜索所有3位数字
等
但使用这种方法,我只能选择一个论点。
Vim 中有没有一种方法可以在输入对话框中同时选择多个参数?
您可以使用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
由于返回的字符串可以是用户决定输入的任何内容,因此您可能需要添加一些完整性检查,以确保该字符串确实是整数列表。
一种变通方法,使用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
该函数会将它们拆分为一个列表。