My setup is like this:
In init.lua
:
if vim.g.vscode then
require "vscode_keymaps"
require "options"
else
... my normal neovim config
then in vscode_keymaps
define your vscode/cursor stuff. For example:
local keymap = vim.keymap.set
local opts = {
noremap = true,
silent = true
}
-- remap leader key
keymap("n", "<Space>", "", opts)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- general keymaps
keymap({"n", "v"}, "<leader>t", "<cmd>lua require('vscode').action('workbench.action.terminal.toggleTerminal')<CR>")
keymap({"n", "v"}, "<leader>b", "<cmd>lua require('vscode').action('editor.debug.action.toggleBreakpoint')<CR>")
keymap({"n", "v"}, "<leader>d", "<cmd>lua require('vscode').action('editor.action.showHover')<CR>")
keymap({"n", "v"}, "<leader>a", "<cmd>lua require('vscode').action('editor.action.quickFix')<CR>")
keymap({"n", "v"}, "<leader>sp", "<cmd>lua require('vscode').action('workbench.actions.view.problems')<CR>")
keymap({"n", "v"}, "<leader>cn", "<cmd>lua require('vscode').action('notifications.clearAll')<CR>")
keymap({"n", "v"}, "<leader>ff", "<cmd>lua require('vscode').action('workbench.action.quickOpen')<CR>")
keymap({"n", "v"}, "<leader>cp", "<cmd>lua require('vscode').action('workbench.action.showCommands')<CR>")
keymap({"n", "v"}, "<leader>pr", "<cmd>lua require('vscode').action('code-runner.run')<CR>")
keymap({"n", "v"}, "<leader>fd", "<cmd>lua require('vscode').action('editor.action.formatDocument')<CR>")
Most important in my setup are they autocmdās. See my options.lua
where I let the editor return from Insert mode to Normal mode after a timeout.
vim.api.nvim_create_autocmd("InsertEnter", {
callback = function()
if is_normal_buffer() then
vim.b.updaterestore = vim.opt.updatetime:get()
vim.opt.updatetime = 10000
end
end
})
vim.api.nvim_create_autocmd("InsertLeave", {
callback = function()
if is_normal_buffer() and vim.b.updaterestore then
vim.opt.updatetime = vim.b.updaterestore
vim.b.updaterestore = nil
end
end
})
Hope this helps