V = vim -------------------------- ---- Config Section ----- --- 1 --- Options -------- -------------------------- O = V.opt O.number=true O.relativenumber=true O.tabstop=2 O.shiftwidth=2 O.expandtab=true O.preserveindent=true O.termguicolors=true V.cmd("colorscheme habamax") -------------------------- ---- Config Section ----- --- 2 --- Leader --------- -------------------------- V.keymap.set('n', " ", "", {silent = true, remap = false}) V.g.mapleader = " " -------------------------- ---- Config Section ----- --- 3 --- Packer conf ---- -------------------------- local fresh_install_packer = function() local packerpath = V.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" if not V.loop.fs_stat(packerpath) then V.fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim.git", packerpath, }) V.cmd [[packadd packer.nvim]] return true end return false end local fresh_install = fresh_install_packer(); V.cmd([[ augroup packer_user_config autocmd! autocmd BufWritePost init.lua source | PackerCompile augroup end ]]) -------------------------- ---- Config Section ----- --- 4 --- Plugins -------- -------------------------- local packer = require('packer') packer.startup({function(u) u 'wbthomason/packer.nvim' -- LSP + Autocomplete u 'neovim/nvim-lspconfig' u 'williamboman/mason.nvim' u 'williamboman/mason-lspconfig.nvim' u 'hrsh7th/nvim-cmp' u 'hrsh7th/cmp-nvim-lsp' u 'hrsh7th/cmp-buffer' u 'L3MON4D3/LuaSnip' u 'Sirver/ultisnips' u 'honza/vim-snippets' u { 'VonHeikemen/lsp-zero.nvim', branch = 'v2.x' } -- Markdown u 'godlygeek/tabular' u 'elzr/vim-json' u 'preservim/vim-markdown' u 'vim-pandoc/vim-pandoc-syntax' u ({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = function() V.g.mkdp_filetypes = { "markdown.pandoc" } end, ft = { "markdown" }, }) -- File tree, telescope u 'nvim-lua/plenary.nvim' u 'nvim-tree/nvim-web-devicons' u 'MunifTanjim/nui.nvim' u { 'nvim-neo-tree/neo-tree.nvim', branch = 'v3.x' } u { 'nvim-telescope/telescope.nvim', branch = '0.1.x' } -- Others u 'nvim-lualine/lualine.nvim' u 'folke/which-key.nvim' if fresh_install then packer.sync() end end, config = { max_jobs = 50, git = { cmd = 'git', subcommands = { update = 'pull --ff-only --progress --rebase=false --force', install = 'clone --depth %i --no-single-branch --progress', fetch = 'fetch --depth 999999 --progress --force', checkout = 'checkout %s --', update_branch = 'merge --ff-only @{u}', current_branch = 'branch --show-current', diff = 'log --color=never --pretty=format:FMT --no-show-signature HEAD@{1}...HEAD', diff_fmt = '%%h %%s (%%cr)', get_rev = 'rev-parse --short HEAD', get_msg = 'log --color=never --pretty=format:FMT --no-show-signature HEAD -n 1', submodules = 'submodule update --init --recursive --progress' }, depth = 1, clone_timeout = 5, -- in seconds default_url_format = 'https://github.com/%s' }, }}) -------------------------- ---- Config Section ----- --- 5 --- Plugins conf---- -------------------------- local lsp = require('lsp-zero').preset({}) lsp.on_attach(function(client, bufnr) lsp.default_keymaps({buffer = bufnr}) end) lsp.ensure_installed({ 'lua_ls', 'tsserver', 'eslint', 'rust_analyzer' }) lsp.setup(); local cmp = require('cmp') cmp.setup { mapping = { [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true }), }, sources = { {name = 'buffer'}, {name = 'nvim_lsp'} }, completion = { completeopt = 'menu,menuone,noinsert' } } local telescope = require('telescope') telescope.setup(); local lualine = require('lualine') lualine.setup({ options = { theme = 'nord' } }); local whichkey = require('which-key') whichkey.setup() -- vim-markdown V.cmd('let g:vim_markdown_folding_disabled = 1') V.cmd('let g:vim_markdown_conceal = 0') V.cmd('let g:tex_conceal = ""') V.cmd('let g:vim_markdown_math = 1') V.cmd('let g:vim_markdown_frontmatter = 1') V.cmd('let g:vim_markdown_toml_frontmatter = 1') V.cmd('let g:vim_markdown_json_frontmatter = 1') V.cmd([[ augroup pandoc_syntax au! BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc augroup END ]]) V.cmd([[ augroup pandoc_syntax au! BufNewFile,BufFilePre,BufRead *.markdown set filetype=markdown.pandoc augroup END ]]) local glow = require('glow') glow.setup() -------------------------- ---- Config Section ----- --- x --- Keybindings ---- -------------------------- V.keymap.set('n', 'w', ':w') V.keymap.set('n', 'q', ':q') V.keymap.set('n', 'Q', ':qa!') V.keymap.set('n', 'e', ':Neotree toggle float ') V.keymap.set('n', '', ':red') V.keymap.set('n', ';', ':nohl') V.keymap.set('n', 'fb', ':Telescope buffers') V.keymap.set('n', 'fo', ':Telescope find_files') V.keymap.set('n', 'fg', ':Telescope live_grep') V.keymap.set('n', 'fh', ':Telescope help_tags') V.keymap.set('n', 'fr', ':Telescope oldfiles') V.keymap.set('n', 'ns', '/Config Section') V.keymap.set('n', 'o', 'oi')