By default, the Neovim plugin for GitHub Copilot uses the tab key to accept suggestions while in insert mode.

I mapped this to hitting and holding the option key and then the enter key by adding the following lines to a copilot.lua file and requiring it in my init.lua set-up:

-- Use Option + Enter to accept GitHub Copilot suggestions
-- C-CR did not work
vim.api.nvim_set_keymap('i', '<M-CR>', 'copilot#Accept("<CR>")', { expr=true, noremap = true, silent = true })
vim.g.copilot_no_tab_map = true

Originally, I attempted to do the same thing with the control and enter keys, but this didn’t work for reasons that I’m not entirely clear on. Changing <C-CR> to <M-CR> worked, and I moved on.

Using the tab key for Copilot conflicted with my use of nvim-cmp.

I first used :help Copilot for help with remapping, and found:

MAPS                                            *copilot-maps*

Copilot.vim uses <Tab> to accept the current suggestion.  If you have an
existing <Tab> map, that will be used as the fallback when no suggestion is

If you'd rather use a key that isn't <Tab>, define an <expr> map that calls
copilot#Accept().  Here's an example with CTRL-J:
        imap <silent><script><expr> <C-J> copilot#Accept("\<CR>")
        let g:copilot_no_tab_map = v:true
The argument to copilot#Accept() is the fallback for when no suggestion is
displayed.  In this example, a regular carriage return is used.  If no
fallback is desired, use an argument of "" (an empty string).