Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问 snippet 填完后如何再自动删除一些多余的东西? #40

Open
wz520 opened this issue Dec 1, 2013 · 6 comments
Open

Comments

@wz520
Copy link

wz520 commented Dec 1, 2013

感谢作者开发了这么强大的插件~
帮助好像只有英文,看起来很累,就直接来问了^^

我在试着写 AutoHotkey 的 snippet ,AutoHotkey 里有这么一条命令:

InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]

我希望如果我只填了可选参数里前面几个,能自动删除后面未填选项的逗号,请问该怎么写 snippet?

我写了一个简单的,不会有多余的空格,但还是不完美,填的时候跳过一个可选参数后不能临时改变主意再填个参数,否则参数意义就不同了。

InputBox, `OutputVar^`, `Title?^`, `Prompt?^`, `HIDE?^`, `Width?^`, `Height?^`, `X?^`, `Y?^`, `Font?^`, `Timeout?^`, `Default?^

如果我这么写的话:

InputBox, `OutputVar^, `Title?^, `Prompt?^, `HIDE?^, `Width?^, `Height?^, `X?^, `Y?^, `Font?^, `Timeout?^, `Default?^

这样可以解决上面的问题,但是我至少要把 Default 参数填上,否则尾部就会有多余的逗号。尽管语法允许,但是不好看……求破……

@drmingdrmer
Copy link
Owner

不太明确你的问题.什么是'临时改变主意,再填1个'? 能给我个例子吗? 你期待要实现的效果.

2013/12/1 wz520 [email protected]

感谢作者开发了这么强大的插件~
帮助好像只有英文,看起来很累,就直接来问了^^

我在试着写 AutoHotkey 的 snippet ,AutoHotkey 里有这么一条命令:

InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font,
Timeout, Default]

我希望如果我只填了可选参数里前面几个,能自动删除后面未填选项的逗号,请问该怎么写 snippet?

我写了一个简单的,不会有多余的空格,但还是不完美,填的时候跳过一个可选参数后不能临时改变主意再填个参数,否则参数意义就不同了。

InputBox, OutputVar^, Title?^, Prompt?^, HIDE?^, Width?^, Height?^, X?^, Y?^, Font?^, Timeout?^, `Default?^

如果我这么写的话:

InputBox, OutputVar^,Title?^, Prompt?^,HIDE?^, Width?^,Height?^, X?^,Y?^, Font?^,Timeout?^, `Default?^

这样可以解决上面的问题,但是我至少要把 Default 参数填上,否则尾部就会有多余的逗号。尽管语法允许,但是不好看……求破……


Reply to this email directly or view it on GitHubhttps://github.com//issues/40
.

要了几天饱饭就不记得西北风啥味了

@wz520
Copy link
Author

wz520 commented Dec 6, 2013

不好意思……我再说明白点吧 ><

先说一下命令的语法吧。就算没学过我想应该也看得明白的,[] 里的都是可选参数。如果想保留当中的某一个或几个参数,相应参数前面的逗号不能省;但若要省略最末尾的一个或多个参数,可以省略其前面的逗号。

我希望每次用 inputbox<C-> 开启 snippet 后,能够不必填入每一个可选参数,但是又希望删除末尾多余的逗号。

比如说,我参数只填到 Font,后面的 Timeout 和 Default 我不填了。那么按照第一个种 snippet 写法,最后两个只要按 2 次 TAB,逗号也跟着没了。而第二种写法最后按 2 次 TAB 会多出两个逗号。这种情况第一种写法很好。

但是如果我参数只填一个 OutputVar 和最后的 Default,当中的参数我全想留空,那么第一种写法,我每次按一下 Tab ,参数前的逗号也跟着没了,这样一来参数的意义就变了。当然我通过按 Delete + Tab 键解决,但是这不够快捷。第二种写法就不存在这个问题,因为按 Tab 键并不会删除参数前的逗号。

简单地说,我就是想实现这样的 snippet

  • 每次按 Tab 键都能跳到下一个参数。
  • 若用户未修改当前选中的参数,自动置空,但保留参数前的逗号。
  • 当然若用户手动修改了参数,按 Tab 键也能自动跳到下一个参数。
  • 当所有参数都用 Tab 键定位过后,能自动检查末尾是否有多余的逗号,并删除之。

