From 64d19effcc7aa1db2f134130484aa68cddd6ecd6 Mon Sep 17 00:00:00 2001 From: "jakob.stendahl" Date: Thu, 30 Jun 2022 13:31:26 +0200 Subject: neovim --- Common/nvim/lua/basic.lua | 239 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 Common/nvim/lua/basic.lua (limited to 'Common/nvim/lua/basic.lua') diff --git a/Common/nvim/lua/basic.lua b/Common/nvim/lua/basic.lua new file mode 100644 index 0000000..16e9a62 --- /dev/null +++ b/Common/nvim/lua/basic.lua @@ -0,0 +1,239 @@ +--[[ +General +--]] + +-- Lines of history +vim.opt.history = 500 +-- Line numbers +vim.opt.nu = true + +-- Autoread when file is changed outside vim +vim.opt.autoread = true + +-- enable filetype plugins +vim.cmd [[ + filetype plugin on + filetype indent on +]] + +-- Use a mapleader +--vim.opt.mapleader = "," +vim.g.mapleader = "," + +-- Fast saving +map('n', 'w', ':w!', silentnoremap) + +-- Convenient sudo saving of file +vim.api.nvim_create_user_command( + 'W', 'w !sudo tee % > /dev/null', + {bang=true, desc='Save file using sudo'} +) + +--[[ +VIM User interface +--]] + +-- Set 7 lines to the cursor - when moving vertically using j/k +vim.opt.so = 7 + +-- set WildMenu +vim.opt.wildmenu = true + +-- Ignore compiled files +vim.opt.wildignore = '*.o,*~,*.pyc' +vim.opt.wildignore:append('*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store') + +-- Always show current position +vim.opt.ruler = true + +-- Hide buffers when they are abandoned +vim.opt.hid = true + +-- Make backspace function normally +vim.opt.backspace = 'eol,start,indent' +vim.opt.whichwrap:append('<,>,h,l') + +-- Ignore case when searching +vim.opt.ignorecase = true + +-- Be smart about cases when searching +-- If search has uppercases, then we want to respect case +vim.opt.smartcase = true + +-- Highlight search results +vim.opt.hlsearch = true + +-- Make search act like search in modern browsers +vim.opt.incsearch = true + +-- Turn on "magic" for regular expressions +vim.opt.magic = true + +-- Show matching brackets when cursor is over one +vim.opt.showmatch = true +vim.opt.mat = 2 + +-- Turn off annoying bells aon errors +--vim.opt.noerrorbells = false +--vim.opt.novisualbell = false +--vim.opt.t_vb = '' +--vim.opt.tm = 500 + +-- Add extra margin to the left (makes changing margins less annoying +vim.opt.foldcolumn = '1' + +-- Show leader commands +vim.opt.showcmd = true + +-- Show colour column +vim.opt.colorcolumn = '80,120' + +-- => Colors and Fonts + +-- Enable syntac highlighting +vim.opt.syntax = 'enable' + +-- Set utf8 as standard encoding +vim.opt.encoding = 'utf8' + +-- Use Unix as the standard file type +vim.opt.ffs = 'unix,dos,mac' + +--[[ +Files, backups and undo +--]] +vim.opt.swapfile = false + +--[[ +Text, tab and indent related +--]] + +-- Use spaces instead of tabs +vim.opt.expandtab = true + +-- Be smart when using tabs +vim.opt.smarttab = true + +-- 1 tab is 4 spaces +vim.opt.shiftwidth = 4 +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 + +-- Linebreak on 500 ch +vim.opt.lbr = true +vim.opt.tw = 500 + +-- Auto indent +vim.opt.ai = true +-- Smart indent +vim.opt.si = true +-- Wrap lines +vim.opt.wrap = true + +--[[ +Visual mode related +--]] +map('v', ' *', ':call VisualSelection("","")/=@/', silentnoremap) +map('v', ' #', ':call VisualSelection("","")?=@/', silentnoremap) + +--[[ +Moving around, tabs, windows and buffers +--]] +-- Disable highlight when is pressed +map('n', '', ':noh', silentnoremap) + +-- Smart way to move between windows +map('n', '', 'j', silentnoremap) +map('n', '', 'k', silentnoremap) +map('n', '', 'h', silentnoremap) +map('n', '', 'l', silentnoremap) + +-- Close current buffer +map('n', 'bd', ':Bclose:tabclosegT', silentnoremap) +-- Close all buffers +map('n', 'ba', ':bufdo bd', silentnoremap) +-- Navigate buffers +map('n', 'l', ':bnext', silentnoremap) +map('n', 'h', ':bprevious', silentnoremap) + +-- Tab commands +map('n', 'tn', ':tabnew', silentnoremap) +map('n', 'to', ':tabonly', silentnoremap) +map('n', 'tc', ':tabclose', silentnoremap) +map('n', 'tm', ':tabmove', silentnoremap) +map('n', 't', ':tabnext', silentnoremap) + +-- Switch CWD to directory of the open buffer +map('n', 'cd', ':cd %:p:h:pwd 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif +]] + +-- Make mouse work nice with tmux +vim.opt.mouse = 'a' + +--[[ +Status Line +--]] + +-- Always show status line +vim.opt.laststatus = 2 + +--[[ +Mappings +--]] + +-- Move a line of text using ALT+[jk] +map('n', '', 'mz:m+`z', silentnoremap) +map('n', '', 'mz:m-2`z', silentnoremap) +map('v', '', ":m'>+`mzgv`yo`z", silentnoremap) +map('v', '', ":m'<-2`>my`', '', silentnoremap) + map('n', '', '', silentnoremap) + map('v', '', '', silentnoremap) + map('v', '', '', silentnoremap) +end + +-- Delete trailing whitespace on save +vim.api.nvim_create_autocmd("BufWritePre", { + pattern = { "*" }, + command = [[%s/\s\+$//e]] +}) + +--[[ +Misc +--]] + +-- Scribble buffer +map('n', 'q', ':e ~/buffer', silentnoremap) + +-- Toggle paste mode +map('n', 'pp', ':setlocal paste!', silentnoremap) + +-- Send file-title to tmux +vim.opt.titlestring = [[%f %h%m%r%w%{v:progname} (%{tabpagenr()} of %{tabpagenr('$')}})]] +vim.opt.title = true + +-- Toggle displaying special characters +vim.keymap.set('n', '', ToggleListChars, silentnoremap) + +-- Load and save session +map('n', 'sm', ':mksession! vim_session.vim', silentnoremap) +map('n', 'sl', ':source vim_session.vim', silentnoremap) + +-- Dont't close window when deleting buffer +--vim.api.nvim_create_user_command("Bclose", +-- "BufcloseCloseIt()", +-- {bang = true} +--) -- cgit v1.2.3