我想自定义VScode的自动完成行为以适应我的喜好。
具体来说:
1. 当建议列表出现时,我不希望任何建议被选中。 2. 当我按下Tab和Shift-Tab键时,我希望循环浏览建议(从而选择一个)。Esc键应取消选择的任何建议(并可以关闭建议列表,可选)。 3. 选择建议后,任何字符都应接受该建议(因此使用该建议的文本编辑我的代码)。
第2个项目通过编辑键绑定实现。
我没有找到方法来获得第1个项目的行为。
对于第3点,一个简单的方法是利用`editor.acceptSuggestionOnCommitCharacter`设置,并将所有字符用作提交字符,但我没有找到如何编辑哪些字符是提交字符。
有没有办法使用设置实现这种行为?
如果没有,是否有提供此行为的扩展?
理想情况下,我希望避免编写自己的扩展,但如果没有其他解决方案,则可能会采用这种方法。
注意:此问题与这个不同,因为我不想按Return来接受建议(除非我想接受建议并且插入新行)。
编辑:我相信这个答案可以使用上述肮脏的技巧实现第3项,我只需要为所有可能具有相同“when”条件的字符复制相同的键绑定,现在我只需要找到一种方法来获得第1项。(最好找到更好的方法来获得第3项。)
再次编辑:为了让我的问题更清晰,我记录了从vim中按下的键所产生的期望行为。
具体来说:
1. 当建议列表出现时,我不希望任何建议被选中。 2. 当我按下Tab和Shift-Tab键时,我希望循环浏览建议(从而选择一个)。Esc键应取消选择的任何建议(并可以关闭建议列表,可选)。 3. 选择建议后,任何字符都应接受该建议(因此使用该建议的文本编辑我的代码)。
第2个项目通过编辑键绑定实现。
我没有找到方法来获得第1个项目的行为。
对于第3点,一个简单的方法是利用`editor.acceptSuggestionOnCommitCharacter`设置,并将所有字符用作提交字符,但我没有找到如何编辑哪些字符是提交字符。
有没有办法使用设置实现这种行为?
如果没有,是否有提供此行为的扩展?
理想情况下,我希望避免编写自己的扩展,但如果没有其他解决方案,则可能会采用这种方法。
注意:此问题与这个不同,因为我不想按Return来接受建议(除非我想接受建议并且插入新行)。
编辑:我相信这个答案可以使用上述肮脏的技巧实现第3项,我只需要为所有可能具有相同“when”条件的字符复制相同的键绑定,现在我只需要找到一种方法来获得第1项。(最好找到更好的方法来获得第3项。)
再次编辑:为了让我的问题更清晰,我记录了从vim中按下的键所产生的期望行为。
![desired behaviour as experienced in vim](https://istack.dev59.com/R7Ark.gif)
"command": "acceptSelectedSuggestion && type"
和附加参数"args": {"text":"/"}
用于类型命令,但该命令未被接受。acceptSelectedSuggestion
和type
命令各自都能正确工作。 - Anchith Acharya