作为开发者,虽然很多人不断地在批评人工智能,但是,不知不觉中却在习惯着AI带来的便利。
编码过程中的自动补全就是其中一个方面,目前很多自动补全工具都在借助AI给出补全建议,而且效果体验非常棒。
VIM作为非常知名的编辑器、Github Copilot作为Github和OpenAI开发的AI工具,如果能将二者结合到一起,肯定又会解放一大批生产力。
今天,就来给大家介绍如何通过vim+Github Copilot打造一款体验超棒的开发工具。
我使用Astro Vim,所以下面的代码片段可能根据neovim的不同配置存在稍微不同的语法。
在~/.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)
["Shougo/vimproc.vim"] = {},
["Shougo/vimshell.vim"] = {},
["Shougo/unite.vim"] = {},
cd ~/.local/share/nvim/site/pack/packer/start/vimproc.vim
make
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)
打开一个新的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}'