luozhiya / fittencode.nvim

Fitten Code AI Programming Assistant for Neovim
84 stars 9 forks source link

基于lazyvim,安装fitten后,Tab键无法补全 #103

Open htx1020 opened 1 month ago

htx1020 commented 1 month ago

基于lazyvim,安装fitten后,Tab键无法补全。 不知道是不是跟lazy自带的补全冲突了。 方便的话,指导一下。目前使用其他快捷键替代,也可正常使用

luozhiya commented 1 month ago

@htx1020

您试一下这个命令,看看 Tab 映射情况

verbose imap <tab>

正常的话,应该是如下输出

:verbose imap <tab>
 i  <Tab>       * <Lua 111: E:/DataCenter/onWorking/fittencode.nvim/lua/fittencode/engines/inline/init.lua:630>
                  Last set from Lua (run Nvim with -V1 for more details)     
htx1020 commented 1 month ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

mochouaaaaa commented 1 month ago

应该可以使用has_suggestions这个api

code = require("...")
vim.keymap.set("i", "<Tab>", function()
      if code.has_suggestions() then
          autopairs.disable()
          code. accept_line()
          autopairs.enable()
      else
          vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Tab>", true, false, true), "n", false)
      end
  end, { silent = true, desc = "code accept" })

这是一个没有经过测试的demo,建议将tab设置成这样,这样的话不会去干扰CMP的TAB设置

htx1020 commented 1 month ago

应该可以使用has_suggestions这个api

code = require("...")
vim.keymap.set("i", "<Tab>", function()
      if code.has_suggestions() then
          autopairs.disable()
          code. accept_line()
          autopairs.enable()
      else
          vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Tab>", true, false, true), "n", false)
      end
  end, { silent = true, desc = "code accept" })

这是一个没有经过测试的demo,建议将tab设置成这样,这样的话不会去干扰CMP的TAB设置

fitten的插件随时都会提示,所以替代传统的补全是没问题的。 补全跟候选项不干扰

AllenWu233 commented 1 week ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

想请教一下大佬,具体要改哪些配置?

mydsyc commented 1 week ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

想请教一下大佬,具体要改哪些配置?

前面讨论的就是lazyVim的默认绑定了Tab键行为,导致和fittencode的Tab行为冲突了。 lazyVim默认的Tab,Shif+Tab 行为是snippet提示词间的跳转, 目前要使用fittencode的tab补全,不用lazyVim的Tab话可以关掉,但最终还是看下作者后期怎么做下兼容吧。 可以暂时修改lazyvim配置,相关配置如下: ~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/coding.lua { "<Tab>", function() return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>" end, expr = true, silent = true, mode = { "i", "s" }, },

AllenWu233 commented 5 days ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

想请教一下大佬,具体要改哪些配置?

前面讨论的就是lazyVim的默认绑定了Tab键行为,导致和fittencode的Tab行为冲突了。 lazyVim默认的Tab,Shif+Tab 行为是snippet提示词间的跳转, 目前要使用fittencode的tab补全,不用lazyVim的Tab话可以关掉,但最终还是看下作者后期怎么做下兼容吧。 可以暂时修改lazyvim配置,相关配置如下: ~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/coding.lua { "<Tab>", function() return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>" end, expr = true, silent = true, mode = { "i", "s" }, },

谢谢大佬!此前我修改了nvim-cmp的键位,即VS Code式的Tab补全。把大佬提到的那部分代码注释掉后,Tab补全既可用于nvim-cmp,又可用于fittencode.nvim,符合我的期望

AllenWu233 commented 4 days ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

想请教一下大佬,具体要改哪些配置?

前面讨论的就是lazyVim的默认绑定了Tab键行为,导致和fittencode的Tab行为冲突了。 lazyVim默认的Tab,Shif+Tab 行为是snippet提示词间的跳转, 目前要使用fittencode的tab补全,不用lazyVim的Tab话可以关掉,但最终还是看下作者后期怎么做下兼容吧。 可以暂时修改lazyvim配置,相关配置如下: ~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/coding.lua { "<Tab>", function() return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>" end, expr = true, silent = true, mode = { "i", "s" }, },

谢谢大佬!此前我修改了nvim-cmp的键位,即VS Code式的Tab补全。把大佬提到的那部分代码注释掉后,Tab补全既可用于nvim-cmp,又可用于fittencode.nvim,符合我的期望

不过这样就不能更新lazyvim了,会提示修改了上述文件

htx1020 commented 3 days ago

Lazyvim对Tab键,也有配置,故而造成冲突,把Lazyvim的Tab键定义关闭后,fitten Tab键就能正常工作。非常感谢!

想请教一下大佬,具体要改哪些配置?

前面讨论的就是lazyVim的默认绑定了Tab键行为,导致和fittencode的Tab行为冲突了。 lazyVim默认的Tab,Shif+Tab 行为是snippet提示词间的跳转, 目前要使用fittencode的tab补全,不用lazyVim的Tab话可以关掉,但最终还是看下作者后期怎么做下兼容吧。 可以暂时修改lazyvim配置,相关配置如下: ~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/coding.lua { "<Tab>", function() return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>" end, expr = true, silent = true, mode = { "i", "s" }, },

谢谢大佬!此前我修改了nvim-cmp的键位,即VS Code式的Tab补全。把大佬提到的那部分代码注释掉后,Tab补全既可用于nvim-cmp,又可用于fittencode.nvim,符合我的期望

不过这样就不能更新lazyvim了,会提示修改了上述文件

最好修改用于配置lua文件,不要改~/.local/share/nvim/lazy/

tieniu1 commented 3 days ago

我看到codeium.vim 也没有做兼容,他们在readme中提供了一些按键映射。

    -- Change '<C-g>' here to any keycode you like.
    vim.keymap.set('i', '<C-g>', function () return vim.fn['codeium#Accept']() end, { expr = true, silent = true })
    vim.keymap.set('i', '<c-;>', function() return vim.fn['codeium#CycleCompletions'](1) end, { expr = true, silent = true })
    vim.keymap.set('i', '<c-,>', function() return vim.fn['codeium#CycleCompletions'](-1) end, { expr = true, silent = true })
    vim.keymap.set('i', '<c-x>', function() return vim.fn['codeium#Clear']() end, { expr = true, silent = true })