我想写一个命令,这个命令会有这样的格式:
- [range]MyCMD[!] [count] [oneArg] [flags]
要么
- [range]MyCMD[!] [oneArg] [count] [flags]
类似于
- :[range]P[rint] [count] [flags]
要么
- :[range]d[elete] [x] {count}
MyCMD命令最终会调用一个函数来完成一些工作.我写了这一行(不会起作用)
- command! -nargs=+ -range -bang -count=0 MyCMD <line1>,<line2>call MyFUNC(<q-args>,"<bang>","<count>",.... ..)
这里的问题是,如何处理这些参数:
>问题1我读到了关于帮助的问题,-range和-count不能同时使用,但我需要它们.我还看了一些vim命令,比如:delete,:print,当我们使用这些命令时,我们可以给出范围和计数.另外,如果{count}或[count]可用,我发现vim doc有两个相同命令的条目.喜欢:
- :[range]d[elete] [x]
- :[range]d[elete] [x] {count}
要么
- :[range]p[rint] [flags]
- :[range]p[rint] {count} [flags]
这是为什么?为什么不只是[计数]? (这将是另一个小问题)
>问题2来自我的设计,所有这些参数都是可选的,它们都有默认值(参见下表).如何将这些参数传递给函数(我检查了< q-args>和< f-args>),我如何区分哪个用户输入是哪个参数?例如用户给出
:MyCMD 5克
- 5 is count? or arg?
- g is arg or flag?
- or '5 g' is arg?
这是args的默认值:
- argName | Default value | description
- -------------------------------------
- range | current line | this could be get by function xxx ( ) range
- count | 0 | this could be get by <count>
- bang | "" | this is easy too,with <bang>
- arg | " " | this argument could have space
- flags | "" | no space allowed for flags
- -------------------------------------
谢谢.