--[[ Copyright 2023 Oscar Wallberg Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ]] local opts = { remap = false, silent = true, } local opts_expr = { remap = false, silent = true, expr = true, } --- Tab mappings --- -- vim.keymap.set('n', "tn", ":tabnew NvimTreeOpen", opts) vim.keymap.set("n", "tn", ":tabnew", opts) vim.keymap.set("n", "tq", ":tabclose", opts) -- switch tabs with Ctrl+PgUp/Ctrl+PgDwn (default vim mapping) --- Window mappings --- vim.keymap.set("n", "", ":wincmd h", opts) vim.keymap.set("n", "", ":wincmd j", opts) vim.keymap.set("n", "", ":wincmd k", opts) vim.keymap.set("n", "", ":wincmd l", opts) -- Open new window in horizontal split vim.keymap.set("n", "h", ":new", opts) -- Open new window in vertical split vim.keymap.set("n", "v", ":vnew", opts) -- Open new window in horizontal split at bottom vim.keymap.set("n", "", ":bo new", opts) -- Close buffer and window vim.keymap.set("n", "q", ":bd", opts) --- Buffer mappings --- -- Navigate up/down half a screen vim.keymap.set({ "n", "v", }, "", "", opts) vim.keymap.set({ "n", "v", }, "", "", opts) -- Center cursorline vim.keymap.set("n", "", "zz", opts) -- Save buffer vim.keymap.set("n", "", ":w", opts) -- Cycle buffers vim.keymap.set("n", "", ":BufferLineCycleNext", opts) vim.keymap.set("n", "", ":BufferLineCyclePrev", opts) --- General mappings --- -- yank/put using named register vim.keymap.set("n", "y", '"0y', opts) vim.keymap.set("v", "y", '"0y', opts) vim.keymap.set("n", "p", '"0p', opts) vim.keymap.set("v", "p", '"0p', opts) -- Allow exiting insert mode in terminal by hitting vim.keymap.set("t", "", "", opts) -- Navigate forward/backwards vim.keymap.set("n", "", "", opts) vim.keymap.set("n", "", "", opts) -- Use :diffput/get instead of normal one to allow staging visual selection vim.keymap.set("n", "dp", "&diff ? ':diffput' : 'dp'", opts_expr) vim.keymap.set("v", "dp", "&diff ? ':diffput' : 'dp'", opts_expr) vim.keymap.set("n", "do", "&diff ? ':diffget' : 'do'", opts_expr) vim.keymap.set("v", "do", "&diff ? ':diffget' : 'do'", opts_expr) -- Remove default mappings vim.keymap.set("", "", "") vim.keymap.set("", "q", "")