syntax on " syntax highlighting set nocompatible " disable compatibility to old-time vi set mouse=v " middle-click paste with set number set nocompatible set hlsearch " highlight search set incsearch " incremental search set tabstop=4 " number of columns occupied by a tab set softtabstop=4 " see multiple spaces as tabstops so does the right thing set expandtab " converts tabs to white space set shiftwidth=4 " width for autoindents set autoindent " indent a new line the same amount as the line just typed set number " add line numbers set wildmode=longest,list " get bash-like tab completions set cc=100 " set an 100 column border for good coding style set mouse=a " enable mouse click set cursorline " highlight current cursorline set ttyfast " Speed up scrolling in Vim set fdm=syntax " foldingmethod syntax set foldlevel=10 " only fold when a certain complexity is reached by default. This applies only at startup. "set spell " enable spell check (may need to download language package) set timeout timeoutlen=400 " Avoid showing message extra message when using completion" set shortmess+=c filetype plugin indent on "allow auto-indenting depending on file type filetype plugin on " let g:indentLine_setColors = 0 let g:indentLine_char = '│' " set timeout to wait for shortcuts with a prefix noremap oo o noremap OO O " hit f3 to toggle search highlighting" nnoremap :set hlsearch! nnoremap let mapleader=" " map t :echo "leader tested!" map h :noh " copy to wayland clipboard when leader is used. (note, install gvim for this) vnoremap wy y :call system("wl-copy", @") nnoremap wY Y :call system("wl-copy", @") nnoremap wy y :call system("wl-copy", @") nnoremap wyy yy :call system("wl-copy", @") " copy to system clipboard when leader is used. (note, install gvim for this) vnoremap y "+y nnoremap Y "+Y nnoremap y "+y nnoremap yy "+yy " open terminal with F12 nnoremap :terminal " vsplit with , then " map " :vsplit " split with , then %" map % :split " :W to write file as root" command W :SudaWrite " :E to open file as root" command E :SudaRead " Set completeopt to have a better completion experience" set completeopt=menuone,noinsert,noselect call plug#begin() Plug 'lambdalisue/suda.vim' Plug 'preservim/nerdcommenter' Plug 'mhinz/vim-startify' Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'nvim-tree/nvim-tree.lua' Plug 'psliwka/vim-smoothie' " scorll with STRG + d or STRG + u Plug 'nvim-lualine/lualine.nvim' " nicer status line Plug 'neovim/nvim-lspconfig' " lsp config for easy setup of LSP Plug 'romgrk/barbar.nvim' " tabs for buffers Plug 'EdenEast/nightfox.nvim' " Vim-Plug Plug 'numToStr/FTerm.nvim' " floating terminal, toggle with Plug 'kdheepak/lazygit.nvim' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'goolord/alpha-nvim' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-cmdline' Plug 'hrsh7th/nvim-cmp' Plug 'nvim-tree/nvim-web-devicons' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' call plug#end() " Use and to navigate through popup menu" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Set completeopt to have a better completion experience" set completeopt=menuone,noinsert,noselect " Open NvimTree with f5" nnoremap :NvimTreeToggle " Move to previous/next" nnoremap BufferPrevious nnoremap BufferNext " Re-order to previous/next" nnoremap BufferMovePrevious nnoremap > BufferMoveNext " Goto buffer in position..." nnoremap BufferGoto 1 nnoremap BufferGoto 2 nnoremap BufferGoto 3 nnoremap BufferGoto 4 nnoremap BufferGoto 5 nnoremap BufferGoto 6 nnoremap BufferGoto 7 nnoremap BufferGoto 8 nnoremap BufferGoto 9 nnoremap BufferLast " Pin/unpin buffer" nnoremap BufferPin " Close buffer" nnoremap BufferClose " Wipeout buffer " :BufferWipeout " Close commands " :BufferCloseAllButCurrent " :BufferCloseAllButVisible " :BufferCloseAllButPinned " :BufferCloseAllButCurrentOrPinned " :BufferCloseBuffersLeft " :BufferCloseBuffersRight " Magic buffer-picking mode nnoremap BufferPick " Sort automatically by..." nnoremap bb BufferOrderByBufferNumber nnoremap bd BufferOrderByDirectory nnoremap bl BufferOrderByLanguage nnoremap bw BufferOrderByWindowNumber " Other: " :BarbarEnable - enables barbar (enabled by default) " :BarbarDisable - very bad command, should never be used " " packages packadd termdebug color terafox let g:lazygit_floating_window_winblend = 0 " transparency of floating window let g:lazygit_floating_window_scaling_factor = 0.9 " scaling factor for floating window let g:lazygit_floating_window_corner_chars = ['╭', '╮', '╰', '╯'] " customize lazygit popup window corner characters let g:lazygit_floating_window_use_plenary = 0 " use plenary.nvim to manage floating window if available let g:lazygit_use_neovim_remote = 1 " fallback to 0 if neovim-remote is not installed let g:lazygit_use_custom_config_file_path = 0 " config file path is evaluated if this value is 1 let g:lazygit_config_file_path = '' " custom config file path " setup mapping to call :LazyGit nnoremap gg :LazyGit "------------------------------------------------------ lua << END require('alpha').setup(require('alpha.themes.startify').config) -- disable netrw at the very start of your init.lua (strongly advised) vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 -- set termguicolors to enable highlight groups vim.opt.termguicolors = true -- empty setup using defaults require("nvim-tree").setup() require'lspconfig'.clangd.setup{} require'lspconfig'.rust_analyzer.setup{} require('lualine').setup { options = { icons_enabled = true, theme = 'auto', component_separators = { left = '', right = ''}, section_separators = { left = '', right = ''}, disabled_filetypes = { statusline = {}, winbar = {}, }, ignore_focus = {}, always_divide_middle = true, globalstatus = false, refresh = { statusline = 1000, tabline = 1000, winbar = 1000, } }, sections = { lualine_a = {'mode'}, lualine_b = {'branch', 'diff', 'diagnostics'}, lualine_c = {'filename'}, lualine_d = {'diagnostics'}, lualine_x = {'encoding', 'fileformat', 'filetype', 'filesize'}, lualine_y = {'progress'}, lualine_z = {'location'} }, inactive_sections = { lualine_a = {}, lualine_b = {}, lualine_c = {'filename'}, lualine_x = {'location'}, lualine_y = {}, lualine_z = {} }, tabline = {}, winbar = {}, inactive_winbar = {}, extensions = {} } require'FTerm'.setup({ border = 'single', dimensions = { height = 0.9, width = 0.9, }, }) -- Set up nvim-cmp. local cmp = require'cmp' cmp.setup({ snippet = { -- REQUIRED - you must specify a snippet engine expand = function(args) vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. -- require('snippy').expand_snippet(args.body) -- For `snippy` users. -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. end, }, window = { -- completion = cmp.config.window.bordered(), -- documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'vsnip' }, -- For vsnip users. -- { name = 'luasnip' }, -- For luasnip users. -- { name = 'ultisnips' }, -- For ultisnips users. -- { name = 'snippy' }, -- For snippy users. }, { { name = 'buffer' }, }) }) -- Set configuration for specific filetype. cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. }, { { name = 'buffer' }, }) }) -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Example keybindings vim.keymap.set('n', '', 'lua require("FTerm").toggle()') vim.keymap.set('t', '', 'lua require("FTerm").toggle()') END