neovim:init.vim->init.lua and misc changes
This commit is contained in:
		@@ -2,53 +2,30 @@
 | 
			
		||||
{
 | 
			
		||||
  programs.neovim = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.neovim-nightly;
 | 
			
		||||
    defaultEditor = true;
 | 
			
		||||
    configure = {
 | 
			
		||||
    customRC = ''
 | 
			
		||||
      "theme
 | 
			
		||||
      let g:gruvbox_italic=1
 | 
			
		||||
      let g:gruvbox_contrast_dark="hard"
 | 
			
		||||
        let g:gruvbox_contrast_light="hard"
 | 
			
		||||
        set background=dark
 | 
			
		||||
        colorscheme gruvbox
 | 
			
		||||
        '' +
 | 
			
		||||
        builtins.readFile ./nvim/init.vim +
 | 
			
		||||
        builtins.readFile ./nvim/utils.vim +
 | 
			
		||||
	''
 | 
			
		||||
	"Floaterm
 | 
			
		||||
        let g:floaterm_keymap_toggle = '<F1>'
 | 
			
		||||
        let g:floaterm_keymap_next   = '<F2>'
 | 
			
		||||
        let g:floaterm_keymap_prev   = '<F3>'
 | 
			
		||||
        let g:floaterm_keymap_new    = '<F4>'
 | 
			
		||||
        let g:floaterm_gitcommit='floaterm'
 | 
			
		||||
        let g:floaterm_autoinsert=1
 | 
			
		||||
        let g:floaterm_width=0.8
 | 
			
		||||
        let g:floaterm_height=0.8
 | 
			
		||||
        let g:floaterm_wintitle=0
 | 
			
		||||
        let g:floaterm_shell="/usr/bin/env zsh"
 | 
			
		||||
	'' +
 | 
			
		||||
/*	''
 | 
			
		||||
	"Colorizer
 | 
			
		||||
        packadd! nvim-colorizer.lua
 | 
			
		||||
        lua require'colorizer'.setup()
 | 
			
		||||
	'' +
 | 
			
		||||
*/	''
 | 
			
		||||
	"closetag
 | 
			
		||||
        let g:closetag_filenames = "*.html,*.xhtml,*.phtml,*.js,*.erb,*.jsx"
 | 
			
		||||
        let g:closetag_xhtml_filenames = '*.xhtml,*.jsx,*.js,*.erb'
 | 
			
		||||
        let g:closetag_emptyTags_caseSensitive = 1
 | 
			
		||||
        let g:closetag_shortcut = '>'
 | 
			
		||||
        let g:closetag_close_shortcut = '<leader>>'
 | 
			
		||||
	'' +
 | 
			
		||||
	''
 | 
			
		||||
	"nerdcommenter
 | 
			
		||||
        map <C-c> <plug>NERDCommenterToggle
 | 
			
		||||
        map <C-d> <plug>NERDCommenterSexy
 | 
			
		||||
	'';
 | 
			
		||||
 | 
			
		||||
	packages.myVimPackage = with pkgs.vimPlugins; {
 | 
			
		||||
              start = [ auto-pairs vim-floaterm vim-rooter vim-polyglot gruvbox vim-closetag vim-floaterm nerdcommenter];
 | 
			
		||||
	};
 | 
			
		||||
      customRC ="lua << EOF\n" + builtins.readFile ./nvim/init.lua + "\nEOF\n";
 | 
			
		||||
      packages.myVimPackage = with pkgs.vimPlugins; {
 | 
			
		||||
        start = [
 | 
			
		||||
          nvim-colorizer-lua
 | 
			
		||||
          auto-pairs 
 | 
			
		||||
          vim-floaterm 
 | 
			
		||||
          vim-rooter
 | 
			
		||||
          vim-closetag
 | 
			
		||||
          vim-floaterm
 | 
			
		||||
          nerdcommenter
 | 
			
		||||
          vim-startify
 | 
			
		||||
          nvim-compe
 | 
			
		||||
          nvim-lspconfig
 | 
			
		||||
          barbar-nvim
 | 
			
		||||
          nvim-web-devicons
 | 
			
		||||
          vim-polyglot
 | 
			
		||||
          (gruvbox.overrideAttrs (oa: { patches = [ ./nvim/gruvbox.patch ]; }))
 | 
			
		||||
 #         (gruvbox.overrideAttrs (oa: { src = pkgs.fetchFromGitHub{} }))
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
          
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								configs/nvim/gruvbox.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								configs/nvim/gruvbox.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
--- a/colors/gruvbox.vim	2021-05-28 01:06:40.516914044 +0530
 | 
			
		||||
+++ b/colors/gruvbox.vim	2021-05-28 01:07:38.279375184 +0530
 | 
			
		||||
@@ -588,7 +588,7 @@
 | 
			
		||||
 " try, catch, throw
 | 
			
		||||
 hi! link Exception GruvboxRed
 | 
			
		||||
 " sizeof, "+", "*", etc.
 | 
			
		||||
-hi! link Operator Normal
 | 
			
		||||
+hi! link Operator GruvboxFg1
 | 
			
		||||
 " Any other keyword
 | 
			
		||||
 hi! link Keyword GruvboxRed
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										287
									
								
								configs/nvim/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								configs/nvim/init.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,287 @@
 | 
			
		||||
require'lspconfig'.rust_analyzer.setup{}
 | 
			
		||||
require'lspconfig'.tsserver.setup{}
 | 
			
		||||
require'lspconfig'.clangd.setup{}
 | 
			
		||||
require'lspconfig'.tsserver.setup{}
 | 
			
		||||
require'lspconfig'.jedi_language_server.setup{}
 | 
			
		||||
require'lspconfig'.purescriptls.setup{}
 | 
			
		||||
require'colorizer'.setup{}
 | 
			
		||||
 | 
			
		||||
local comm = vim.api.nvim_command
 | 
			
		||||
local bind = vim.api.nvim_set_keymap
 | 
			
		||||
local set = function(a) comm("set " .. a) end
 | 
			
		||||
local setvar = vim.api.nvim_set_var
 | 
			
		||||
local getvar = vim.api.nvim_get_var
 | 
			
		||||
 | 
			
		||||
function hi(hi_var, hi_value)
 | 
			
		||||
    comm("hi " .. hi_var .. " " .. hi_value)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--SETTINGS
 | 
			
		||||
 | 
			
		||||
comm("syntax enable")
 | 
			
		||||
comm("syntax sync minlines=100")
 | 
			
		||||
set("cmdheight=1")
 | 
			
		||||
set("modifiable")
 | 
			
		||||
set("cursorline")
 | 
			
		||||
set("hidden")
 | 
			
		||||
set("encoding=utf-8")
 | 
			
		||||
set("pumheight=10")
 | 
			
		||||
set("fileencoding=utf-8")
 | 
			
		||||
set("ruler")
 | 
			
		||||
set("cmdheight=1")
 | 
			
		||||
set("mouse=a")
 | 
			
		||||
set("splitbelow")
 | 
			
		||||
set("splitright")
 | 
			
		||||
set("nowrap")
 | 
			
		||||
set("conceallevel=0")
 | 
			
		||||
set("tabstop=4")
 | 
			
		||||
set("shiftwidth=4")
 | 
			
		||||
set("smarttab")
 | 
			
		||||
set("expandtab")
 | 
			
		||||
set("smartindent")
 | 
			
		||||
set("autoindent")
 | 
			
		||||
set("number")
 | 
			
		||||
set("relativenumber")
 | 
			
		||||
set("showtabline=2")
 | 
			
		||||
set("updatetime=300")
 | 
			
		||||
set("lazyredraw")
 | 
			
		||||
set("timeoutlen=100")
 | 
			
		||||
set("clipboard=unnamedplus")
 | 
			
		||||
 | 
			
		||||
--KEYBINDS
 | 
			
		||||
 | 
			
		||||
--Colemak-DH bind fuction for hjkl [mnei]) 
 | 
			
		||||
local function cdhbind(a, b) 
 | 
			
		||||
	bind('n', a:lower(),  b:lower(), { noremap = true})
 | 
			
		||||
	bind('n', a:upper(),  b:upper(), { noremap = true})
 | 
			
		||||
	bind('o', a:lower(),  b:lower(), { noremap = true})
 | 
			
		||||
	bind('o', a:upper(),  b:upper(), { noremap = true})
 | 
			
		||||
	bind('x', a:lower(),  b:lower(), { noremap = true})
 | 
			
		||||
	bind('x', a:upper(),  b:upper(), { noremap = true})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
cdhbind('m', 'h')
 | 
			
		||||
cdhbind('n', 'j')
 | 
			
		||||
cdhbind('e', 'k')
 | 
			
		||||
cdhbind('i', 'l')
 | 
			
		||||
cdhbind('h', 'i')
 | 
			
		||||
cdhbind('j', 'm')
 | 
			
		||||
cdhbind('k', 'n')
 | 
			
		||||
cdhbind('l', 'e')
 | 
			
		||||
bind('n', "<M-s>", ":w<CR>", {noremap=true})
 | 
			
		||||
bind('n', "<M-n>", ":resize -2<CR>", {noremap=true, silent=true})
 | 
			
		||||
bind('n', "<M-e>", ":resize +2<CR>", {noremap=true, silent=true})
 | 
			
		||||
bind('n', "<M-m>", ":vertical resize -2<CR>", {noremap=true, silent=true})
 | 
			
		||||
bind('n', "<M-i>", ":vertical resize +2<CR>", {noremap=true, silent=true})
 | 
			
		||||
bind('v', '<', "<gv", {noremap=true})
 | 
			
		||||
bind('v', '>', ">gv", {noremap=true})
 | 
			
		||||
bind('n', "<C-q>", "<C-w>q", {noremap=true})
 | 
			
		||||
bind('n', "<C-m>", "<C-w>h", {noremap=true})
 | 
			
		||||
bind('n', "<C-n>", "<C-w>j", {noremap=true})
 | 
			
		||||
bind('n', "<C-e>", "<C-w>k", {noremap=true})
 | 
			
		||||
bind('n', "<C-i>", "<C-w>l", {noremap=true})
 | 
			
		||||
 | 
			
		||||
--RUN AND REPL (using vim-floaterm)
 | 
			
		||||
 | 
			
		||||
function _G.CompileRun()
 | 
			
		||||
    local file = vim.fn.expand('%:p')
 | 
			
		||||
    local noext = vim.fn.expand('%:p:r')
 | 
			
		||||
    local commandMap = {
 | 
			
		||||
        ['java']      = 'java ' .. file,
 | 
			
		||||
        ['lisp']      = 'clisp ' .. file,
 | 
			
		||||
        ['python']    = 'python3 ' .. file,
 | 
			
		||||
        ['c']         = 'gcc ' .. file .. ' -o ' .. noext .. ' && ' .. noext .. ' && rm ' .. noext,
 | 
			
		||||
        ['rust']      = 'rustc ' .. file .. ' -o ' .. noext .. ' && ' .. noext .. ' && rm ' .. noext,
 | 
			
		||||
        ['cpp']       = 'g++ -std=c++17 ' .. file .. ' -o ' .. noext .. ' && ' .. noext .. ' && rm ' .. noext,
 | 
			
		||||
        ['haskell']   = 'ghc -dynamic ' .. file .. ' && ' .. noext .. ' && rm ' .. noext .. ' ' .. noext .. '.o ' .. noext .. '.hi',
 | 
			
		||||
        ['sh']        = 'sh ' .. file,
 | 
			
		||||
        ['javascript']= 'node ' .. file,
 | 
			
		||||
        ['typescript']= 'tsc ' .. file .. ' && node ' .. noext .. '.js && rm ' .. noext .. '.js'
 | 
			
		||||
    }
 | 
			
		||||
    filetype = vim.api.nvim_buf_get_option(0, "filetype")
 | 
			
		||||
    if commandMap[filetype] ~= nil then comm("FloatermNew --autoclose=0 " .. commandMap[filetype]) end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
function _G.Repl()
 | 
			
		||||
    local file = vim.fn.expand('%:p')
 | 
			
		||||
    local commandMap = {
 | 
			
		||||
        ['lisp']      = 'clisp',
 | 
			
		||||
        ['python']    = 'python3',
 | 
			
		||||
        ['haskell']   = 'ghci ' .. file,
 | 
			
		||||
        ['sh']        = 'sh',
 | 
			
		||||
        ['javascript']= 'node',
 | 
			
		||||
        ['typescript']= 'ts-node',
 | 
			
		||||
        ['nix']       = 'nix repl',
 | 
			
		||||
        ['lua']       = 'lua'
 | 
			
		||||
    }
 | 
			
		||||
    filetype = vim.api.nvim_buf_get_option(0, "filetype")
 | 
			
		||||
    if commandMap[filetype] ~= nil then comm("FloatermNew " .. commandMap[filetype]) end
 | 
			
		||||
end
 | 
			
		||||
bind('n', "<F5>", ":call v:lua.CompileRun()<CR>", {silent=true})
 | 
			
		||||
bind('n', "<F6>", ":call v:lua.Repl()<CR>", {silent=true})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
--PLUGINS CONFIG
 | 
			
		||||
 | 
			
		||||
--gruvbox
 | 
			
		||||
vim.g.gruvbox_italic=1
 | 
			
		||||
vim.g.gruvbox_contrast_dark="hard"
 | 
			
		||||
vim.g.gruvbox_contrast_light="hard"
 | 
			
		||||
set("background=dark")
 | 
			
		||||
comm("colorscheme gruvbox")
 | 
			
		||||
--floaterm
 | 
			
		||||
vim.g.floaterm_keymap_toggle = '<F1>'
 | 
			
		||||
vim.g.floaterm_keymap_next   = '<F2>'
 | 
			
		||||
vim.g.floaterm_keymap_prev   = '<F3>'
 | 
			
		||||
vim.g.floaterm_keymap_new    = '<F4>'
 | 
			
		||||
vim.g.floaterm_gitcommit='floaterm'
 | 
			
		||||
vim.g.floaterm_autoinsert=1
 | 
			
		||||
vim.g.floaterm_width=1.0
 | 
			
		||||
vim.g.floaterm_height=0.3
 | 
			
		||||
vim.g.floaterm_shell="/usr/bin/env zsh"
 | 
			
		||||
vim.g.floaterm_wintype = "split"
 | 
			
		||||
--closetag
 | 
			
		||||
vim.g.closetag_filenames = "*.html,*.xhtml,*.phtml,*.js,*.erb,*.jsx"
 | 
			
		||||
vim.g.closetag_xhtml_filenames = "*.xhtml,*.jsx,*.js,*.erb"
 | 
			
		||||
vim.g.closetag_emptyTags_caseSensitive = 1
 | 
			
		||||
vim.g.closetag_shortcut = '>'
 | 
			
		||||
--nerdcommenter
 | 
			
		||||
bind('n',"<C-c>","<plug>NERDCommenterToggle", {noremap=true, silent=true})
 | 
			
		||||
bind('n',"<C-d>","<plug>NERDCommenterSexy", {noremap=true, silent=true})
 | 
			
		||||
--barbar
 | 
			
		||||
bind('n', "<M-,>", ":BufferPrevious<CR>", {silent=true, noremap=true})
 | 
			
		||||
bind('n', "<M-.>", ":BufferNext<CR>", {silent=true, noremap=true})
 | 
			
		||||
bind('n', "<M-<>", ":BufferMovePrevious<CR>", {silent=true, noremap=true})
 | 
			
		||||
bind('n', "<M->>", ":BufferMoveNext<CR>", {silent=true, noremap=true})
 | 
			
		||||
for i = 1,8,1
 | 
			
		||||
do
 | 
			
		||||
    bind('n', string.format("<M-%d>", i), string.format(":BufferGoto %d<CR>", i), {silent=true, noremap=true})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--lsp and compe stuff i got from various places
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', {silent=true, noremap=true})
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', {silent=true, noremap=true})
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', {silent=true, noremap=true})
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', {silent=true, noremap=true})
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', {silent=true, noremap=true})
 | 
			
		||||
vim.api.nvim_buf_set_keymap(0, 'n', "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", {silent=true, noremap=true})
 | 
			
		||||
require'compe'.setup {
 | 
			
		||||
  enabled = true;
 | 
			
		||||
  autocomplete = true;
 | 
			
		||||
  debug = false;
 | 
			
		||||
  min_length = 1;
 | 
			
		||||
  preselect = 'enable';
 | 
			
		||||
  throttle_time = 80;
 | 
			
		||||
  source_timeout = 200;
 | 
			
		||||
  incomplete_delay = 400;
 | 
			
		||||
  max_abbr_width = 100;
 | 
			
		||||
  max_kind_width = 100;
 | 
			
		||||
  max_menu_width = 100;
 | 
			
		||||
  documentation = true;
 | 
			
		||||
 | 
			
		||||
  source = {
 | 
			
		||||
    path = true;
 | 
			
		||||
    buffer = true;
 | 
			
		||||
    nvim_lsp = true;
 | 
			
		||||
    calc = true;
 | 
			
		||||
    spell = true;
 | 
			
		||||
    treesitter = true;
 | 
			
		||||
    nvim_lua = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local t = function(str)
 | 
			
		||||
  return vim.api.nvim_replace_termcodes(str, true, true, true)
 | 
			
		||||
end
 | 
			
		||||
local check_back_space = function()
 | 
			
		||||
    local col = vim.fn.col('.') - 1
 | 
			
		||||
    if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
 | 
			
		||||
        return true
 | 
			
		||||
    else
 | 
			
		||||
        return false
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Use (s-)tab to:
 | 
			
		||||
--- move to prev/next item in completion menuone
 | 
			
		||||
--- jump to prev/next snippet's placeholder
 | 
			
		||||
_G.tab_complete = function()
 | 
			
		||||
  if vim.fn.pumvisible() == 1 then
 | 
			
		||||
    return t "<C-n>"
 | 
			
		||||
  elseif check_back_space() then
 | 
			
		||||
    return t "<Tab>"
 | 
			
		||||
  else
 | 
			
		||||
    return vim.fn['compe#complete']()
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
_G.s_tab_complete = function()
 | 
			
		||||
  if vim.fn.pumvisible() == 1 then
 | 
			
		||||
    return t "<C-p>"
 | 
			
		||||
  elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
 | 
			
		||||
    return t "<Plug>(vsnip-jump-prev)"
 | 
			
		||||
  else
 | 
			
		||||
    return t "<S-Tab>"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true, silent = true})
 | 
			
		||||
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true, silent = true})
 | 
			
		||||
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true, silent = true})
 | 
			
		||||
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true, silent = true})
 | 
			
		||||
 | 
			
		||||
set("shortmess+=c")
 | 
			
		||||
 | 
			
		||||
--STATUSLINE
 | 
			
		||||
 | 
			
		||||
set("noruler")
 | 
			
		||||
set("laststatus=2")
 | 
			
		||||
local function mode()
 | 
			
		||||
    local mode_map = {
 | 
			
		||||
        ['n'] = 'normal ',
 | 
			
		||||
        ['v'] = 'visual ',
 | 
			
		||||
        ['V'] = 'v·line ',
 | 
			
		||||
        [''] = 'v·block ',
 | 
			
		||||
        ['s'] = 'select ',
 | 
			
		||||
        ['S'] = 's·line ',
 | 
			
		||||
        [''] = 's·block ',
 | 
			
		||||
        ['i'] = 'insert ',
 | 
			
		||||
        ['Rv'] = 'v·replace ',
 | 
			
		||||
        ['c'] = 'command ',
 | 
			
		||||
        ['!'] = 'shell ',
 | 
			
		||||
        ['t'] = 'terminal '
 | 
			
		||||
    }
 | 
			
		||||
    local m = vim.api.nvim_get_mode().mode
 | 
			
		||||
    if mode_map[m] == nil then return m end
 | 
			
		||||
    return mode_map[m]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
hi("Light", "guibg=#fbf1c7 guifg=#1d2021")
 | 
			
		||||
hi("Dark", "guibg=#1d2021 guifg=#fbf1c7")
 | 
			
		||||
hi("Gray", "guifg=#fbf1c7 guibg=#665c54")
 | 
			
		||||
 | 
			
		||||
local function git()
 | 
			
		||||
    local branch = io.popen([[git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n']]):read("*a")
 | 
			
		||||
    return string.len(branch) > 0 and ' '.. branch or ''
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local statusline = {
 | 
			
		||||
    '%#Light# ',
 | 
			
		||||
    mode():upper() .. ' ',
 | 
			
		||||
    '%#Dark#',
 | 
			
		||||
    string.len(git()) > 0 and ' ' .. git() .. ' ' or '',
 | 
			
		||||
    '%#Gray# ',
 | 
			
		||||
    '%f ',
 | 
			
		||||
    '%#Light#',
 | 
			
		||||
    '%=',
 | 
			
		||||
    '%#Dark# ',
 | 
			
		||||
    '%y ',
 | 
			
		||||
    '%#Light# ',
 | 
			
		||||
    '%p%% ',
 | 
			
		||||
    ' ',
 | 
			
		||||
    '%l/%L ',
 | 
			
		||||
    ' ',
 | 
			
		||||
    '%c '
 | 
			
		||||
}
 | 
			
		||||
vim.o.statusline = table.concat(statusline)
 | 
			
		||||
vim.api.nvim_set_option("termguicolors", true)
 | 
			
		||||
@@ -1,129 +0,0 @@
 | 
			
		||||
"SETTINGS
 | 
			
		||||
let g:mapleader = "\<Space>"
 | 
			
		||||
syntax enable
 | 
			
		||||
set modifiable
 | 
			
		||||
set cursorline
 | 
			
		||||
set hidden
 | 
			
		||||
set nowrap
 | 
			
		||||
set encoding=utf-8
 | 
			
		||||
set pumheight=10
 | 
			
		||||
set fileencoding=utf-8
 | 
			
		||||
set ruler
 | 
			
		||||
set cmdheight=2
 | 
			
		||||
set iskeyword+=-
 | 
			
		||||
set mouse=a
 | 
			
		||||
set splitbelow
 | 
			
		||||
set splitright
 | 
			
		||||
set t_Co=256
 | 
			
		||||
set conceallevel=0
 | 
			
		||||
set tabstop=4
 | 
			
		||||
set shiftwidth=4
 | 
			
		||||
set smarttab
 | 
			
		||||
set expandtab
 | 
			
		||||
set smartindent
 | 
			
		||||
set autoindent
 | 
			
		||||
set number
 | 
			
		||||
set relativenumber
 | 
			
		||||
set background=dark
 | 
			
		||||
syntax sync minlines=100
 | 
			
		||||
set showtabline=2
 | 
			
		||||
set noshowmode
 | 
			
		||||
set nobackup
 | 
			
		||||
set nowritebackup
 | 
			
		||||
set updatetime=300
 | 
			
		||||
set lazyredraw
 | 
			
		||||
set timeoutlen=100
 | 
			
		||||
set formatoptions-=cro
 | 
			
		||||
set clipboard=unnamedplus
 | 
			
		||||
au! BufWritePost $MYVIMRC source %
 | 
			
		||||
cmap w!! w !sudo tee %
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
"MAPPINGS
 | 
			
		||||
inoremap <S-Space> <ESC>
 | 
			
		||||
nnoremap m h|xnoremap m h|onoremap m h|
 | 
			
		||||
nnoremap n j|xnoremap n j|onoremap n j|
 | 
			
		||||
nnoremap e k|xnoremap e k|onoremap e k|
 | 
			
		||||
nnoremap i l|xnoremap i l|onoremap i l|
 | 
			
		||||
nnoremap M H|xnoremap M H|onoremap M H|
 | 
			
		||||
nnoremap N J|xnoremap N J|onoremap N J|
 | 
			
		||||
nnoremap E K|xnoremap E K|onoremap E K|
 | 
			
		||||
nnoremap I L|xnoremap I L|onoremap I L|
 | 
			
		||||
nnoremap h i|xnoremap h i|onoremap h i|
 | 
			
		||||
nnoremap H I|xnoremap H I|onoremap H I|
 | 
			
		||||
nnoremap k n|xnoremap k n|onoremap k n|
 | 
			
		||||
nnoremap K N|xnoremap K N|onoremap K N|
 | 
			
		||||
nnoremap j m|xnoremap j m|onoremap j m|
 | 
			
		||||
nnoremap J M|xnoremap J M|onoremap J M|
 | 
			
		||||
nnoremap l e|xnoremap l e|onoremap l e|
 | 
			
		||||
nnoremap L E|xnoremap L E|onoremap L E|
 | 
			
		||||
nnoremap <C-s> :w<CR>
 | 
			
		||||
nnoremap <M-n> :resize -2<CR>
 | 
			
		||||
nnoremap <M-e> :resize +2<CR>
 | 
			
		||||
nnoremap <M-m> :vertical resize -2<CR>
 | 
			
		||||
nnoremap <M-i> :vertical resize +2<CR>
 | 
			
		||||
nnoremap <TAB> :bnext<CR>
 | 
			
		||||
nnoremap <S-TAB> :bprevious<CR>
 | 
			
		||||
vnoremap < <gv
 | 
			
		||||
vnoremap > >gv
 | 
			
		||||
nnoremap <C-q> :bd!<CR>
 | 
			
		||||
nnoremap <C-x> :bd#<CR>
 | 
			
		||||
tnoremap <C-q> :bd!<CR>
 | 
			
		||||
nnoremap <C-M> <C-W>h|xnoremap <C-M> <C-W>h|
 | 
			
		||||
nnoremap <C-N> <C-W>j|xnoremap <C-N> <C-W>j|
 | 
			
		||||
nnoremap <C-E> <C-W>k|xnoremap <C-E> <C-W>k|
 | 
			
		||||
nnoremap <C-I> <C-W>l|xnoremap <C-I> <C-W>l|
 | 
			
		||||
 | 
			
		||||
"STATUSLINE
 | 
			
		||||
"let right=""
 | 
			
		||||
"let left=""
 | 
			
		||||
set laststatus=2
 | 
			
		||||
set statusline=
 | 
			
		||||
set statusline+=%1*
 | 
			
		||||
set statusline+=\ %{ModeBruh()}\ 
 | 
			
		||||
set statusline+=%2*\%{GitBruh()}\ 
 | 
			
		||||
set statusline+=%3*\ %f\ 
 | 
			
		||||
set statusline+=%1*
 | 
			
		||||
set statusline+=%=
 | 
			
		||||
set statusline+=%3*\ %{strlen(&fenc)?&fenc:'none'}\ 
 | 
			
		||||
set statusline+=%2*\ %y\ 
 | 
			
		||||
let bruh="%  "
 | 
			
		||||
let bruh1="  "
 | 
			
		||||
set statusline+=%1*\ %p%{bruh}%l/%L%{bruh1}%c\ 
 | 
			
		||||
 | 
			
		||||
hi User1 guibg=#fbf1c7 guifg=#1d2021
 | 
			
		||||
hi User2 guibg=#1d2021 guifg=#fbf1c7
 | 
			
		||||
hi User3 guifg=#fbf1c7 guibg=#665c54
 | 
			
		||||
 | 
			
		||||
function! ModeBruh()
 | 
			
		||||
  let l:mode=mode()
 | 
			
		||||
  if l:mode==#"n"
 | 
			
		||||
    return "NORMAL"
 | 
			
		||||
  elseif l:mode==?"v"
 | 
			
		||||
    return "VISUAL"
 | 
			
		||||
  elseif l:mode==#"i"
 | 
			
		||||
    return "INSERT"
 | 
			
		||||
  elseif l:mode==#"R"
 | 
			
		||||
    return "REPLACE"
 | 
			
		||||
  elseif l:mode==?"s"
 | 
			
		||||
    return "SELECT"
 | 
			
		||||
  elseif l:mode==#"t"
 | 
			
		||||
    return "TERMINAL"
 | 
			
		||||
  elseif l:mode==#"c"
 | 
			
		||||
    return "COMMAND"
 | 
			
		||||
  elseif l:mode==#"!"
 | 
			
		||||
    return "SHELL"
 | 
			
		||||
  endif
 | 
			
		||||
 | 
			
		||||
endfunction
 | 
			
		||||
function! GitBruh()
 | 
			
		||||
  let l:branchname = GitBranch()
 | 
			
		||||
  return strlen(l:branchname) > 0?'  '.l:branchname.'':''
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
function! GitBranch()
 | 
			
		||||
  return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
set termguicolors
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
" I got this part of the config from Michael Lan Source = https://www.youtube.com/watch?v=I4Rz0qoWYBl
 | 
			
		||||
function! TermWrapper(command) abort
 | 
			
		||||
	if !exists('g:split_term_style') | let g:split_term_style = 'vertical' | endif
 | 
			
		||||
	if g:split_term_style ==# 'vertical'
 | 
			
		||||
		let buffercmd = 'vnew'
 | 
			
		||||
	elseif g:split_term_style ==# 'horizontal'
 | 
			
		||||
		let buffercmd = 'new'
 | 
			
		||||
	else
 | 
			
		||||
		echoerr 'ERROR! g:split_term_style is not a valid value (must be ''horizontal'' or ''vertical'' but is currently set to ''' . g:split_term_style . ''')'
 | 
			
		||||
		throw 'ERROR! g:split_term_style is not a valid value (must be ''horizontal'' or ''vertical'')'
 | 
			
		||||
	endif
 | 
			
		||||
	exec buffercmd
 | 
			
		||||
	exec 'term ' . a:command
 | 
			
		||||
	exec 'startinsert'
 | 
			
		||||
endfunction
 | 
			
		||||
command! -nargs=0 CompileAndRun call TermWrapper(printf('g++ -std=c++17 %s && ./a.out', expand('%')))
 | 
			
		||||
autocmd FileType cpp nnoremap <F5> :CompileAndRun<CR>
 | 
			
		||||
 | 
			
		||||
let g:split_term_style = 'vertical'
 | 
			
		||||
		Reference in New Issue
	
	Block a user