Utilisateur:Goulven
Voici ma configuration Vim/Neovim. Le mappage de l'ensemble des touches à été revu et repensé pour une adaptation logique et efficace de Vim avec le bépo. Attention: la double virgule (,,) est utilisée à la place de ESC (voir mémo à la fin). J'ai volontairement laissé les plugins et skins pour exemple.
Le fichier .vimrc :
" .vimrc " Configuration Bépo " " Goulven " " Ajouter vim depuis le dépot: " sudo add-apt-repository ppa:jonathonf/vim " sudo apt update " set nocompatible set encoding=utf-8 set fileencoding=utf-8 set number set title set ruler set visualbell set noerrorbells set lbr! set mouse=a set mousehide set ttyfast set wrap set textwidth=80 set history=20 set diffopt=vertical " Délai de basculement du mode insertion/normal set timeoutlen=1000 "pour les touches remappées set ttimeoutlen=0 "pour les codes de touches (touche Échap) " Recherche set ignorecase set smartcase set incsearch set hlsearch " Indentation set autoindent set smartindent set cindent set tabstop=4 set shiftwidth=4 set expandtab set backspace=indent,eol,start " Lecture/enregistrement set autoread set autowrite autocmd FocusLost,TabLeave * :wall if has("autocmd") autocmd! bufwritepost .vimrc source ~/.vimrc endif " Coloration syntaxique if has("syntax") syntax on endif " Affichage set showcmd set showmode set shortmess+=I set cursorline " set showmatch " Folding set foldcolumn=3 set foldmethod=manual " Correction orthographique "set spelllang=en,fr "set spell "set spellsuggest=5 filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " Chargement du gestionnaire de plugin vundle " https://github.com/gmarik/Vundle.git ~/.vim/bundle/Vundle.vim Plugin 'gmarik/Vundle.vim' Plugin 'scrooloose/syntastic' Plugin 'scrooloose/nerdtree' Plugin 'scrooloose/nerdcommenter' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'sirver/ultisnips' Plugin 'honza/vim-snippets' Plugin 'tpope/vim-fugitive' Plugin 'tpope/vim-surround' " Plugin 'tpope/vim-repeat' " Plugin 'tpope/vim-unimpaired' Plugin 'ervandew/supertab' Plugin 'valloric/youcompleteme' Plugin 'kien/ctrlp.vim' Plugin 'majutsushi/tagbar' Plugin 'raimondi/delimitmate' Plugin 'nathanaelkane/vim-indent-guides' Plugin 'kien/rainbow_parentheses.vim' Plugin 'morhetz/gruvbox' Plugin 'NLKNguyen/papercolor-theme' Plugin 'drewtempelmeyer/palenight.vim' Plugin 'octol/vim-cpp-enhanced-highlight' Plugin 'bfrg/vim-cpp-modern' Plugin 'quark-zju/vim-cpp-auto-include' Plugin 'andrewradev/splitjoin.vim' call vundle#end() filetype plugin indent on filetype plugin on " Syntastic set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list=1 let g:syntastic_auto_loc_list=1 let g:syntastic_check_on_open=1 let g:syntastic_check_on_wq=0 let g:syntastic_cpp_compiler_options='-std=c++17' " The NERD Tree let g:NERDTreeMapOpenVSplit='v' " The NERD Commenter let g:NERDSpaceDelims=1 let g:NERDCompactSexyComs=1 let g:NERDDefaultAlign='left' let g:NERDAltDelims_java=1 let g:NERDCustomDelimiters={ 'c': { 'left': '/**','right': '*/'}} let g:NERDCommentEmptyLines=1 let g:NERDTrimTrailingWhitespaces=1 " vim-airline " Attention installer le paquet fonts-powerline " ou bien git clone https://github.com/powerline/fonts.git --depth=1 " cd fonts && ./install.sh let g:airline#extensions#tabline#enabled=1 let g:airline_theme='hybridline' let g:airline_powerline_fonts=1 let g:airline#extensions#tagbar#enabled = 1 let g:airline#extensions#tmuxline#enabled = 1 "Ultisnips let g:UltiSnipsSnippetsDir="~/.vim/UltiSnips" let g:UltiSnipsEditSplit="vertical" " let g:UltiSnipsJumpForwardTrigger="<C-r>" " let g:UltiSnipsJumpBackwardTrigger="<C-t> let g:UltiSnipsExpandTrigger = "<tab>" let g:UltiSnipsJumpForwardTrigger = "<tab>" let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"" " make YCM compatible with UltiSnips (using supertab) let g:ycm_key_list_select_completion = ['<C-r>', '<Down>'] let g:ycm_key_list_previous_completion = ['<C-t>', '<Up>'] " let g:ycm_server_keep_logfiles = 1 " let g:ycm_server_log_level = 'debug' let g:SuperTabDefaultCompletionType = '<C-n>' let g:omni_sql_no_default_maps = 1 " vim-surround " Remappage des touches 'opérateur' " " d devient e " c devient x " y devient c " " if exists("g:surround_bepo_mappings") " nmap es <Plug>Dsurround " nmap xs <Plug>Csurround " nmap xS <Plug>CSurround " nmap cs <Plug>Ysurround " nmap cS <Plug>YSurround " nmap css <Plug>Yssurround " nmap cSs <Plug>YSsurround " xmap <leader>S <Plug>VSurround " xmap <leader>Sg <Plug>VgSurround " endif " " Puis on désactive le mappage de surround par défaut " et on ajoute le mappage leader_s let g:surround_no_mappings=1 let g:surround_bepo_mappings=1 " CtrlP let g:ctrlp_show_hidden=1 let g:ctrlp_working_path_mode=0 set wildignore+=*/tmp/*,*.so,*.swp,*.zip " Unix set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe " Windows set wildignore+=*.a,*.o set wildignore+=*.bmp,*.gif,*.ico,*.jpg,*.png set wildignore+=.DS_Store,.git,.hg,.svn set wildignore+=*~,*.tmp set wildignore+=*/Nas/* let g:ctrlp_custom_ignore='\v[\/]\.(git|hg|svn)$' let g:ctrlp_custom_ignore={ \ 'dir': '\v[\/]\.(git|hg|svn)$', \ 'file': '\v\.(exe|so|dll)$', \ 'link': 'some_bad_symbolic_links', \} " Indent Guides let g:indent_guides_enable_on_vim_startup=0 " DelimitMate let delimitMate_expand_cr=1 let delimitMate_expand_space=1 let delimitMate_smart_quotes='\w\%#' " Rainbow Parentheses au VimEnter * RainbowParenthesesToggle au syntax * RainbowParenthesesLoadRound au syntax * RainbowParenthesesLoadSquare au syntax * RainbowParenthesesLoadBraces " Theme gruvbox if has ('gui_running') set guifont=Droid\ Sans\ Mono\ for\ Powerline\ Regular\ 16 colorscheme gruvbox set background=dark else set background=light colorscheme PaperColor endif " vim-cpp-auto-include " autocmd BufWritePre /home/goulven/Devel/**.cpp :ruby CppAutoInclude::process "" mapping du clavier bépo->qwerty en mode normal "" " n Normal mode map. Defined using ':nmap' or ':nnoremap'. " i Insert mode map. Defined using ':imap' or ':inoremap'. " v Visual and select mode map. Defined using ':vmap' or ':vnoremap'. " x Visual mode map. Defined using ':xmap' or ':xnoremap'. " s Select mode map. Defined using ':smap' or ':snoremap'. " c Command-line mode map. Defined using ':cmap' or ':cnoremap'. " o Operator pending mode map. Defined using ':omap' or ':onoremap'. " " <Space> Normal, Visual and operator pending mode map. Defined using " ':map' or ':noremap'. " ! Insert and command-line mode map. Defined using 'map!' or " 'noremap!'. noremap b ^ onoremap b ^ noremap é b onoremap é b noremap p w onoremap p w noremap o o noremap è <c-w> noremap èè <c-w><c-w> noremap èd <c-w><Up> noremap ès <c-w><Down> noremap èt <c-w><Left> noremap èr <c-w><Right> noremap ^ p noremap v v noremap d k onoremap d k noremap l $ onoremap l $ noremap j / onoremap j / noremap z t onoremap z t noremap w K noremap a a noremap u e onoremap u e noremap i i noremap e d noremap \ \ noremap , ~ inoremap ,, <esc> noremap c y noremap t h onoremap t h noremap s j onoremap s j noremap r l onoremap r l noremap n u noremap m @ nnoremap m @ noremap à r noremap y s noremap x c noremap . . noremap k x noremap ' > noremap q z noremap qq zz noremap gg gg noremap ga g~ noremap h ; onoremap h ; noremap f f onoremap f f noremap B \| onoremap B \| noremap É B onoremap É B noremap P W onoremap P W noremap O O noremap È J noremap \! P noremap D <c-u> onoremap D <c-u> noremap L % noremap J ? onoremap J ? noremap Z T onoremap Z T noremap A A noremap U E onoremap U E noremap I I noremap E D noremap ; = noremap C Y noremap T N onoremap T N noremap S <c-d> onoremap S <c-d> noremap R n onoremap R n noremap N U noremap M ' onoremap M ' noremap À R noremap Y S noremap X C noremap K X noremap ? < noremap Q Z noremap G G onoremap G G noremap H , onoremap H , noremap F F onoremap F F noremap Ç " " remappage text ojects onoremap ap aw onoremap aP aW onoremap ip iw onoremap iP iW onoremap a) as onoremap i) is onoremap aj ap onoremap ij ip noremap " ! " Filtre externe noremap « - " Ligne précédente onoremap « - noremap » + " Ligne suivante onoremap » + noremap @ q " Enregist. macro nnoremap @ q noremap + <c-a> " Incrémenter noremap - <c-x> " Décrémenter noremap / { " Début paragraphe onoremap / { noremap * } " Fin paragraphe onoremap * } noremap = - " DDP du dessous " touches Crtl noremap <c-i> H " Haut écran noremap <c-u> M " Milieu écran noremap <c-a> L " Bas écran noremap <c-o> <c-b> " Page dessus noremap <c-e> <c-f> " Page dessous noremap <c-l> <c-y> " Défil. ligne au dessous noremap <c-j> <c-e> " Défil. ligne au dessus noremap <c-c> <c-]> " Ctags identifiant noremap <c-f> <c-g> " Info curseur noremap <c-q> # " Id tag précédent noremap <c-h> * " Id tag suivant noremap <c-n> & " Refaire noremap <c-b> m " Définir marque noremap <c-m> ` " Marque précédente nnoremap <c-s> :w<CR> " Enregistrer noremap <c-k> Q " Ex mode noremap <c-x> <c-c> " Normal/cancel let mapleader="ç" " extensions ^ du bépo noremap ô :NERDTreeToggle<CR> noremap î :IndentGuidesToggle<CR> noremap û :UltiSnipsEdit<CR> noremap ê :RainbowParenthesesToggle<CR> " mappages avec Leader nmap <leader>t :TagbarToggle<CR> nmap <leader>k ggg?G``
Petit mémo:
,, ESC === Buffers/Window/Tabs === :ls List buffers. :bw Close current buffer. :bn Next buffer. :bp Previous buffer. :sp [file] -open file on horizontal window :vsp [optional-file] -open file on vertical window èè aller a la fenêtre suivante. èn nouvelle fenêtre horizontale (nouveau buffer) ès divise la fenêtre horizontalement (buffer courant) èv divise la fenêtre verticalement (buffer courant) è= egaliser la taille des fenêtres èc close window èo close all windows, leaving: only the current window open èw go to next window èp go to previous window èd go to window above ès go to window below èt go to window on left èr go to window on right èx échanger deux fenêtres èT basculer la fenêtre active dans un nouvel onglet :tabn ou gt onglet suivant :tabp ou gT onglet précédent v :tabc fermer onglet courant :tabo -close all others tabs leaving ONLY the current tab open === Formatage texte === gg,l indenter tout le fichier = Opérateurs = x remplacer e supprimer (effacer) ^ couper et mémoriser dans un registre ga Alterner la casse gu Convertir en minuscule gU Convertir en majuscule K Décaler vers la droite ? Décaler vers la gauche <c-a> Indenter automatiquement = Text objects = ip Mot courant ap Mot courant plus un espace iP MOT courant aP MOT courant plus un espace i) Phrase courante a) Phrase courant plus un espace ij Paragraphe courant aj Paragraphe courant plus une ligne blanche = Text Objects Sélection = ab Autour d'une paire de parenthèses ib À l'intérieur d'une paire de parenthèses aB Autour d'une paire d'accolades iB À l'intérieur d'une paire d'accolades ] [ Crochets ] > ' " ` t === Folding === qf créer un repli qo ouvrir repli qc fermer repli qr ouvrir tous les replis qm fermer tous les replis q[RM] + tous les niveaux qi active/désactive le folding === Scrolling === qq au milieu qb en bas qt en haut === vim-surround === es[caracter_to_delete] xs[target_caracter][remplacement_caracter] cs[pattern-motion][caracter] css[caracter_added_on_entire_line] (){}[]<> b ( B ) r } a ] ` " ' t Xml or HTML tags w word s sentence p paragraph === NERD Tree === ô ouvrir/fermer NERDTree == Fichiers o ouvrir un fichier go aperçu du fichier t ouvrir un fichier dans un onglet T ouvrir un fichier dans un onglet mais reste sur la fenêtre courante ! executer un fichier == Repertoires o ouvrir/fermer le répertoire O ouvrir le répertoire et les sous-répertoires x fermer le noeud parent X fermer tous les noeuds des sous-répertoires == Explorateur P aller à la racine p aller au répertoire parent K aller sur le premier répertoire fils J aller sur le dernier répertoire fils d et s naviguer sur les dossiers/fichiers == Système de fichier C placer le rep courant comme racine de l'explorateur u déplacer la racine de l'explorateur vers le rep précédent U idem, mais laisse l'ancien rep racine ouvert r rafraîchir le rep courant R rafraîchir le racine m affiche le menu de l'explorateur == Filtres I afficher/cacher les fichiers cachés f filtrer les fichiers F afficher/cacher les fichiers == Autres q fermer l'explorateur ? aide === Nerd Commenter === çcc commenter la séléction ou ligne ççi inverser le commentaire === Autres === î IndentGuide Toggle û UltisnipsEdit ê RainbowParenthese Toggle