作为开发者,虽然很多人不断地在批评人工智能,但是,不知不觉中却在习惯着AI带来的便利。

编码过程中的自动补全就是其中一个方面,目前很多自动补全工具都在借助AI给出补全建议,而且效果体验非常棒。

VIM作为非常知名的编辑器、Github Copilot作为Github和OpenAI开发的AI工具,如果能将二者结合到一起,肯定又会解放一大批生产力。

今天,就来给大家介绍如何通过vim+Github Copilot打造一款体验超棒的开发工具。

1. 安装

我使用Astro Vim,所以下面的代码片段可能根据neovim的不同配置存在稍微不同的语法。

  • 安装Github Copilot
  • 配置neovim接受copilot的自动补全

在~/.config/nvim/init.lua中,设置一个所需的键盘映射:

vim.api.nvim_set_keymap("!", "<C-]>", 'copilot#Accept("<CR>")', { silent = true, expr = true, noremap=true })
vim.api.nvim_set_var('copilot_assume_mapped', true)
  • 安装下面3个插件:
 ["Shougo/vimproc.vim"] = {},
 ["Shougo/vimshell.vim"] = {}, 
 ["Shougo/unite.vim"] = {},
  • 构建vimproc
cd ~/.local/share/nvim/site/pack/packer/start/vimproc.vim
make
  • 删除与vimshell冲突的键盘映射
vim ~/.local/share/nvim/site/pack/packer/start/vimshell.vim/autoload/vimshell/mappings.vim

并在第155行注释掉(或重新映射)重载的映射,修改下面这部分内容:

inoremap <expr> <SID>(bs-ctrl-])
      \ getline('.')[col('.') - 2] ==# "\<C-]>" ? "\<BS>" : ''
imap <buffer> <C-]>               <C-]><SID>(bs-ctrl-])
imap <buffer> <CR>                <C-]><Plug>(vimshell_enter)

把这段内容修改成:

" inoremap <expr> <SID>(bs-ctrl-])
"       \ getline('.')[col('.') - 2] ==# "\<C-]>" ? "\<BS>" : ''
" imap <buffer> <C-]>               <C-]><SID>(bs-ctrl-])
imap <buffer> <CR>                <Plug>(vimshell_enter)

2. 运行

打开一个新的vim会话并输入:VimShell,Github Copilot的自动补全功能现在将在你的bash shell中工作。

下面是给出的一个例子,我输入了echo a random和cat,然后自动补全了剩下的内容:

vimshell% # echo a random number between 1 and 10
vimshell% cat /dev/urandom | od -N 1 -An -i | awk '{print $1 % 10 + 1}'

推荐阅读

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