@drmingdrmer
Copy link
Owner

第1,全部填写完之后做清理的功能没有办法实现。
第2,什么情况下需要预先保留逗号和空参数,到最后才清理?参数为空时不是应该当时自动清理逗号吗?

2013/12/6 wz520 [email protected]

不好意思……我再说明白点吧 ><

先说一下命令的语法吧。就算没学过我想应该也看得明白的,[]
里的都是可选参数。如果想保留当中的某一个或几个参数,相应参数前面的逗号不能省;但若要省略最末尾的一个或多个参数,可以省略其前面的逗号。

我希望每次用 inputbox 开启 snippet 后,能够不必填入每一个可选参数,但是又希望删除末尾多余的逗号。

比如说,我参数只填到 Font,后面的 Timeout 和 Default 我不填了。那么按照第一个种 snippet 写法,最后两个只要按 2 次
TAB,逗号也跟着没了。而第二种写法最后按 2 次 TAB 会多出两个逗号。这种情况第一种写法很好。

但是如果我参数只填一个 OutputVar 和最后的 Default,当中的参数我全想留空,那么第一种写法,我每次按一下 Tab
,参数前的逗号也跟着没了,这样一来参数的意义就变了。当然我通过按 Delete + Tab 键解决,但是这不够快捷。第二种写法就不存在这个问题,因为按
Tab 键并不会删除参数前的逗号。
简单地说,我就是想实现这样的 snippet

  • 每次按 Tab 键都能跳到下一个参数。
  • 若用户未修改当前选中的参数,自动置空,但保留参数前的逗号。
  • 当然若用户手动修改了参数,按 Tab 键也能自动跳到下一个参数。
  • 当所有参数都用 Tab 键定位过后,能自动检查末尾是否有多余的逗号,并删除之。


Reply to this email directly or view it on GitHubhttps://github.com//issues/40#issuecomment-29987104
.

要了几天饱饭就不记得西北风啥味了

@wz520
Copy link
Author

wz520 commented Dec 7, 2013

  • 如果中间的参数为空,逗号不可省略。
  • 如果最右边的一个或多个参数为空,逗号可以省略。

比如这几句意思是一样的

InputBox, OutputVar, Title, Prompt
InputBox, OutputVar, Title, Prompt, , , ,
InputBox, OutputVar, Title, Prompt, , , , , ,
InputBox, OutputVar, Title, Prompt,,,,,

如果 Prompt 和 Default 之间的参数都留空,就要写很多逗号,并且数量不能错。

InputBox, OutputVar, Title, Prompt, , , , , , , , ,Default

填参数时应该无法预先知道用户是否会填最后一个参数(当然可以让用户从最右边的参数开始填,但这样有违多数人的习惯),所以应该无法边填边清理。

既然无法全部填完后再做清理,那么是否有什么其他办法自动清除多余的逗号?如果没办法那就算了……

@drmingdrmer
Copy link
Owner

明白了你的意思。。这个确实有点困难。。。是否保留逗号全取决于最后1个参数是否出现。

2013/12/7 wz520 [email protected]

  • 如果中间的参数为空,逗号不可省略。
  • 如果最右边的一个或多个参数为空,逗号可以省略。

比如这几句意思是一样的

InputBox, OutputVar, Title, Prompt
InputBox, OutputVar, Title, Prompt, , , ,
InputBox, OutputVar, Title, Prompt, , , , , ,
InputBox, OutputVar, Title, Prompt,,,,,

如果 Prompt 和 Default 之间的参数都留空,就要写很多逗号,并且数量不能错。

InputBox, OutputVar, Title, Prompt, , , , , , , , ,Default

填参数时应该无法预先知道用户是否会填最后一个参数(当然可以让用户从最右边的参数开始填,但这样有违多数人的习惯),所以应该无法边填边清理。

既然无法全部填完后再做清理,那么是否有什么其他办法自动清除多余的逗号?如果没办法那就算了……


Reply to this email directly or view it on GitHubhttps://github.com//issues/40#issuecomment-30053248
.

要了几天饱饭就不记得西北风啥味了

@wz520
Copy link
Author

wz520 commented Dec 16, 2013

看来只有手动了。当不需要填写当前位置的参数时,按 delete 键删除参数提示后再按 tab,这样逗号就总能保留了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants