<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <!-- 2020-11-03 mar. 16:26 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>Vim Config</title> <meta name="generator" content="Org mode" /> <meta name="author" content="Dehaeze Thomas" /> <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="./js/jquery.min.js"></script> <script type="text/javascript" src="./js/bootstrap.min.js"></script> <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script> <script type="text/javascript" src="./js/readtheorg.js"></script> </head> <body> <div id="org-div-home-and-up"> <a accesskey="h" href="./index.html"> UP </a> | <a accesskey="H" href="./index.html"> HOME </a> </div><div id="content"> <h1 class="title">Vim Config</h1> <div id="table-of-contents"> <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> <li><a href="#orged33009">Plugins Install</a> <ul> <li><a href="#orgbc34ff2">Plug start</a></li> <li><a href="#org02fb17d">Manage Files</a></li> <li><a href="#org2fcab91">Text Objects</a></li> <li><a href="#orge56c718">Git</a></li> <li><a href="#org6dcd9df">Motions, Search</a></li> <li><a href="#orga9aa13a">Manipulate Things</a></li> <li><a href="#org8992d56">Utils</a></li> <li><a href="#orgbf6e9a2">Visual</a></li> <li><a href="#orge59021e">Themes</a></li> <li><a href="#org081ce3e">Language Server Protocol</a></li> <li><a href="#org4b93f38">Snippnets and autocompletion</a></li> <li><a href="#org1f44829">Syntax Checking and Build Utils</a></li> <li><a href="#orgf1ad87a">Auto Completion</a></li> <li><a href="#org74ef746">Tmux</a></li> <li><a href="#org824d2ab">Syntax</a></li> <li><a href="#orgf340ea7">Markdown</a></li> <li><a href="#orgd42161f">LaTeX</a></li> <li><a href="#orgf35353b">Matlab</a></li> <li><a href="#org97199a9">Org Mode</a></li> <li><a href="#orgdc1ffed">Others / To test</a></li> <li><a href="#org9dadb1b">Plug End</a></li> </ul> </li> <li><a href="#org0b94b51">Basic</a> <ul> <li><a href="#org256b161">General</a></li> <li><a href="#org6bd8cd7">VIM user interface</a></li> <li><a href="#orgbb59276">Foldings</a></li> <li><a href="#org7bccef3">Colors and Fonts</a></li> <li><a href="#orge9016d2">Files, backups and undo</a></li> <li><a href="#org4e1de45">Text, tab and indent related</a></li> <li><a href="#org63d3296">Moving around, tabs, windows and buffers</a></li> <li><a href="#orgf2561b7">Misc</a></li> <li><a href="#org0551f06">Helper functions</a></li> <li><a href="#orgb04dd31">GUI related</a></li> <li><a href="#orgd629d9a">Turn persistent undo on</a></li> </ul> </li> <li><a href="#orga2ddc8d">Mappings</a> <ul> <li><a href="#orgf82145f">Normal mode related</a></li> <li><a href="#org944f772">Insert mode related</a></li> <li><a href="#org1a540bc">Visual mode related</a></li> <li><a href="#org3724a81">Add some delimiters</a></li> <li><a href="#org6d1a3c1">Command mode related</a></li> <li><a href="#orgea12030">Terminal mode related</a></li> <li><a href="#org97c01ca">Correct misspelled works</a></li> </ul> </li> <li><a href="#org9efbaf9">Filetypes</a> <ul> <li><a href="#org4c8e0af">Vim Which Key</a></li> <li><a href="#org3fe94b3">Mails</a></li> <li><a href="#org6672ae9">MarkDown</a></li> <li><a href="#orgcfe085e">LaTeX</a></li> <li><a href="#orgdbd486b">Arduino</a></li> <li><a href="#orgf0c3730">Python</a></li> <li><a href="#orgdee16ca">Matlab</a></li> <li><a href="#org27ccd54">Save Which Key Configuration</a></li> </ul> </li> <li><a href="#org48e4b16">Plugins Config</a> <ul> <li><a href="#org4cf6f54">junegunn/fzf</a></li> <li><a href="#org32fa6ff">autozimu/LanguageClient-neovim</a></li> <li><a href="#org84ce020">JamshedVesuna/vim-markdown-preview</a></li> <li><a href="#org10c55a5">mhinz/vim-signify</a></li> <li><a href="#org92ae007">Deoplete</a></li> <li><a href="#org9049006">SirVer/ultisnips</a></li> <li><a href="#org1bc629a">honza/vim-snippets</a></li> <li><a href="#org14b3d73">itchyny/lightline.vim</a></li> <li><a href="#org09d4b44">Autopairs</a></li> <li><a href="#orgf99a421">Yggdroot/indentLine</a></li> <li><a href="#orga9a8a6b">ryanoasis/vim-devicons</a></li> <li><a href="#org1f543aa">junegunn/goyo.vim</a></li> <li><a href="#orgd3afff1">tpope/vim-surround</a></li> <li><a href="#org33b7648">Vim-Markdown</a></li> <li><a href="#org9d0fb36">Neomake</a></li> <li><a href="#org3612d41">lervag/vimtex</a></li> <li><a href="#org39c6e0f">jpalardy/vim-slime</a></li> <li><a href="#orgc867cde">mhinz/vim-grepper</a></li> <li><a href="#orgb9f5f6e">Editor config</a></li> <li><a href="#org87fa133">Polyglot</a></li> </ul> </li> <li><a href="#org75b0074">Bindings</a> <ul> <li><a href="#org6a2693e">Vim Which Key</a></li> <li><a href="#orgac7157e">Direct ones</a></li> <li><a href="#orgb41f651">Quit</a></li> <li><a href="#org9159c40">Files</a></li> <li><a href="#org73faea0">Buffers</a></li> <li><a href="#orgb222501">Tabs</a></li> <li><a href="#org8c7bf07">Terminals</a></li> <li><a href="#org04030fd">Splits / Windows</a></li> <li><a href="#org512741f">Check Spell</a></li> <li><a href="#orga3f84f4">Make</a></li> <li><a href="#orgafc2d25">Search</a></li> <li><a href="#org090f24d">GIT</a></li> <li><a href="#orgfb0a00a">Errors</a></li> <li><a href="#org2e47a1e">Text</a></li> <li><a href="#org7ee13d9">Config</a></li> <li><a href="#org480d260">Insert</a></li> <li><a href="#org8838dd6">Save Which Key Configuration</a></li> </ul> </li> </ul> </div> </div> <div id="outline-container-orged33009" class="outline-2"> <h2 id="orged33009">Plugins Install</h2> <div class="outline-text-2" id="text-orged33009"> </div> <div id="outline-container-orgbc34ff2" class="outline-3"> <h3 id="orgbc34ff2">Plug start</h3> <div class="outline-text-3" id="text-orgbc34ff2"> <div class="org-src-container"> <pre class="src src-vimrc">call plug#begin('~/.vim/plugged') </pre> </div> </div> </div> <div id="outline-container-org02fb17d" class="outline-3"> <h3 id="org02fb17d">Manage Files</h3> <div class="outline-text-3" id="text-org02fb17d"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'tpope/vim-vinegar' " Combine with netrw to create a delicious salad dressing Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } " A command-line fuzzy finder written in Go Plug 'junegunn/fzf.vim' " Fzf for vim </pre> </div> </div> </div> <div id="outline-container-org2fcab91" class="outline-3"> <h3 id="org2fcab91">Text Objects</h3> <div class="outline-text-3" id="text-org2fcab91"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'kana/vim-textobj-user' " Create your own text objects Plug 'kana/vim-textobj-line' " Text objects for the current line Plug 'kana/vim-textobj-entire' " Text objects for entire buffer Plug 'michaeljsmith/vim-indent-object' " Defines a new text object representing lines of code at the same indent level Plug 'jiangmiao/auto-pairs' " Vim plugin, insert or delete brackets, parens, quotes in pair </pre> </div> </div> </div> <div id="outline-container-orge56c718" class="outline-3"> <h3 id="orge56c718">Git</h3> <div class="outline-text-3" id="text-orge56c718"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'jreybert/vimagit' Plug 'tpope/vim-fugitive' " A Git wrapper so awesome, it should be illegal Plug 'junegunn/gv.vim' " A git commit browser Plug 'mhinz/vim-signify' " Show a diff using Vim its sign column </pre> </div> </div> </div> <div id="outline-container-org6dcd9df" class="outline-3"> <h3 id="org6dcd9df">Motions, Search</h3> <div class="outline-text-3" id="text-org6dcd9df"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'terryma/vim-expand-region' " Vim plugin that allows you to visually select increasingly larger regions of text using the same key combination Plug 'justinmk/vim-sneak' " The missing motion for Vim Plug 'haya14busa/is.vim' " Improved incremental searching for Vim </pre> </div> </div> </div> <div id="outline-container-orga9aa13a" class="outline-3"> <h3 id="orga9aa13a">Manipulate Things</h3> <div class="outline-text-3" id="text-orga9aa13a"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'tpope/vim-surround' " Quoting/parenthesizing made simple Plug 'tpope/vim-commentary' " Comment stuff out Plug 'junegunn/vim-easy-align' " A Vim alignment plugin Plug 'Olical/vim-enmasse' " Edit every line in a quickfix list at the same time Plug 'mhinz/vim-grepper', { 'on': ['Grepper', '<plug>(GrepperOperator)'] } " </pre> </div> </div> </div> <div id="outline-container-org8992d56" class="outline-3"> <h3 id="org8992d56">Utils</h3> <div class="outline-text-3" id="text-org8992d56"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'tpope/vim-repeat' " Enable repeating supported plugin maps with '.' Plug 'tpope/vim-obsession' " Continuously updated session files Plug 'tpope/vim-eunuch' " eunuch.vim: helpers for UNIX Plug 'kana/vim-operator-user' " Define your own operator easily Plug 'majutsushi/tagbar' " Vim plugin that displays tags in a window, ordered by scope Plug 'tpope/vim-speeddating' " use CTRL-A/CTRL-X to increment dates, times, and more Plug 'liuchengxu/vim-which-key' " Vim plugin that shows keybindings in popup </pre> </div> </div> </div> <div id="outline-container-orgbf6e9a2" class="outline-3"> <h3 id="orgbf6e9a2">Visual</h3> <div class="outline-text-3" id="text-orgbf6e9a2"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'itchyny/lightline.vim' " A light and configurable statusline/tabline for Vim Plug 'Yggdroot/indentLine' " A vim plugin to display the indention levels with thin vertical lines Plug 'ryanoasis/vim-devicons' " Adds file type glyphs/icons to many popular Vim plugins such as: NERDTree, vim-airline, unite, vim-startify and many more Plug 'mhinz/vim-startify' " The fancy start screen for Vim Plug 'junegunn/goyo.vim' " Distraction-free writing in Vim </pre> </div> </div> </div> <div id="outline-container-orge59021e" class="outline-3"> <h3 id="orge59021e">Themes</h3> <div class="outline-text-3" id="text-orge59021e"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'morhetz/gruvbox' " Retro groove color scheme for Vim </pre> </div> </div> </div> <div id="outline-container-org081ce3e" class="outline-3"> <h3 id="org081ce3e">Language Server Protocol</h3> <div class="outline-text-3" id="text-org081ce3e"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'autozimu/LanguageClient-neovim', { \ 'branch': 'next', \ 'do': 'bash install.sh', \ } </pre> </div> </div> </div> <div id="outline-container-org4b93f38" class="outline-3"> <h3 id="org4b93f38">Snippnets and autocompletion</h3> <div class="outline-text-3" id="text-org4b93f38"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'SirVer/ultisnips' " The ultimate snippet solution for Vim Plug 'honza/vim-snippets' " Vim-snipmate default snippets </pre> </div> </div> </div> <div id="outline-container-org1f44829" class="outline-3"> <h3 id="org1f44829">Syntax Checking and Build Utils</h3> <div class="outline-text-3" id="text-org1f44829"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'neomake/neomake' " Asynchronous linting and make framework for Neovim/Vim </pre> </div> </div> </div> <div id="outline-container-orgf1ad87a" class="outline-3"> <h3 id="orgf1ad87a">Auto Completion</h3> <div class="outline-text-3" id="text-orgf1ad87a"> <div class="org-src-container"> <pre class="src src-vimrc">if has('nvim') Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'Nelyah/deoplete-mu' else Plug 'Shougo/deoplete.nvim' Plug 'roxma/nvim-yarp' Plug 'roxma/vim-hug-neovim-rpc' Plug 'Nelyah/deoplete-mu' endif </pre> </div> </div> </div> <div id="outline-container-org74ef746" class="outline-3"> <h3 id="org74ef746">Tmux</h3> <div class="outline-text-3" id="text-org74ef746"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'christoomey/vim-tmux-navigator' " Seamless navigation between tmux panes and vim splits Plug 'jpalardy/vim-slime' " Used to type text into a REPL </pre> </div> </div> </div> <div id="outline-container-org824d2ab" class="outline-3"> <h3 id="org824d2ab">Syntax</h3> <div class="outline-text-3" id="text-org824d2ab"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'sheerun/vim-polyglot' " A solid language pack for Vim </pre> </div> </div> </div> <div id="outline-container-orgf340ea7" class="outline-3"> <h3 id="orgf340ea7">Markdown</h3> <div class="outline-text-3" id="text-orgf340ea7"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'plasticboy/vim-markdown', { 'for': 'markdown' } " Markdown Vim Mode Plug 'mzlogin/vim-markdown-toc', { 'for': 'markdown' } " A vim plugin to generate table of contents for Markdown files Plug 'JamshedVesuna/vim-markdown-preview', { 'for': 'markdown' } " A light Vim plugin for previewing markdown files in a browser Plug 'nelstrom/vim-markdown-folding' " Fold markdown documents by section </pre> </div> </div> </div> <div id="outline-container-orgd42161f" class="outline-3"> <h3 id="orgd42161f">LaTeX</h3> <div class="outline-text-3" id="text-orgd42161f"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'lervag/vimtex', { 'for': 'tex' } " A modern vim plugin for editing LaTeX files. </pre> </div> </div> </div> <div id="outline-container-orgf35353b" class="outline-3"> <h3 id="orgf35353b">Matlab</h3> <div class="outline-text-3" id="text-orgf35353b"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'tdehaeze/matlab-vim', { 'for': 'matlab' } " Edit Matlab M-files in Vim editor Plug 'djoshea/vim-matlab-fold', { 'for': 'matlab' } " Vim code folding for Matlab files </pre> </div> </div> </div> <div id="outline-container-org97199a9" class="outline-3"> <h3 id="org97199a9">Org Mode</h3> <div class="outline-text-3" id="text-org97199a9"> <div class="org-src-container"> <pre class="src src-vimrc">Plug 'jceb/vim-orgmode' " Text outlining and task management for Vim Plug 'vim-scripts/SyntaxRange' " Define a different filetype syntax on regions of a buffer Plug 'chrisbra/NrrwRgn' " A Narrow Region Plugin for vim Plug 'mattn/calendar-vim' " calendar vimscript Plug 'vim-scripts/utl.vim' " Univeral Text Linking - Execute URLs, footnotes, open emails, organize ideas </pre> </div> </div> </div> <div id="outline-container-orgdc1ffed" class="outline-3"> <h3 id="orgdc1ffed">Others / To test</h3> <div class="outline-text-3" id="text-orgdc1ffed"> <div class="org-src-container"> <pre class="src src-vimrc">" Plug 'francoiscabrol/ranger.vim' " Ranger integration in vim and neovim " Plug 'brooth/far.vim' " Find And Replace Vim plugin " Plug 'justinmk/vim-gtfo' " Go to Terminal or File manager " Plug 'sjl/gundo.vim', { 'on': 'GundoToggle' } " Vim plugin to visualize your Vim undo tree " Plug 'drzel/vim-line-no-indicator' " Simple and expressive line number indicator </pre> </div> </div> </div> <div id="outline-container-org9dadb1b" class="outline-3"> <h3 id="org9dadb1b">Plug End</h3> <div class="outline-text-3" id="text-org9dadb1b"> <div class="org-src-container"> <pre class="src src-vimrc">call plug#end() </pre> </div> </div> </div> </div> <div id="outline-container-org0b94b51" class="outline-2"> <h2 id="org0b94b51">Basic</h2> <div class="outline-text-2" id="text-org0b94b51"> </div> <div id="outline-container-org256b161" class="outline-3"> <h3 id="org256b161">General</h3> <div class="outline-text-3" id="text-org256b161"> <div class="org-src-container"> <pre class="src src-vimrc">set runtimepath+=~/.vim " Sets how many lines of history VIM has to remember set history=500 " Enable filetype plugins filetype plugin on filetype indent on " Set to auto read when a file is changed from the outside set autoread " writes the content of the file automatically if you call :make set autowrite " Share clipboard with system set clipboard+=unnamedplus " Define Leader Key as Space key let mapleader = "\<Space>" let g:mapleader = "\<Space>" let maplocalleader = "," </pre> </div> </div> </div> <div id="outline-container-org6bd8cd7" class="outline-3"> <h3 id="org6bd8cd7">VIM user interface</h3> <div class="outline-text-3" id="text-org6bd8cd7"> <div class="org-src-container"> <pre class="src src-vimrc">" Set 7 lines to the cursor - when moving vertically using j/k set so=7 " Avoid garbled characters in Chinese language windows OS let $LANG='en' set langmenu=en " Set Timeout config set timeout set ttimeout set timeoutlen=500 set ttimeoutlen=50 " Turn on the wild menu set wildmenu " Ignore compiled files set wildignore=*.o,*~,*.pyc if has("win16") || has("win32") set wildignore+=.git\*,.hg\*,.svn\* else set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store endif set wildmode=full "Always show current position set ruler " Height of the command bar set cmdheight=1 " A buffer becomes hidden when it is abandoned set hid " Configure backspace so it acts as it should act set backspace=eol,start,indent set whichwrap+=<,>,h,l " Ignore case when searching set ignorecase " When searching try to be smart about cases set smartcase " Option for smarter completions that will be case aware set infercase " Highlight search results set hlsearch " Makes search act like search in modern browsers set incsearch " Don't redraw while executing macros (good performance config) set lazyredraw " For regular expressions turn magic on set magic " Show matching brackets when text indicator is over them set showmatch " Don't show tab line if there is only one tab set showtabline=1 " How tany tenths of a second to blink when matching brackets set mat=2 " No annoying sound on errors set noerrorbells set novisualbell set t_vb= set tm=500 " Add a bit extra margin to the left set foldcolumn=0 " Improve VIM scrolling set ttyfast " Relative Numbers set relativenumber " Smarter J and K navigation nnoremap <expr> j v:count ? (v:count > 5 ? "m'" . v:count : '') . 'j' : 'gj' nnoremap <expr> k v:count ? (v:count > 5 ? "m'" . v:count : '') . 'k' : 'gk' " Splits open at the bottom and right, which is non-retarded, unlike vim defaults. set splitbelow splitright </pre> </div> </div> </div> <div id="outline-container-orgbb59276" class="outline-3"> <h3 id="orgbb59276">Foldings</h3> <div class="outline-text-3" id="text-orgbb59276"> <div class="org-src-container"> <pre class="src src-vimrc">if has('folding') if has('windows') let &fillchars='vert: ' " less cluttered vertical window separators endif set foldmethod=indent " not as cool as syntax, but faster set foldlevelstart=99 " start unfolded endif </pre> </div> </div> </div> <div id="outline-container-org7bccef3" class="outline-3"> <h3 id="org7bccef3">Colors and Fonts</h3> <div class="outline-text-3" id="text-org7bccef3"> <div class="org-src-container"> <pre class="src src-vimrc">syntax enable set background=dark let base16colorspace=256 let g:gruvbox_contrast_dark = 'soft' try colorscheme gruvbox catch endtry " set cursor shapes for insert and replace modes set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20 " Set utf8 as standard encoding set encoding=utf-8 set fileencoding=utf-8 " Use Unix as the standard file type set ffs=unix,dos,mac " Do not highlight the cursor line : http://vim.wikia.com/wiki/Highlight_current_line set nocursorline set nocursorcolumn " Always show the status line set laststatus=2 " Underline for bad spelled words hi clear SpellBad hi SpellBad cterm=underline " Set style for gVim hi SpellBad gui=undercurl </pre> </div> </div> </div> <div id="outline-container-orge9016d2" class="outline-3"> <h3 id="orge9016d2">Files, backups and undo</h3> <div class="outline-text-3" id="text-orge9016d2"> <div class="org-src-container"> <pre class="src src-vimrc">" Turn backup off, since most stuff is in SVN, git et.c anyway... set nobackup set nowb set noswapfile </pre> </div> </div> </div> <div id="outline-container-org4e1de45" class="outline-3"> <h3 id="org4e1de45">Text, tab and indent related</h3> <div class="outline-text-3" id="text-org4e1de45"> <div class="org-src-container"> <pre class="src src-vimrc">" Use spaces instead of tabs set expandtab " Be smart when using tabs set smarttab " 1 tab == 4 spaces set shiftwidth=4 set tabstop=4 " Word wrap without line breaks set wrap set linebreak set nolist " list disables linebreak set autoindent " Auto Indentation set nosmartindent " No Smart Indentation </pre> </div> </div> </div> <div id="outline-container-org63d3296" class="outline-3"> <h3 id="org63d3296">Moving around, tabs, windows and buffers</h3> <div class="outline-text-3" id="text-org63d3296"> <div class="org-src-container"> <pre class="src src-vimrc">" Specify the behavior when switching between buffers try set switchbuf=useopen,usetab catch endtry " Return to last edit position when opening files (You want this!) au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif set splitbelow set splitright " This enables mouse in all modes set mouse=a " Automatically equalize splits when Vim is resized autocmd VimResized * wincmd = </pre> </div> </div> </div> <div id="outline-container-orgf2561b7" class="outline-3"> <h3 id="orgf2561b7">Misc</h3> <div class="outline-text-3" id="text-orgf2561b7"> <div class="org-src-container"> <pre class="src src-vimrc">" Enable Line Number set number " Speed up cursor movments : http://superuser.com/a/625994/587300 set regexpengine=1 " https://github.com/xolox/vim-easytags/issues/88 " Set the maximum column for syntax highlighting set synmaxcol=250 </pre> </div> </div> </div> <div id="outline-container-org0551f06" class="outline-3"> <h3 id="org0551f06">Helper functions</h3> <div class="outline-text-3" id="text-org0551f06"> <div class="org-src-container"> <pre class="src src-vimrc">function! CmdLine(str) exe "menu Foo.Bar :" . a:str emenu Foo.Bar unmenu Foo endfunction function! VisualSelection(direction, extra_filter) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", '\\/.*$^~[]') let l:pattern = substitute(l:pattern, "\n$", "", "") if a:direction == 'gv' call CmdLine("Ag \"" . l:pattern . "\" " ) elseif a:direction == 'replace' call CmdLine("%s" . '/'. l:pattern . '/') endif let @/ = l:pattern let @" = l:saved_reg endfunction " Don't close window, when deleting a buffer command! Bclose call <SID>BufcloseCloseIt() function! <SID>BufcloseCloseIt() let l:currentBufNum = bufnr("%") let l:alternateBufNum = bufnr("#") if buflisted(l:alternateBufNum) buffer # else bnext endif if bufnr("%") == l:currentBufNum new endif if buflisted(l:currentBufNum) execute("bdelete! ".l:currentBufNum) endif endfunction </pre> </div> </div> </div> <div id="outline-container-orgb04dd31" class="outline-3"> <h3 id="orgb04dd31">GUI related</h3> <div class="outline-text-3" id="text-orgb04dd31"> <div class="org-src-container"> <pre class="src src-vimrc">set guifont=Hack\ Nerd\ Font\ Mono:h13 set gfn=Hack\ Nerd\ Font\ Mono:h13 " Disable scrollbars set guioptions-=r set guioptions-=R set guioptions-=l set guioptions-=L </pre> </div> </div> </div> <div id="outline-container-orgd629d9a" class="outline-3"> <h3 id="orgd629d9a">Turn persistent undo on</h3> <div class="outline-text-3" id="text-orgd629d9a"> <div class="org-src-container"> <pre class="src src-vimrc">try set undodir=~/.vim_runtime/temp_dirs/undodir set undofile catch endtry </pre> </div> </div> </div> </div> <div id="outline-container-orga2ddc8d" class="outline-2"> <h2 id="orga2ddc8d">Mappings</h2> <div class="outline-text-2" id="text-orga2ddc8d"> </div> <div id="outline-container-orgf82145f" class="outline-3"> <h3 id="orgf82145f">Normal mode related</h3> <div class="outline-text-3" id="text-orgf82145f"> <div class="org-src-container"> <pre class="src src-vimrc">" Smart way to move between windows noremap <C-j> <C-W>j noremap <C-k> <C-W>k noremap <C-h> <C-W>h noremap <C-l> <C-W>l </pre> </div> </div> </div> <div id="outline-container-org944f772" class="outline-3"> <h3 id="org944f772">Insert mode related</h3> <div class="outline-text-3" id="text-org944f772"> <div class="org-src-container"> <pre class="src src-vimrc">" Paste while in insert mode inoremap <C-v> <C-r>* " Go to the end of line inoremap <C-e> <Esc>A " Go to the beginning of line inoremap <C-a> <Esc>I </pre> </div> </div> </div> <div id="outline-container-org1a540bc" class="outline-3"> <h3 id="org1a540bc">Visual mode related</h3> <div class="outline-text-3" id="text-org1a540bc"> <div class="org-src-container"> <pre class="src src-vimrc">" Visual mode pressing / or ? searches for the current selection vnoremap <silent> / :<C-u>call VisualSelection('', '')<CR>/<C-R>=@/<CR><CR> vnoremap <silent> ? :<C-u>call VisualSelection('', '')<CR>?<C-R>=@/<CR><CR> " Re-select visual block after indenting vnoremap < <gv vnoremap > >gv " Move visual block vnoremap J :m '>+1<CR>gv=gv vnoremap K :m '<-2<CR>gv=gv </pre> </div> </div> </div> <div id="outline-container-org3724a81" class="outline-3"> <h3 id="org3724a81">Add some delimiters</h3> <div class="outline-text-3" id="text-org3724a81"> <div class="org-src-container"> <pre class="src src-vimrc">" use $ as a delimiter xnoremap i$ :<C-u>normal! T$vt$<CR> xnoremap a$ :<C-u>normal! T$hvt$l<CR> onoremap i$ :normal vi$<CR> onoremap a$ :normal va$<CR> </pre> </div> </div> </div> <div id="outline-container-org6d1a3c1" class="outline-3"> <h3 id="org6d1a3c1">Command mode related</h3> <div class="outline-text-3" id="text-org6d1a3c1"> <div class="org-src-container"> <pre class="src src-vimrc">" Bash like keys for the command line cnoremap <C-A> <Home> cnoremap <C-E> <End> cnoremap <C-K> <C-U> cnoremap <C-P> <Up> cnoremap <C-N> <Down> </pre> </div> </div> </div> <div id="outline-container-orgea12030" class="outline-3"> <h3 id="orgea12030">Terminal mode related</h3> <div class="outline-text-3" id="text-orgea12030"> <div class="org-src-container"> <pre class="src src-vimrc">" tnoremap <Esc> <C-\><C-n> tnoremap <C-w>h <C-\><C-n><C-w>h tnoremap <C-w>j <C-\><C-n><C-w>j tnoremap <C-w>k <C-\><C-n><C-w>k tnoremap <C-w>l <C-\><C-n><C-w>l </pre> </div> </div> </div> <div id="outline-container-org97c01ca" class="outline-3"> <h3 id="org97c01ca">Correct misspelled works</h3> <div class="outline-text-3" id="text-org97c01ca"> <p> Taken from: <a href="https://vi.stackexchange.com/questions/68/autocorrect-spelling-mistakes">https://vi.stackexchange.com/questions/68/autocorrect-spelling-mistakes</a> </p> <div class="org-src-container"> <pre class="src src-vimrc">" Go back to last misspelled word and pick first suggestion. inoremap <C-L> <C-G>u<Esc>[s1z=`]a<C-G>u " Select last misspelled word (typing will edit). nnoremap <C-K> <Esc>[sve<C-G> inoremap <C-K> <Esc>[sve<C-G> snoremap <C-K> <Esc>b[sviw<C-G> </pre> </div> </div> </div> </div> <div id="outline-container-org9efbaf9" class="outline-2"> <h2 id="org9efbaf9">Filetypes</h2> <div class="outline-text-2" id="text-org9efbaf9"> </div> <div id="outline-container-org4c8e0af" class="outline-3"> <h3 id="org4c8e0af">Vim Which Key</h3> <div class="outline-text-3" id="text-org4c8e0af"> <div class="org-src-container"> <pre class="src src-vimrc">nnoremap <silent> <localleader> :<c-u>WhichKey ','<CR> let g:which_key_map_local = {} </pre> </div> </div> </div> <div id="outline-container-org3fe94b3" class="outline-3"> <h3 id="org3fe94b3">Mails</h3> <div class="outline-text-3" id="text-org3fe94b3"> <div class="org-src-container"> <pre class="src src-vimrc">autocmd FileType mail set spell spelllang=en_us,fr </pre> </div> </div> </div> <div id="outline-container-org6672ae9" class="outline-3"> <h3 id="org6672ae9">MarkDown</h3> <div class="outline-text-3" id="text-org6672ae9"> <div class="org-src-container"> <pre class="src src-vimrc">" Automatically turn on spell-checking for Markdown files au BufRead,BufNewFile *.md setlocal spell spelllang=fr,en </pre> </div> </div> </div> <div id="outline-container-orgcfe085e" class="outline-3"> <h3 id="orgcfe085e">LaTeX</h3> <div class="outline-text-3" id="text-orgcfe085e"> <div class="org-src-container"> <pre class="src src-vimrc">au BufRead,BufNewFile *.tikz set filetype=tex let tex_no_error=1 " used to not highlight underscores au BufRead,BufNewFile *.tex set filetype=tex au BufRead,BufNewFile *.tex let b:AutoPairs={'(':')', '[':']', '{':'}',"'":"'",'"':'"', '`':'`', '$':'$'} au BufRead,BufNewFile *.tex set iskeyword+=- " " clear the current list of matches that cause error-highlighting " syn clear texOnlyMath " " still mark '^' as an error outside of math mode " syn match texOnlyMath /[\^]/ " autocmd FileType tex,tikz nnoremap <leader>lt <plug>(vimtex-toc-toggle) " autocmd FileType tex,tikz nnoremap <leader>ll <plug>(vimtex-labels-open) " autocmd FileType tex,tikz nnoremap <leader>lv <plug>(vimtex-view) " autocmd FileType tex,tikz nnoremap <leader>lf <plug>(vimtex-reverse-search) " " Make Tikz " nnoremap <leader>mt :Make pdf t=tikz f=%:t:r<cr> " nnoremap <leader>mto :make open t=tikz f=%:t:r<cr> " " Make LaTeX " nnoremap <leader>ml :Make pdf f=%:t:r<cr> " nnoremap <leader>mlo :make open f=%:t:r<cr> </pre> </div> </div> </div> <div id="outline-container-orgdbd486b" class="outline-3"> <h3 id="orgdbd486b">Arduino</h3> <div class="outline-text-3" id="text-orgdbd486b"> <div class="org-src-container"> <pre class="src src-vimrc">au BufRead,BufNewFile *.pde set filetype=arduino au BufRead,BufNewFile *.ino set filetype=arduino " au FileType arduino map <leader>ac :!platformio run<CR> " au FileType arduino map <leader>au :!platformio run -s --target=upload<CR> " au FileType arduino map <leader>am :!platformio serialports monitor --port=/dev/cu </pre> </div> </div> </div> <div id="outline-container-orgf0c3730" class="outline-3"> <h3 id="orgf0c3730">Python</h3> <div class="outline-text-3" id="text-orgf0c3730"> <div class="org-src-container"> <pre class="src src-vimrc">let g:slime_python_ipython = 1 au FileType python setlocal expandtab au FileType python setlocal tabstop=4 au FileType python setlocal shiftwidth=4 " Run Section au FileType python nmap <buffer> <localleader><localleader> <Plug>SlimeParagraphSend " Run Selected text au FileType python vmap <buffer> <localleader><localleader> <Plug>SlimeRegionSend " CD to directory of current file au FileType python nmap <buffer> <localleader>c :SlimeSend0('cd '.expand('%:p:h'))<CR> " let python_highlight_all = 1 " au FileType python syn keyword pythonDecorator True None False self " au BufNewFile,BufRead *.jinja set syntax=htmljinja " au BufNewFile,BufRead *.mako set ft=mako " au FileType python map <buffer> F :set foldmethod=indent<cr> " au FileType python inoremap <buffer> $r return " au FileType python inoremap <buffer> $i import " au FileType python inoremap <buffer> $p print " au FileType python inoremap <buffer> $f #--- <esc>a " au FileType python map <buffer> <leader>1 /class " au FileType python map <buffer> <leader>2 /def " au FileType python map <buffer> <leader>C ?class " au FileType python map <buffer> <leader>D ?def </pre> </div> </div> </div> <div id="outline-container-orgdee16ca" class="outline-3"> <h3 id="orgdee16ca">Matlab</h3> <div class="outline-text-3" id="text-orgdee16ca"> <div class="org-src-container"> <pre class="src src-vimrc">" Run Section (delimited by %%) au FileType matlab nmap <buffer> <localleader>mm <Plug>SlimeParagraphSend let g:which_key_map_local.m = { 'name' : '+matlab' } " Run either Selected text au FileType matlab vmap <buffer> <localleader>mm <Plug>SlimeRegionSend let g:which_key_map_local.mm = 'run-code' func! GetSelectedText() normal gv"xy let result = getreg("x") normal gv return result endfunc " Help on the current selection au FileType matlab vmap <buffer> <localleader>mh :<C-U>SlimeSend0('help '.expand(GetSelectedText()))<CR> let g:which_key_map_local.mh = 'help' " Documentation on the current selection au FileType matlab vmap <buffer> <localleader>mH :<C-U>SlimeSend0('doc '.expand(GetSelectedText()))<CR> let g:which_key_map_local.mh = 'help' " Open the current file in the Matlab Editor (usefull for debuging) au FileType matlab nmap <buffer> <localleader>me :SlimeSend0('edit '.expand('%:p'))<CR> let g:which_key_map_local.me = 'edit-gui' " Run all the file au FileType matlab nmap <buffer> <localleader>mr :SlimeSend0('run '.expand('%:t'))<CR> let g:which_key_map_local.mr = 'run-file' " Send "cd filepath" to matlab au FileType matlab nmap <buffer> <localleader>mc :SlimeSend0('cd '.expand('%:p:h'))<CR> let g:which_key_map_local.mr = 'cd-file' " Open workspace au FileType matlab nmap <buffer> <localleader>mw :SlimeSend0('workspace')<CR> let g:which_key_map_local.mr = 'workspace' </pre> </div> </div> </div> <div id="outline-container-org27ccd54" class="outline-3"> <h3 id="org27ccd54">Save Which Key Configuration</h3> <div class="outline-text-3" id="text-org27ccd54"> <div class="org-src-container"> <pre class="src src-vimrc">call which_key#register(',', "g:which_key_map_local") </pre> </div> </div> </div> </div> <div id="outline-container-org48e4b16" class="outline-2"> <h2 id="org48e4b16">Plugins Config</h2> <div class="outline-text-2" id="text-org48e4b16"> </div> <div id="outline-container-org4cf6f54" class="outline-3"> <h3 id="org4cf6f54">junegunn/fzf</h3> <div class="outline-text-3" id="text-org4cf6f54"> <div class="org-src-container"> <pre class="src src-vimrc">" This is the default extra key bindings let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-h': 'split', \ 'ctrl-v': 'vsplit' } " [[B]Commits] Customize the options used by 'git log': let g:fzf_commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"' let g:fzf_colors = \ { 'fg': ['fg', 'Normal'], \ 'bg': ['bg', 'Normal'], \ 'hl': ['fg', 'Comment'], \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], \ 'hl+': ['fg', 'Statement'], \ 'info': ['fg', 'PreProc'], \ 'prompt': ['fg', 'Conditional'], \ 'pointer': ['fg', 'Exception'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] } function! s:fzf_statusline() " Override statusline as you like highlight fzf1 ctermfg=161 ctermbg=251 highlight fzf2 ctermfg=23 ctermbg=251 highlight fzf3 ctermfg=237 ctermbg=251 setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f endfunction autocmd! User FzfStatusLine call <SID>fzf_statusline() </pre> </div> </div> </div> <div id="outline-container-org32fa6ff" class="outline-3"> <h3 id="org32fa6ff">autozimu/LanguageClient-neovim</h3> <div class="outline-text-3" id="text-org32fa6ff"> <div class="org-src-container"> <pre class="src src-vimrc">let g:LanguageClient_serverCommands = { \ 'matlab': ['java', ' -Djava.library.path=$MATLABROOT/bin/glnxa64 -cp $MATLABROOT/extern/engines/java/jar/engine.jar:$MATLABROOT/java/jar/jmi.jar:/home/thomas/github/matlab-langserver/build/libs/lsp-matlab-0.1.jar org.tokor.lspmatlab.Application'], \ } nnoremap <F5> :call LanguageClient_contextMenu()<CR> " Or map each action separately nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR> nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR> nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR> </pre> </div> </div> </div> <div id="outline-container-org84ce020" class="outline-3"> <h3 id="org84ce020">JamshedVesuna/vim-markdown-preview</h3> <div class="outline-text-3" id="text-org84ce020"> <div class="org-src-container"> <pre class="src src-vimrc">let vim_markdown_preview_github=1 let vim_markdown_preview_browser='Google Chrome' let vim_markdown_preview_temp_file=1 " let vim_markdown_preview_pandoc=1 </pre> </div> </div> </div> <div id="outline-container-org10c55a5" class="outline-3"> <h3 id="org10c55a5">mhinz/vim-signify</h3> <div class="outline-text-3" id="text-org10c55a5"> <div class="org-src-container"> <pre class="src src-vimrc">let g:signify_vcs_list = ['git'] let g:signify_disable_by_default = 1 </pre> </div> </div> </div> <div id="outline-container-org92ae007" class="outline-3"> <h3 id="org92ae007">Deoplete</h3> <div class="outline-text-3" id="text-org92ae007"> <div class="org-src-container"> <pre class="src src-vimrc">let g:deoplete#enable_at_startup = 1 " let g:deoplete#omni#functions = {} " set completeopt=longest,menuone,preview " let g:deoplete#sources = {} " let g:deoplete#enable_smart_case = 1 " call deoplete#custom#set('ultisnips', 'matchers', ['matcher_fuzzy']) </pre> </div> </div> </div> <div id="outline-container-org9049006" class="outline-3"> <h3 id="org9049006">SirVer/ultisnips</h3> <div class="outline-text-3" id="text-org9049006"> <div class="org-src-container"> <pre class="src src-vimrc">let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnip' " inoremap <silent><expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" let g:UltiSnipsExpandTrigger="<C-j>" " let g:UltiSnipsJumpForwardTrigger="<tab>" " let g:UltiSnipsJumpBackwardTrigger="<s-tab>" </pre> </div> </div> </div> <div id="outline-container-org1bc629a" class="outline-3"> <h3 id="org1bc629a">honza/vim-snippets</h3> <div class="outline-text-3" id="text-org1bc629a"> <div class="org-src-container"> <pre class="src src-vimrc">let g:snipMate = {} let g:snipMate.scope_aliases = {} </pre> </div> </div> </div> <div id="outline-container-org14b3d73" class="outline-3"> <h3 id="org14b3d73">itchyny/lightline.vim</h3> <div class="outline-text-3" id="text-org14b3d73"> <div class="org-src-container"> <pre class="src src-vimrc">function! LightlineObsession() return '%{ObsessionStatus("")}' endfunction " \ 'colorscheme': 'gruvbox', let g:lightline = { \ 'colorscheme': 'solarized', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'filename', 'modified', 'fugitive', 'obsession' ] ] \ }, \ 'component': { \ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}' \ }, \ 'component_expand': { \ 'obsession': 'LightlineObsession' \ }, \ 'component_visible_condition': { \ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())' \ }, \ 'separator': { 'left': '', 'right': '' }, \ 'subseparator': { 'left': "|", 'right': "|" } \ } </pre> </div> </div> </div> <div id="outline-container-org09d4b44" class="outline-3"> <h3 id="org09d4b44">Autopairs</h3> <div class="outline-text-3" id="text-org09d4b44"> <div class="org-src-container"> <pre class="src src-vimrc">" Incompatibilité entre auto-pairs et clang-complete let g:AutoPairsMapCR = 0 imap <silent><CR> <CR><Plug>AutoPairsReturn </pre> </div> </div> </div> <div id="outline-container-orgf99a421" class="outline-3"> <h3 id="orgf99a421">Yggdroot/indentLine</h3> <div class="outline-text-3" id="text-orgf99a421"> <div class="org-src-container"> <pre class="src src-vimrc">" :IndentLinesToggle toggles lines on and off. let g:indentLine_color_term = 239 </pre> </div> </div> </div> <div id="outline-container-orga9a8a6b" class="outline-3"> <h3 id="orga9a8a6b">ryanoasis/vim-devicons</h3> <div class="outline-text-3" id="text-orga9a8a6b"> <div class="org-src-container"> <pre class="src src-vimrc">let g:webdevicons_enable_ctrlp = 1 </pre> </div> </div> </div> <div id="outline-container-org1f543aa" class="outline-3"> <h3 id="org1f543aa">junegunn/goyo.vim</h3> <div class="outline-text-3" id="text-org1f543aa"> <div class="org-src-container"> <pre class="src src-vimrc">let g:goyo_width=100 let g:goyo_margin_top = 2 let g:goyo_margin_bottom = 2 </pre> </div> <p> This is for soft line breaks </p> <div class="org-src-container"> <pre class="src src-vimrc">function! s:goyo_enter() set wrap linebreak nolist textwidth=0 wrapmargin=0 let b:quitting = 0 let b:quitting_bang = 0 autocmd QuitPre <buffer> let b:quitting = 1 cabbrev <buffer> q! let b:quitting_bang = 1 <bar> q! endfunction </pre> </div> <p> Quit Vim if this is the only remaining buffer </p> <div class="org-src-container"> <pre class="src src-vimrc">function! s:goyo_leave() if b:quitting && len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 if b:quitting_bang qa! else qa endif endif endfunction </pre> </div> <div class="org-src-container"> <pre class="src src-vimrc">autocmd! User GoyoEnter call <SID>goyo_enter() autocmd! User GoyoLeave call <SID>goyo_leave() </pre> </div> </div> </div> <div id="outline-container-orgd3afff1" class="outline-3"> <h3 id="orgd3afff1">tpope/vim-surround</h3> <div class="outline-text-3" id="text-orgd3afff1"> <div class="org-src-container"> <pre class="src src-vimrc">vmap Si S(i_<esc>f) au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc> " surroung un visual mode : use S, then b to make the text bold in markdown let g:surround_{char2nr('b')} = "__\r__" </pre> </div> </div> </div> <div id="outline-container-org33b7648" class="outline-3"> <h3 id="org33b7648">Vim-Markdown</h3> <div class="outline-text-3" id="text-org33b7648"> <div class="org-src-container"> <pre class="src src-vimrc">let g:vim_markdown_folding_disabled = 1 let g:vim_markdown_conceal = 0 let g:vim_markdown_toc_autofit = 1 let g:vim_markdown_toml_frontmatter = 1 let g:tex_conceal = "" </pre> </div> </div> </div> <div id="outline-container-org9d0fb36" class="outline-3"> <h3 id="org9d0fb36">Neomake</h3> <div class="outline-text-3" id="text-org9d0fb36"> <div class="org-src-container"> <pre class="src src-vimrc">" Latex autocmd! BufWritePost *.tex Neomake let g:neomake_tex_chktex_maker = { \ 'exe': 'chktex', \ 'args': ['--inputfiles'], \ 'errorformat': \ '%EError %n in %f line %l: %m,' . \ '%WWarning %n in %f line %l: %m,' . \ '%WMessage %n in %f line %l: %m,' . \ '%Z%p^,' . \ '%-G%.%#' \ } let g:neomake_tex_enabled_makers = ['chktex'] " Matlab autocmd! BufWritePost *.m Neomake let g:neomake_matlab_mlint_maker = { \ 'exe': 'mlint', \ 'mapexpr': "neomake_bufname.':'.v:val", \ 'errorformat': \ '%f:L %l (C %c): %m,' . \ '%f:L %l (C %c-%*[0-9]): %m,', \ } let g:neomake_matlab_enabled_makers = ['mlint'] </pre> </div> </div> </div> <div id="outline-container-org3612d41" class="outline-3"> <h3 id="org3612d41">lervag/vimtex</h3> <div class="outline-text-3" id="text-org3612d41"> <div class="org-src-container"> <pre class="src src-vimrc">" let g:tex_conceal="" " autocmd FileType tex let b:vimtex_main = 'main.tex' " let g:vimtex_mappings_enabled=0 </pre> </div> </div> </div> <div id="outline-container-org39c6e0f" class="outline-3"> <h3 id="org39c6e0f">jpalardy/vim-slime</h3> <div class="outline-text-3" id="text-org39c6e0f"> <div class="org-src-container"> <pre class="src src-vimrc">if exists('$TMUX') let g:slime_target = "tmux" let g:slime_default_config = {"socket_name": split($TMUX, ",")[0], "target_pane": ":.2"} let g:slime_dont_ask_default = 1 endif </pre> </div> </div> </div> <div id="outline-container-orgc867cde" class="outline-3"> <h3 id="orgc867cde">mhinz/vim-grepper</h3> <div class="outline-text-3" id="text-orgc867cde"> <div class="org-src-container"> <pre class="src src-vimrc">" nnoremap <leader>G :Grepper -tool ag<cr> " nmap gs <plug>(GrepperOperator) " xmap gs <plug>(GrepperOperator) </pre> </div> </div> </div> <div id="outline-container-orgb9f5f6e" class="outline-3"> <h3 id="orgb9f5f6e">Editor config</h3> <div class="outline-text-3" id="text-orgb9f5f6e"> <div class="org-src-container"> <pre class="src src-vimrc">" To ensure that this plugin works well with Tim Pope's fugitive, use the following patterns array: let g:EditorConfig_exclude_patterns = ['fugitive://.*'] </pre> </div> </div> </div> <div id="outline-container-org87fa133" class="outline-3"> <h3 id="org87fa133">Polyglot</h3> <div class="outline-text-3" id="text-org87fa133"> <div class="org-src-container"> <pre class="src src-vimrc">let g:polyglot_disabled = ['latex'] </pre> </div> </div> </div> </div> <div id="outline-container-org75b0074" class="outline-2"> <h2 id="org75b0074">Bindings</h2> <div class="outline-text-2" id="text-org75b0074"> </div> <div id="outline-container-org6a2693e" class="outline-3"> <h3 id="org6a2693e">Vim Which Key</h3> <div class="outline-text-3" id="text-org6a2693e"> <div class="org-src-container"> <pre class="src src-vimrc">nnoremap <silent> <leader> :WhichKey '<Space>'<cr> let g:which_key_map = {} </pre> </div> </div> </div> <div id="outline-container-orgac7157e" class="outline-3"> <h3 id="orgac7157e">Direct ones</h3> <div class="outline-text-3" id="text-orgac7157e"> <div class="org-src-container"> <pre class="src src-vimrc">" Switch with last buffer nnoremap <leader><Tab> :e #<cr> " let g:which_key_map.<Tab> = 'last-buffer' </pre> </div> </div> </div> <div id="outline-container-orgb41f651" class="outline-3"> <h3 id="orgb41f651">Quit</h3> <div class="outline-text-3" id="text-orgb41f651"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.q = { 'name' : '+quit' } " Quit nnoremap <leader>qq :qa<cr> let g:which_key_map.q.q = 'quit' " Quit - Force nnoremap <leader>qQ :qa!<cr> let g:which_key_map.q.Q = 'quit-force' " Quit - Save nnoremap <leader>qw :wq<cr> let g:which_key_map.q.w = 'quit-save' " Quit - Save all nnoremap <leader>qW :wqa<cr> let g:which_key_map.q.W = 'quit-save-all' </pre> </div> </div> </div> <div id="outline-container-org9159c40" class="outline-3"> <h3 id="org9159c40">Files</h3> <div class="outline-text-3" id="text-org9159c40"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.f = { 'name' : '+files' } " Fast saving nnoremap <leader>fs :w!<cr> let g:which_key_map.f.s = 'save-file' " Fast saving all nnoremap <leader>fS :wa!<cr> let g:which_key_map.f.S = 'save-all' " Find Files noremap <leader>ff :Files<CR> let g:which_key_map.f.f = 'find-file' " Find File corresping to Word nnoremap <leader>fw \ :call fzf#vim#files('.', fzf#vim#with_preview({'options': ['--query', expand('<cword>')]}))<cr> let g:which_key_map.f.w = 'find-file-word' </pre> </div> </div> </div> <div id="outline-container-org73faea0" class="outline-3"> <h3 id="org73faea0">Buffers</h3> <div class="outline-text-3" id="text-org73faea0"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.b = { 'name' : '+buffers' } " Buffer Create noremap <leader>bc :enew<cr> let g:which_key_map.b.c = 'buffer-create' " Buffer Delete noremap <leader>bd :Bclose<cr> let g:which_key_map.b.d = 'buffer-delete' " Buffer Delete all others noremap <leader>bD :bufdo bd<cr> let g:which_key_map.b.D = 'buffer-delete-others' " Buffer Next noremap <leader>bn :bnext<cr> let g:which_key_map.b.n = 'buffer-next' " Buffer Previous noremap <leader>bp :bprevious<cr> let g:which_key_map.b.p = 'buffer-previous' " Find Buffers noremap <leader>bf :Buffers<CR> let g:which_key_map.b.f = 'buffer-find' " Buffer Home (startify) noremap <leader>bh :Startify<CR> let g:which_key_map.b.h = 'buffer-home' " CD to buffer path noremap <leader>bw :cd %:p:h<CR>:pwd<CR> let g:which_key_map.b.w = 'buffer-pwd' </pre> </div> </div> </div> <div id="outline-container-orgb222501" class="outline-3"> <h3 id="orgb222501">Tabs</h3> <div class="outline-text-3" id="text-orgb222501"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.t = { 'name' : '+tabs' } " Let 'tt' toggle between this and the last accessed tab let g:lasttab = 1 au TabLeave * let g:lasttab = tabpagenr() " Tab New nnoremap <leader>tc :tabnew<cr> let g:which_key_map.t.c = 'tab-create' " Tab Delete nnoremap <leader>td :tabclose<cr> let g:which_key_map.t.d = 'tab-delete' " Tab Maximize nnoremap <leader>tD :tabonly<cr> let g:which_key_map.t.D = 'tab-delete-others' " Tab Left nnoremap <leader>th gt<cr> let g:which_key_map.t.h = 'tab-left' " Tab Right nnoremap <leader>tl gT<cr> let g:which_key_map.t.l = 'tab-right' " Tab Move Left nnoremap <leader>tH :tabmove -1<cr> let g:which_key_map.t.H = 'tab-move-left' " Tab Move Right nnoremap <leader>tL :tabmove +1<cr> let g:which_key_map.t.L = 'tab-move-right' " Tab Toggle nnoremap <Leader>tt :exe "tabn ".g:lasttab<CR> let g:which_key_map.t.t = 'tab-toggle' </pre> </div> </div> </div> <div id="outline-container-org8c7bf07" class="outline-3"> <h3 id="org8c7bf07">Terminals</h3> <div class="outline-text-3" id="text-org8c7bf07"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.T = { 'name' : '+terminals' } " Quickly create a new terminal in a new tab nnoremap <Leader>Tc :tab new<CR>:term<CR> let g:which_key_map.T.c = 'term-create' " Quickly create a new terminal in a vertical split nnoremap <Leader>T/ :vsplit<CR>:term<CR> " let g:which_key_map.T./ = 'term-vert' " Quickly create a new terminal in a horizontal split nnoremap <Leader>T- :split<CR>:term<CR> " let g:which_key_map.T.- = 'term-hor' </pre> </div> </div> </div> <div id="outline-container-org04030fd" class="outline-3"> <h3 id="org04030fd">Splits / Windows</h3> <div class="outline-text-3" id="text-org04030fd"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.w = { 'name' : '+windows' } " Split Horizontal nnoremap <leader>w- :split<cr> " let g:which_key_map.w.- = 'win-hor' " Split Vertical nnoremap <leader>w/ :vsplit<cr> " let g:which_key_map.w./ = 'win-vert' " Split Maximize nnoremap <leader>wD <C-w>o let g:which_key_map.w.D = 'win-delete-others' " Split Delete nnoremap <leader>wd <C-w>q let g:which_key_map.w.d = 'win-delete' " Split Go Left nnoremap <leader>wh :wincmd h<CR> let g:which_key_map.w.h = 'win-left' " Split Go Down nnoremap <leader>wj :wincmd j<CR> let g:which_key_map.w.j = 'win-down' " Split Go Up nnoremap <leader>wk :wincmd k<CR> let g:which_key_map.w.k = 'win-up' " Split Go Right nnoremap <leader>wl :wincmd l<CR> let g:which_key_map.w.l = 'win-right' " Split to Tab nnoremap <leader>wt <C-w>T let g:which_key_map.w.t = 'win-make-tab' " Find window nnoremap <leader>wf :Windows<CR> let g:which_key_map.w.f = 'win-find' " Maximize window nnoremap <leader>wm :call MaximizeToggle()<CR> let g:which_key_map.w.m = 'win-maximize' function! MaximizeToggle() if exists("s:maximize_session") exec "source " . s:maximize_session call delete(s:maximize_session) unlet s:maximize_session let &hidden=s:maximize_hidden_save unlet s:maximize_hidden_save else let s:maximize_hidden_save = &hidden let s:maximize_session = tempname() set hidden exec "mksession! " . s:maximize_session only endif endfunction </pre> </div> </div> </div> <div id="outline-container-org512741f" class="outline-3"> <h3 id="org512741f">Check Spell</h3> <div class="outline-text-3" id="text-org512741f"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.S = { 'name' : '+spell-check' } " CheckSpell Toggle noremap <leader>St :setlocal spell!<cr> let g:which_key_map.S.t = 'spell-toggle' " CheckSpell Correct noremap <leader>Sc z= let g:which_key_map.S.c = 'spell-correct' " CheckSpell Do first noremap <leader>SC 1z= let g:which_key_map.S.C = 'spell-correct-first' " CheckSpell Language noremap <leader>Sl :set spelllang= let g:which_key_map.S.l = 'spell-language' " CheckSpell Next noremap <leader>Sn ]s let g:which_key_map.S.n = 'spell-next' " CheckSpell Next and correct noremap <leader>SN ]s1z= let g:which_key_map.S.N = 'spell-next-correct' " CheckSpell Previous noremap <leader>Sp [s let g:which_key_map.S.p = 'spell-prev' " CheckSpell Previous and correct noremap <leader>SP [s1z= let g:which_key_map.S.P = 'spell-prev-correct' " CheckSpell Add to dictionnary noremap <leader>Sa zg let g:which_key_map.S.a = 'spell-add-dict' </pre> </div> </div> </div> <div id="outline-container-orga3f84f4" class="outline-3"> <h3 id="orga3f84f4">Make</h3> <div class="outline-text-3" id="text-orga3f84f4"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.m = { 'name' : '+make' } " Make Make nnoremap <leader>mm :Make -B<CR> let g:which_key_map.m.m = 'make' " Make Clean nnoremap <leader>mc :Make clean<CR> let g:which_key_map.m.c = 'make-clean' " Make Force nnoremap <leader>mf :Make! -B<CR> let g:which_key_map.m.f = 'make-force' " Make Run nnoremap <leader>mr :Make! run<cr> let g:which_key_map.m.r = 'make-run' " Make Open nnoremap <leader>mo :make! open<cr> let g:which_key_map.m.o = 'make-open' </pre> </div> </div> </div> <div id="outline-container-orgafc2d25" class="outline-3"> <h3 id="orgafc2d25">Search</h3> <div class="outline-text-3" id="text-orgafc2d25"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.s = { 'name' : '+search' } " Search History noremap <leader>sh :History<CR> let g:which_key_map.s.h = 'search-history' " Search Tags noremap <leader>sT :Tags<CR> let g:which_key_map.s.T = 'search-tags' " Search All noremap <leader>sa :Rg<CR> let g:which_key_map.s.g = 'search-all' " Search Word noremap <leader>sw :exe ':Rg ' . expand('<cword>')<CR> let g:which_key_map.s.w = 'search-word' " Search todo keyboard nnoremap <leader>st :Grepper -tool rg -query TODO<CR> let g:which_key_map.s.t = 'search-todos' </pre> </div> </div> </div> <div id="outline-container-org090f24d" class="outline-3"> <h3 id="org090f24d">GIT</h3> <div class="outline-text-3" id="text-org090f24d"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.g = { 'name' : '+git' } " Git Gutter nnoremap <silent><leader>gg :SignifyToggle<cr> let g:which_key_map.g.g = 'git-' " Git Gutter Highlight nnoremap <silent><leader>gG :SignifyToggleHighlight<cr> let g:which_key_map.g.G = 'git-' " Git Commit nnoremap <leader>gc :Gcommit<CR> let g:which_key_map.g.c = 'git-commit' " Git Status nnoremap <leader>gs :Gstatus<CR> let g:which_key_map.g.s = 'git-status' " Git Diff nnoremap <leader>gd :Gdiff<CR> let g:which_key_map.g.d = 'git-diff' " Git Blame nnoremap <leader>gb :Gblame<CR> let g:which_key_map.g.b = 'git-blame' " Git Visualise nnoremap <leader>gv :GV<CR> let g:which_key_map.g.v = 'git-visualize' " Git File (visualise) nnoremap <leader>gF :GV!<CR> let g:which_key_map.g.F = 'git-file' " Git Find Commits noremap <leader>gf :Commits<CR> let g:which_key_map.g.f = 'git-find-commit' </pre> </div> </div> </div> <div id="outline-container-orgfb0a00a" class="outline-3"> <h3 id="orgfb0a00a">Errors</h3> <div class="outline-text-3" id="text-orgfb0a00a"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.e = { 'name' : '+errors' } function! s:GetBufferList() redir =>buflist silent! ls redir END return buflist endfunction function! ToggleLocationList() let curbufnr = winbufnr(0) for bufnum in map(filter(split(s:GetBufferList(), '\n'), 'v:val =~ "Location List"'), 'str2nr(matchstr(v:val, "\\d\\+"))') if curbufnr == bufnum lclose return endif endfor let winnr = winnr() let prevwinnr = winnr("#") let nextbufnr = winbufnr(winnr + 1) try lopen catch /E776/ echohl ErrorMsg echo "Location List is Empty." echohl None return endtry if winbufnr(0) == nextbufnr lclose if prevwinnr > winnr let prevwinnr-=1 endif else if prevwinnr > winnr let prevwinnr+=1 endif endif " restore previous window exec prevwinnr."wincmd w" exec winnr."wincmd w" endfunction " Error Toggle nnoremap <silent><leader>ee :call ToggleLocationList()<CR> let g:which_key_map.e.e = 'error-toggle' " Error Open nnoremap <silent><leader>eo :lopen<CR> let g:which_key_map.e.o = 'error-open' " Error Close nnoremap <silent><leader>ec :lclose<CR> let g:which_key_map.e.c = 'error-close' " Error Next nnoremap <silent><leader>en :lnext<CR> let g:which_key_map.e.n = 'error-next' " Error Previous nnoremap <silent><leader>ep :lprevious<CR> let g:which_key_map.e.p = 'error-previous' </pre> </div> </div> </div> <div id="outline-container-org2e47a1e" class="outline-3"> <h3 id="org2e47a1e">Text</h3> <div class="outline-text-3" id="text-org2e47a1e"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.x = { 'name' : '+text' } " Start interactive EasyAlign in visual mode (e.g. vipga) and for a motion xmap <leader>xa <Plug>(EasyAlign) nmap <leader>xa <Plug>(EasyAlign) let g:which_key_map.x.a = 'text-align' " Indent all file nnoremap <leader>x= mzgg=G`z " let g:which_key_map.x.= = 'text-indent-file' " Custom Multiple Cursor " http://www.kevinli.co/posts/2017-01-19-multiple-cursors-in-500-bytes-of-vimscript/ let g:mc = "y/\\V\<C-r>=escape(@\", '/')\<CR>\<CR>" " Multiple Cursor nnoremap <leader>xm *``cgn vnoremap <expr> <leader>xm g:mc . "``cgn" let g:which_key_map.x.m = 'multiple-cursor' " Multiple Cursor - reserve direction nnoremap <leader>xM *``cgN vnoremap <expr> <leader>xM g:mc . "``cgN" let g:which_key_map.x.M = 'multiple-cursor-reverse' " Delete trainling Whitespaces fun! TrimWhitespace() let l:save = winsaveview() keeppatterns %s/\s\+$//e call winrestview(l:save) endfun nnoremap <leader>xt :call TrimWhitespace()<CR> let g:which_key_map.x.t = 'delete-trailing-whitespaces' </pre> </div> </div> </div> <div id="outline-container-org7ee13d9" class="outline-3"> <h3 id="org7ee13d9">Config</h3> <div class="outline-text-3" id="text-org7ee13d9"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.c = { 'name' : '+config' } let s:activatedsh = 0 function! ToggleSyntaxH() if s:activatedsh == 0 let s:activatedsh = 1 set synmaxcol=800 else let s:activatedsh = 0 set synmaxcol=100 endif endfunction " Toggle Syntax column nnoremap <leader>cs :call ToggleSyntaxH()<CR> let g:which_key_map.c.s = 'toggle-syntax-col' let s:activatedh = 0 function! ToggleH() if s:activatedh == 0 let s:activatedh = 1 match Search '\%>80v.\+' else let s:activatedh = 0 match none endif endfunction " Toggle Highlight nnoremap <leader>ch :call ToggleH()<CR> let g:which_key_map.c.h = 'toggle-highlight' " Reload vim config noremap <Leader>cr :source $MYVIMRC<CR> let g:which_key_map.c.e = 'reload-config' " Edit vim config noremap <Leader>ce :e $MYVIMRC<CR> let g:which_key_map.c.e = 'edit-config' " Disable highlight noremap <silent> <leader>c<CR> :noh<CR> let g:which_key_map.c.enter = 'disable-highlight' " Theme noremap <silent> <leader>ct :noh<CR> let g:which_key_map.c.t = 'choose-theme' </pre> </div> </div> </div> <div id="outline-container-org480d260" class="outline-3"> <h3 id="org480d260">Insert</h3> <div class="outline-text-3" id="text-org480d260"> <div class="org-src-container"> <pre class="src src-vimrc">let g:which_key_map.i = { 'name' : '+insert' } " Insert Snippet noremap <Leader>is :Snippets<CR> let g:which_key_map.i.s = 'insert-snippet' </pre> </div> </div> </div> <div id="outline-container-org8838dd6" class="outline-3"> <h3 id="org8838dd6">Save Which Key Configuration</h3> <div class="outline-text-3" id="text-org8838dd6"> <div class="org-src-container"> <pre class="src src-vimrc">call which_key#register('<Space>', "g:which_key_map") </pre> </div> </div> </div> </div> </div> <div id="postamble" class="status"> <p class="author">Author: Dehaeze Thomas</p> <p class="date">Created: 2020-11-03 mar. 16:26</p> </div> </body> </html>