如何在AutoCompleteTextView中实现类似PyCharm的括号自动补全
括号自动补全实现方案(和PyCharm效果一致)
核心实现逻辑(自定义编辑器/输入组件场景)
- 监听键盘输入事件,提前判定当前输入字符是否属于左括号集合,常见可补全的左符号包括
(、[、{、"、'、` - 匹配到左符号输入后,先阻止默认输入行为,依次插入对应左符号、匹配的右符号
- 调用编辑器光标控制接口,将光标位置回退1位,定位到左右两个符号中间即可
- 可选优化:如果输入左括号时已经选中了一段文本,直接在选中内容的首尾包裹左右括号,不需要调整光标到中间,这个逻辑和PyCharm默认行为一致
常用编辑器配置方法(直接启用同款效果)
VS Code
- 打开设置页面,搜索
autoClosingBrackets,将值设置为always即可,默认状态下VS Code已经开启该配置,和PyCharm效果完全匹配 - 如需开启引号自动补全,搜索
autoClosingQuotes,同样设置为always
Vim/Neovim
- 直接安装
auto-pairs插件,安装完成后默认启用PyCharm同款括号补全效果,无需额外配置
Sublime Text
- 自带括号自动补全功能,默认开启,如未生效可以在用户设置中添加
"auto_match_enabled": true
效果示例
输入左双引号后最终呈现效果如下,|代表光标位置:
print("|")
内容的提问来源于stack exchange,提问作者lamine ml
相关产品推荐
相关产品推荐

