解决vscode下vim和Tabnine的补全bug
上一章 none
前言
本文介绍vscode下vim和Tabnine的补全bug(光标变为两个,以及模式变为visual)。
一、BUG描述
官方的BUG描述以及解决方式可以参考github下的issue。
二、解决方案
1.官方解决方案(测试行不通)
官方的解决方案为:
第一步、下载安装vscode扩展multi-command(官方的这个插件没有图标,图标是我自己后面加的,修改的方式可以参考我这篇文章vscode修改本地插件图标)
第二步、按CTRL + shift + P,打开输入栏,输入keyboard shortcut,选择下面这条,打开keybind.json(选择带JSON的)。
第三步、将原本的tab功能取消,改为新的功能,设置如下。
{
"key": "tab",
"command": "-tabnine.accept-inline-suggestion",
"when": "tabnine.in-inline-suggestions && tabnine.inline-suggestion:enabled || tabnine.in-inline-suggestions && tabnine.snippet-suggestion:enabled"
},
{
"key": "tab",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"toggleVim",
"tabnine.accept-inline-suggestion",
"toggleVim",
"extension.vim_insert",
],
"interval": 50,
},
"when": "vim.active && tabnine.in-inline-suggestions && tabnine.inline-suggestion:enabled || vim.active && tabnine.in-inline-suggestions && tabnine.snippet-suggestion:enabled"
},
tip:完成这几步,我发现依旧不行,通过几次测试发现了这个触发条件不对。
官方的是需要配置这个选项,但是当前版本的Tabnine已经找不到这个选项了,所以触发不了配置文件中when的条件。
2.修改方案
需要修改第三步配置的JSON文本,将其修改为以下配置:
// 为了解决vim在insert模式下,使用tabnine补全出现进入VISUAL模式的bug
{
"key": "tab",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"toggleVim",
"tabnine.tab-override",
"toggleVim",
"extension.vim_insert",
],
//如果出现光标定位不准,可以修改下面的时间间隔
"interval": 20,
},
"when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && tabnine.tab-override && textInputFocus"
},
{
"key": "tab",
"command": "-tabnine.tab-override",
"when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && tabnine.tab-override && textInputFocus"
},
主要修改了when的判断条件以及command指令
"command": "tabnine.tab-override"
。
参考链接
1、解决vscode下 vim + tabnine inline completions不兼容tab键的问题
2、https://github.com/codota/TabNine/issues/
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_18400621/article/details/128934124