From 662ff52b9ae4c4c38b7bd19241239e8618c0ef23 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 26 Feb 2024 19:52:34 +0000 Subject: [PATCH] Update options and keymaps --- lua/opdavies/init.lua | 10 +- lua/opdavies/keymaps.lua | 74 +++++++++++++ lua/opdavies/options.lua | 223 ++++++++++----------------------------- 3 files changed, 129 insertions(+), 178 deletions(-) create mode 100644 lua/opdavies/keymaps.lua diff --git a/lua/opdavies/init.lua b/lua/opdavies/init.lua index 386cced..c89e889 100644 --- a/lua/opdavies/init.lua +++ b/lua/opdavies/init.lua @@ -2,7 +2,7 @@ pcall("require", impatient) require "opdavies.globals" -require("opdavies.options").setup() +require "opdavies.options" require "opdavies.lsp" @@ -12,11 +12,3 @@ require "opdavies.telescope.mappings" vim.api.nvim_create_user_command("GoToFile", function() require("opdavies.telescope").git_files() end, {}) - -local imap = require("opdavies.keymap").imap -local nmap = require("opdavies.keymap").nmap -local xmap = require("opdavies.keymap").xmap - --- Quicker macro playback. -nmap { "Q", "@qj" } -xmap { "Q", ":norm @q" } diff --git a/lua/opdavies/keymaps.lua b/lua/opdavies/keymaps.lua new file mode 100644 index 0000000..c1cf6db --- /dev/null +++ b/lua/opdavies/keymaps.lua @@ -0,0 +1,74 @@ +local keymap = require "opdavies.keymap" + +local imap = keymap.imap +local nmap = keymap.nmap +local vmap = keymap.vmap +local xmap = keymap.xmap + +nmap { "so", ":call opdavies#save_and_exec()" } + +-- Format paragraphs to an 80 character line length. +nmap { "g", "gqap" } +xmap { "g", "gqa" } + +-- Make the current file executable +nmap { "x", ":!chmod +x %" } + +-- Yank from the current column to the end of the line +nmap { "Y", "yg$" } + +-- Keep things centred +nmap { "n", "nzzzv" } +nmap { "N", "Nzzzv" } + +-- Disable arrow keys +vmap { "", "" } +vmap { "", "" } +vmap { "", "" } +vmap { "", "" } + +nmap { "", ":silent !tmux neww t", { noremap = true, silent = true } } + +-- Easy insertion of a trailing ; or , from insert mode +imap { ",,", "A," } +imap { ";;", "A;" } + +nmap { "ga", "(EasyAlign)" } +xmap { "ga", "(EasyAlign)" } + +-- Focus on the current buffer. +nmap { "-", ":wincmd _:wincmd |", { noremap = true, silent = true } } + +-- Automatically resize buffers. +nmap { "=", ":wincmd =", { noremap = true, silent = true } } + +-- Move line(s) up and down. +local opts = { noremap = true, silent = true } +imap { "", ":m .+1==gi", opts } +imap { "", ":m .-2==gi", opts } +nmap { "", ":m .+1==", opts } +nmap { "", ":m .-2==", opts } +vmap { "", ":m '>+1gv=gv", opts } +vmap { "", ":m '<-2gv=gv", opts } + +-- Re-centre when navigating. +nmap { "#", "#zz", opts } +nmap { "%", "%zz", opts } +nmap { "*", "*zz", opts } +nmap { "", "zz", opts } +nmap { "", "zz", opts } +nmap { "", "zz", opts } +nmap { "", "zz", opts } +nmap { "G", "Gzz", opts } +nmap { "N", "Nzz", opts } +nmap { "gg", "ggzz", opts } +nmap { "n", "Nzz", opts } +nmap { "{", "{zz", opts } +nmap { "}", "}zz", opts } + +-- Clears hlsearch after doing a search, otherwise just does normal stuff +vim.cmd [[ nnoremap {-> v:hlsearch ? ":nohl\" : "\"}() ]] + +-- Quicker macro playback. +nmap { "Q", "@qj" } +xmap { "Q", ":norm @q" } diff --git a/lua/opdavies/options.lua b/lua/opdavies/options.lua index 86ab41d..c75a4dc 100644 --- a/lua/opdavies/options.lua +++ b/lua/opdavies/options.lua @@ -1,175 +1,60 @@ -local M = {} +vim.g.mapleader = " " +vim.g.snippets = "luasnip" -local function set_autocmd() - vim.cmd [[ - autocmd BufRead,BufNewFile *.test set filetype=php +local settings = { + autoindent = true, + backup = false, + breakindent = true, + expandtab = true, + foldlevel = 1, + foldlevelstart = 99, + foldmethod = "indent", + formatoptions = "clqjp", + hidden = false, + inccommand = "split", + linebreak = true, + list = true, + mouse = "", + number = true, + pumblend = 10, + pumheight = 10, + relativenumber = true, + scrolloff = 5, + shiftwidth = 2, + showmode = false, + signcolumn = "yes:1", + smartindent = true, + softtabstop = 2, + swapfile = false, + syntax = "on", + tabstop = 2, + termguicolors = true, + textwidth = 0, + undodir = os.getenv("HOME") .. "/.vim/undodir", + undofile = true, + updatetime = 1000, + wrap = false, +} - autocmd FileType gitcommit highlight ColorColumn ctermbg=8 - autocmd FileType gitcommit setlocal colorcolumn=50,72 - autocmd FileType gitcommit setlocal spell - autocmd FileType gitcommit setlocal textwidth=72 - ]] - - vim.api.nvim_create_autocmd("TermOpen", { - callback = function() - vim.cmd.set "filetype=term" - end, - }) +for key, value in pairs(settings) do + vim.o[key] = value end -local function set_filetypes() - vim.cmd [[ - filetype indent on - filetype on - filetype plugin on - ]] -end +vim.opt.backupdir:remove "." -- keep backups out of the current directory +vim.opt.clipboard:append "unnamedplus" +vim.opt.completeopt = { "menu", "menuone", "noinsert", "noselect" } +vim.opt.laststatus = 3 +vim.opt.listchars:append { + trail = "·", +} -local function set_key_mappings() - local map = vim.api.nvim_set_keymap +vim.cmd [[ + autocmd FileType gitcommit highlight ColorColumn ctermbg=8 + autocmd FileType gitcommit setlocal colorcolumn=50,72 + autocmd FileType gitcommit setlocal spell + autocmd FileType gitcommit setlocal textwidth=72 - local options = { noremap = true } - - map("n", "so", ":call opdavies#save_and_exec()", options) - - -- Format paragraphs to an 80 character line length. - map("n", "g", "gqap", options) - map("x", "g", "gqa", options) - - -- Make the current file executable - map("n", "x", ":!chmod +x %", options) - - -- Yank from the current column to the end of the line - map("n", "Y", "yg$", options) - - -- Keep things centred - map("n", "n", "nzzzv", options) - map("n", "N", "Nzzzv", options) - - -- Remove arrow keys - map("v", "", "", options) - map("v", "", "", options) - map("v", "", "", options) - map("v", "", "", options) - - -- Clears hlsearch after doing a search, otherwise just does normal stuff - vim.cmd [[ nnoremap {-> v:hlsearch ? ":nohl\" : "\"}() ]] - - map("n", "", ":silent !tmux neww tmux-sessioniser", { noremap = true, silent = true }) - - local keymap = require "opdavies.keymap" - local imap = keymap.imap - local nmap = keymap.nmap - local vmap = keymap.vmap - local xmap = keymap.xmap - - -- Easy insertion of a trailing ; or , from insert mode - imap { ",,", "A," } - imap { ";;", "A;" } - - nmap { "ga", "(EasyAlign)" } - xmap { "ga", "(EasyAlign)" } - - -- Focus on the current buffer. - nmap { "-", ":wincmd _:wincmd |", { noremap = true, silent = true } } - - -- Automatically resize buffers. - nmap { "=", ":wincmd =", { noremap = true, silent = true } } - - -- Move line(s) up and down. - local opts = { noremap = true, silent = true } - imap { "", ":m .+1==gi", opts } - imap { "", ":m .-2==gi", opts } - nmap { "", ":m .+1==", opts } - nmap { "", ":m .-2==", opts } - vmap { "", ":m '>+1gv=gv", opts } - vmap { "", ":m '<-2gv=gv", opts } - - -- Re-centre when navigating. - vim.keymap.set("n", "#", "#zz", opts) - vim.keymap.set("n", "%", "%zz", opts) - vim.keymap.set("n", "*", "*zz", opts) - vim.keymap.set("n", "", "zz", opts) - vim.keymap.set("n", "", "zz", opts) - vim.keymap.set("n", "", "zz", opts) - vim.keymap.set("n", "", "zz", opts) - vim.keymap.set("n", "G", "Gzz", opts) - vim.keymap.set("n", "N", "Nzz", opts) - vim.keymap.set("n", "gg", "ggzz", opts) - vim.keymap.set("n", "n", "Nzz", opts) - vim.keymap.set("n", "{", "{zz", opts) - vim.keymap.set("n", "}", "}zz", opts) -end - -local function set_highlights() - vim.cmd [[highlight Comment cterm=italic gui=italic]] -end - -local function set_vim_g() - vim.g.mapleader = " " -end - -local function set_vim_o() - local settings = { - autoindent = true, - backup = false, - breakindent = true, - conceallevel = 0, - expandtab = true, - foldlevel = 1, - foldlevelstart = 99, - foldmethod = "indent", - formatoptions = "lm", - hidden = false, - inccommand = "split", - linebreak = true, - list = true, - mouse = "n", - number = true, - pumblend = 10, - pumheight = 10, - relativenumber = true, - scrolloff = 10, - shiftwidth = 2, - showmode = false, - signcolumn = "yes:1", - smartindent = true, - softtabstop = 2, - splitbelow = false, - splitright = true, - swapfile = false, - syntax = "on", - tabstop = 2, - termguicolors = true, - textwidth = 0, - undodir = os.getenv("HOME") .. "/.vim/undodir", - undofile = true, - updatetime = 1000, - wrap = false, - } - - for key, value in pairs(settings) do - vim.o[key] = value - end - - vim.opt.backupdir:remove "." -- keep backups out of the current directory - vim.opt.clipboard:append "unnamedplus" - vim.opt.listchars:append { - trail = "·", - } - vim.opt.completeopt = { "menu", "menuone", "noselect" } - vim.opt.laststatus = 3 -end - -M.setup = function() - set_vim_g() - set_vim_o() - set_key_mappings() - set_autocmd() - set_filetypes() - set_highlights() - - vim.g.snippets = "luasnip" -end - -return M + filetype indent on + filetype on + filetype plugin on +]]