--Plug init -- local Plug = vim.fn['plug#'] vim.call('plug#begin', '~/.local/lib/nvim/plugged') -- vim airline and vim airline theme Plug 'vim-airline/vim-airline' -- vim airline and vim airline theme Plug 'vim-airline/vim-airline-themes' Plug 'w0rp/ale' -- Base16 theme Plug 'chriskempson/base16-vim' -- NERDTree file manager Plug 'scrooloose/nerdtree' -- Vim fugitive Plug 'tpope/vim-fugitive' Plug 'tpope/vim-surround' Plug 'sheerun/vim-polyglot' Plug('Shougo/deoplete.nvim', { ['do'] = ':UpdateRemotePlugins' }) Plug 'zchee/deoplete-jedi' -- Grammalecte Plug('dpelle/vim-Grammalecte', { on = 'GrammalecteCheck' }) vim.call('plug#end') -- General Option vim.opt.autoindent = true vim.opt.background = 'dark' vim.opt.backupdir = '$HOME/.local/tmp/nvim' vim.opt.clipboard = 'unnamedplus' --Use system clipboard vim.opt.colorcolumn = '80' vim.opt.directory = '$HOME/.local/tmp/nvim' vim.opt.expandtab = true vim.opt.foldmethod = 'syntax' vim.opt.gdefault = true -- search: all occurrences by default vim.opt.hlsearch = true -- search: hightlight terms vim.opt.ignorecase = true vim.opt.incsearch = true vim.opt.laststatus = 1 -- show special character vim.opt.listchars = {tab = '→ ', trail = '␣', eol = '', extends = '…' } vim.opt.number = true vim.opt.shiftwidth = 4 vim.opt.showmatch = true vim.opt.smartcase = true -- search: try :to be smart about cases vim.opt.smartindent = true vim.opt.tabstop = 4 vim.opt.termguicolors = true -- 24 bits color support vim.opt.wildmenu = true -- activate enhanced user menu vim.opt.wildmode = 'lastused:full,list' -- enhance menu -- Options than need vim.cmd vim.cmd('syntax on') vim.cmd('colorscheme base16-classic-dark') -- Global variables vim.g['base16colorspace'] = 256 -- Vim-airLine vim.g['airline#extensions#tabline#enabled'] = 1 vim.g['airline#extensions#tabline#left_sep'] = '' vim.g['airline#extensions#tabline#left_alt_sep'] = '|' vim.g['g:airline_powerline_fonts'] = 1 vim.g['airline_skip_empty_sections'] = 1 vim.g['airline#extensions#tabline#show_splits'] = 0 -- ALE vim.g['ale_sign_column_always'] = 1 vim.g['ale_sign_error'] = '⚠' vim.g['ale_sign_warning'] = '⚠' vim.g['ale_echo_msg_format'] = '[%linter%] %s [%severity%]' -- -- Code Fold -- "Load and save view atomatocally (save and restore fold) vim.cmd('au BufWinLeave *.* mkview') vim.cmd('au BufWinEnter *.* silent! loadview') -- NerdTree -- Close NERDTree if it is the last buffer open vim.cmd('au bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif') -- Grammalecte vim.g['grammalecte_cli_py'] = '/usr/bin/grammalecte-cli' -- Deoplete vim.g['deoplete#enable_at_startup'] = 1 -- inoremap pumvisible()? "\" : "\" -- inoremap pumvisible()? "\" : "\" local map = function(key) -- get the extra options local opts = {noremap = true} for i, v in pairs(key) do if type(i) == 'string' then opts[i] = v end end -- basic support for buffer-scoped keybindings local buffer = opts.buffer opts.buffer = nil if buffer then vim.api.nvim_buf_set_keymap(0, key[1], key[2], key[3], opts) else vim.api.nvim_set_keymap(key[1], key[2], key[3], opts) end end -- " Key biding -- " ---------- -- map {'', '[C-left]', ':tabprevious', noremap = false, silent = true} -- map {'', '[C-right]', ':tabnext', noremap = false, silent = true} map {'n', '/', ':nohlsearch', noremap = false, silent = true} map {'n', '', ':NERDTreeToggle', noremap = false, silent = true} -- Move tabs with \[ and \] map {'n', ']', ':tabnext', noremap = false, silent = true} map {'n', '[', ':tabprev', noremap = false, silent = true} map {'n', 'l', ':set list!', silent = true} -- Manage Tab local t = function(str) return vim.api.nvim_replace_termcodes(str, true, true, true) end _G.smart_tab = function() if vim.fn.pumvisible() == 1 then return t'' else return t'' end end vim.api.nvim_set_keymap( 'i', '', 'v:lua.smart_tab()', {noremap = true, expr = true} ) -- Autotype vim.cmd('au BufRead,BufNewFile *.md setlocal textwidth=80') vim.cmd('au BufRead,BufNewFile *.tex setlocal textwidth=80') vim.cmd('au BufNewFile,BufRead /tmp/neomutt* set tw=72 fo=awq comments+=nb:> noautoindent filetype=mail') -- Ignore these filenames during enhanced command line completion. vim.opt.wildignore = { '*.bak', '*.class', '*.aux', '*.out', '*.toc', '*.jpg', '*.bmp', '*.gif', '*.png', '*.luac', '*.o', '*.obj', '*.exe', '*.dll', '*.manifest', '*.pyc', '*.spl', '*.sw?' }