[neovim] Give key bindings a little love; add GUI bindings for neovide

- Clean up the init interface. Move all the init methods into a single
  init_all() call.
- Add two keybindings for <M-j> and <M-k> to move by soft-wrapped lines in
  Normal mode
- Add a few key bindings for the usual shortcuts for cut/copy/paste when in GUI
  mode. In vim, D is the character that represents the Super/Apple key. So,
  <D-x>, <D-c>, and <D-v> now do what you'd expect.
This commit is contained in:
Eryn Wells 2025-06-03 13:16:35 -07:00
parent 31215aadbf
commit 534d9a102b
3 changed files with 38 additions and 9 deletions

View file

@ -56,10 +56,7 @@ require 'treesitter'
require 'lsp'
local keys = require 'keys'
keys.init_key_opts()
keys.init_window_key_mappings()
keys.init_diagnostic_key_mappings()
keys.init_telescope_mappings()
keys.init()
local gui = require 'gui'
gui.init()

View file

@ -5,10 +5,13 @@ local function _init_neovide()
return
end
-- No use for these animations.
vim.g.neovide_cursor_animation_length = 0
vim.g.neovide_position_animation_length = 0
vim.g.neovide_scroll_animation_length = 0
vim.g.neovide_input_macos_option_key_is_meta = "both"
vim.cmd [[ colorscheme lunaperche ]]
end

View file

@ -2,10 +2,33 @@
local map = vim.keymap.set
local function init_key_opts()
local function init_key_options()
vim.g.mapleader = ","
end
local function navigation_mappings()
local options = { noremap = true }
-- Navigate by soft-wrapped lines using Alt/Option/Meta + jk
map({'n', 'v'}, '<M-k>', 'gk', options)
map({'n', 'v'}, '<M-j>', 'gj', options)
end
local function clipboard_mappings()
if not vim.fn.has('gui_running') then
return
end
local options = { noremap = true }
-- Copy to the system clipboard
map('v', '<D-c>', '"+y', options)
-- Cut to the system clipboard
map('v', '<D-x>', '"+x', options)
-- Paste from the system clipboard
map({'i', 'v'}, '<D-v>', '"+p', options)
end
local function window_key_mappings()
local options = { silent = true }
@ -70,10 +93,16 @@ local function telescope_mappings()
map('n', '<leader>fh', builtin.help_tags, { desc = 'Telescope help tags' })
end
local function init_all_global_keybindings()
init_key_options()
clipboard_mappings()
window_key_mappings()
navigation_mappings()
diagnostic_mappings()
telescope_mappings()
end
return {
init_key_opts = init_key_opts,
init_window_key_mappings = window_key_mappings,
init_diagnostic_key_mappings = diagnostic_mappings,
init = init_all_global_keybindings,
init_lsp_key_mappings = local_lsp_mappings,
init_telescope_mappings = telescope_mappings,
}