Skip to content

maxwell-bland/copilot-in-the-terminal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Github Copilot in the Terminal (bash)

copilot-in-the-terminal

So you got tired of AI just suggesting code edits, and now you want it to help you run code, too. Silly human, you have come to the right place. This will take five steps.

This is a hacky solution to allow for copilot suggestions to work in the terminal by treating neovim as a thin shell-around-a-shell.

Installing

I use Astro Vim, so the code snippets below may need slightly different syntax depending on your neovim setup!

  1. You will want to install and get Github Copilot working with neovim.
  2. The configuration for accepting copilot's autocomplete looks a bit like this:

In ~/.config/nvim/init.lua, set a desired keymap:

vim.api.nvim_set_keymap("!", "<C-]>", 'copilot#Accept("<CR>")', { silent = true, expr = true, noremap=true })
vim.api.nvim_set_var('copilot_assume_mapped', true)
  1. You will want to install the following three plugins (special credit to Shougo, the real legend!!!):

In ~/.config/nvim/lua/core/plugins.lua:

  ["Shougo/vimproc.vim"] = {},
  ["Shougo/vimshell.vim"] = {}, 
  ["Shougo/unite.vim"] = {},

Edit: or replace Shougo/vimshell.vim with maxwell-bland/vimshell-copilot.vim and skip step 5 below. (vimshell-copilot.vim also includes bash scripting ergonomic improvements.)

  1. Build vimproc!
cd ~/.local/share/nvim/site/pack/packer/start/vimproc.vim
make
  1. Remove the key mapping conflicts with vimshell!
vim ~/.local/share/nvim/site/pack/packer/start/vimshell.vim/autoload/vimshell/mappings.vim

and comment out (or remap) the overloaded mappings on line 155, change the following

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

to the following

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

Running

Open up a new vim session and type :VimShell. Github copilot's autocomplete will now work in your bash shell. Here's an example I came up with, where I typed in echo a random and cat, then autocompleted the rest.

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

Conclusion and a Warning

Alright, my 1337 buddy. As you know, Copilot will start learning from the commands you have executed in the current session, and the output. Don't leak anything too secret, haha. Roko's Basilisk thanks you and sees all.

About

Hack to get Github Copilot working in the terminal with bash

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published