diff options
Diffstat (limited to 'Common/nvim/lua/basic.lua')
-rw-r--r-- | Common/nvim/lua/basic.lua | 239 |
1 files changed, 239 insertions, 0 deletions
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', '<leader>w', ':w!<cr>', 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', '<silent> *', ':<C-u>call VisualSelection("","")<CR>/<C-R>=@/<CR><CR>', silentnoremap) +map('v', '<silent> #', ':<C-u>call VisualSelection("","")<CR>?<C-R>=@/<CR><CR>', silentnoremap) + +--[[ +Moving around, tabs, windows and buffers +--]] +-- Disable highlight when <leader><cr> is pressed +map('n', '<leader><cr>', ':noh<cr>', silentnoremap) + +-- Smart way to move between windows +map('n', '<C-j>', '<C-W>j', silentnoremap) +map('n', '<C-k>', '<C-W>k', silentnoremap) +map('n', '<C-h>', '<C-W>h', silentnoremap) +map('n', '<C-l>', '<C-W>l', silentnoremap) + +-- Close current buffer +map('n', '<leader>bd', ':Bclose<cr>:tabclose<cr>gT', silentnoremap) +-- Close all buffers +map('n', '<leader>ba', ':bufdo bd<cr>', silentnoremap) +-- Navigate buffers +map('n', '<leader>l', ':bnext<cr>', silentnoremap) +map('n', '<leader>h', ':bprevious<cr>', silentnoremap) + +-- Tab commands +map('n', '<leader>tn', ':tabnew<cr>', silentnoremap) +map('n', '<leader>to', ':tabonly<cr>', silentnoremap) +map('n', '<leader>tc', ':tabclose<cr>', silentnoremap) +map('n', '<leader>tm', ':tabmove', silentnoremap) +map('n', '<leader>t<leader>', ':tabnext', silentnoremap) + +-- Switch CWD to directory of the open buffer +map('n', '<leader>cd', ':cd %:p:h<cr>:pwd<cr', silentnoremap) + +-- Behaviour when switching between buffers +vim.opt.switchbuf = 'useopen,usetab,newtab' + +-- Always show tabbar +vim.opt.stal = 2 + +-- Return to last edit position when opening files (You want this!) +vim.cmd [[ + au BufReadPost * if line("'\"") > 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', '<M-j>', 'mz:m+<cr>`z', silentnoremap) +map('n', '<M-k>', 'mz:m-2<cr>`z', silentnoremap) +map('v', '<M-j>', ":m'>+<cr>`<my`>mzgv`yo`z", silentnoremap) +map('v', '<M-k>', ":m'<-2<cr>`>my`<mzgv`yo`z", silentnoremap) + +-- Move line using Command+[jk] on mac +if vim.fn.has("mac") or vim.fn.has("macunix") then + map('n', '<D-j>', '<M-j>', silentnoremap) + map('n', '<D-k>', '<M-k>', silentnoremap) + map('v', '<D-j>', '<M-j>', silentnoremap) + map('v', '<D-k>', '<M-k>', silentnoremap) +end + +-- Delete trailing whitespace on save +vim.api.nvim_create_autocmd("BufWritePre", { + pattern = { "*" }, + command = [[%s/\s\+$//e]] +}) + +--[[ +Misc +--]] + +-- Scribble buffer +map('n', '<leader>q', ':e ~/buffer<cr>', silentnoremap) + +-- Toggle paste mode +map('n', '<leader>pp', ':setlocal paste!<cr>', 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', '<leader><tab>', ToggleListChars, silentnoremap) + +-- Load and save session +map('n', '<leader>sm', ':mksession! vim_session.vim<cr>', silentnoremap) +map('n', '<leader>sl', ':source vim_session.vim<cr>', silentnoremap) + +-- Dont't close window when deleting buffer +--vim.api.nvim_create_user_command("Bclose", +-- "<SID>BufcloseCloseIt()", +-- {bang = true} +--) |