From 6bbd9321385e3a4aa7779c4447448ecb77037705 Mon Sep 17 00:00:00 2001 From: D4VID Date: Fri, 15 Dec 2023 13:50:27 +0100 Subject: [PATCH] setup lualine and useful vim functions --- lvim/.config/lvim/config.lua | 19 ++++++- lvim/.config/lvim/user.vim | 98 ++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 lvim/.config/lvim/user.vim diff --git a/lvim/.config/lvim/config.lua b/lvim/.config/lvim/config.lua index 423072b..bdb0615 100644 --- a/lvim/.config/lvim/config.lua +++ b/lvim/.config/lvim/config.lua @@ -12,10 +12,27 @@ vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.mouse = "" vim.opt.clipboard = "" +vim.opt.showcmd = true +-- Setup Lualine statusline +local components = require "lvim.core.lualine.components" +lvim.builtin.lualine.sections.lualine_a = { "mode", } +lvim.builtin.lualine.sections.lualine_b = { components.branch, } +lvim.builtin.lualine.sections.lualine_c = { components.diff, components.python_env, components.filename, } +lvim.builtin.lualine.sections.lualine_x = { components.diagnostics, components.lsp, components.filetype, } +lvim.builtin.lualine.sections.lualine_y = { components.location, } +lvim.builtin.lualine.sections.lualine_z = { components.progress, } + + +-- Setup useful functions +vim.cmd('source ~/.config/lvim/user.vim') + + +-- Add extra plugins lvim.plugins = { - { "octol/vim-cpp-enhanced-highlight" } + { "octol/vim-cpp-enhanced-highlight" }, + { "zhimsel/vim-stay" } } diff --git a/lvim/.config/lvim/user.vim b/lvim/.config/lvim/user.vim new file mode 100644 index 0000000..9b50b4c --- /dev/null +++ b/lvim/.config/lvim/user.vim @@ -0,0 +1,98 @@ + + +" Shebang line: +function! Hashbang(portable, permission, RemExt) + let shells = { + \ 'awk': "awk", + \ 'sh': "bash", + \ 'hs': "runhaskell", + \ 'jl': "julia", + \ 'lua': "lua", + \ 'mak': "make", + \ 'js': "node", + \ 'm': "octave", + \ 'pl': "perl", + \ 'php': "php", + \ 'py': "python3", + \ 'r': "Rscript", + \ 'rb': "ruby", + \ 'scala': "scala", + \ 'tcl': "tclsh", + \ 'tk': "wish" + \ } + + let extension = expand("%:e") + if has_key(shells,extension) + let fileshell = shells[extension] + + if a:portable + let line = "#!/usr/bin/env " . fileshell + else + let line = "#!" . system("which " . fileshell) + endif + + 0put = line + + if a:permission + :autocmd BufWritePost * :autocmd VimLeave * :!chmod u+x % + endif + if a:RemExt + :autocmd BufWritePost * :autocmd VimLeave * :!mv % "%:p:r" + endif + endif +endfunction + + + + +" Automaticly trim all trailing whitespace on save(write) +function! StripTrailingWhitespaces() + let l = line(".") + let c = col(".") + %s/\s\+$//e + call cursor(l, c) +endfun +autocmd BufWritePre * :call StripTrailingWhitespaces() + + + +" AUTOCMD: +autocmd BufNewFile *.* :call Hashbang(1,1,0) + + + +" MUST HAVE VIM REMAPS: + +" disable spacebar (don't move forward) +nnoremap + +vnoremap p "_dP + +" Number 5: Behave Vim +nnoremap Y y$ + +" Number 4: Keeping it centered +nnoremap n nzzzv +nnoremap N Nzzzv + +" Number 3: Undo break points +inoremap . .u +inoremap , ,u +inoremap ! !u +inoremap ? ?u +inoremap _ _u +inoremap - -u +inoremap u + +" Number 2: Jumplist mutations +nnoremap k (v:count > 5 ? "m'" . v:count : "") . 'k' +nnoremap j (v:count > 5 ? "m'" . v:count : "") . 'j' + +" Number 1: Moving text +vnoremap J :m '>+1gv=gv +vnoremap K :m '<-2gv=gv +nnoremap j :m .+1== +nnoremap k :m .-2== +vnoremap < >gv +