"#hugogogo# "--------------------------------------------------------------- " base settings "--------------------------------------------------------------- " Show (partial) command in status line. "set showcmd " Show matching brackets. set showmatch " Do case insensitive matching set ignorecase " Do smart case matching set smartcase " set the backspace key to set backspace=indent,eol,start " Incremental search "set incsearch " Automatically save before commands like :next and :make "set autowrite " Hide buffers when they are abandoned set hidden " Enable mouse usage (all modes) "set mouse=a set mouse= " turns on syntax hilighting syntax on " use coloration 'torte' or other " and specify no coloration in the background "colo elflord "colo murphy colo ron highlight Normal ctermbg=NONE highlight nonText ctermbg=NONE " show existing tab with x spaces width set tabstop=2 " when indenting with '>', use x spaces width set shiftwidth=2 " indent new line like the previous one set autoindent " show line number set number " whitespace characters are made visible "set list " don't allow wrap set nowrap " in wrap mode, " show next lines instead of '@' " break on words set display=lastline set lbr " using alternate buffer with Explore, ':b#' " =0 ot go back to explore buffer " =1 ot go back to last edited file " see :help g:netrw_altfile " ! not good : " with =1 the alternate buffer is not changed, so " las edited file is not last file before Explore, but the previous one " use :Lexplore instead of :Explore "let g:netrw_altfile = 0 " choose how to print list in :Explore window " alternatively you can hit 'i' inside Explore window to switch between styles " =0 is default " =3 is tree style let g:netrw_liststyle = 3 "--------------------------------------------------------------- " to use the syntax highlight of .ext on .ext2 files "--------------------------------------------------------------- au BufRead *.tpp set syntax=cpp au BufRead *.svelte set syntax=html "--------------------------------------------------------------- " pour pouvoir utiliser la norminette partout "--------------------------------------------------------------- let g:norminette_exec = '~/.local/bin/norminette' "--------------------------------------------------------------- " to move lines with Ctrl + arrow "--------------------------------------------------------------- nnoremap :m+ nnoremap :m-2 nnoremap >>k nnoremap <<k nnoremap :m+ nnoremap :m-2 nnoremap >>k nnoremap <<k " for insert mode, check if replace mode before (both uses inoremap) "inoremap :m+gi inoremap mode() ==# 'R' ? "\:m+R" : "\:m+gi" "inoremap :m-2gi inoremap mode() ==# 'R' ? "\:m-2R" : "\:m-2gi" "inoremap >>gi inoremap mode() ==# 'R' ? "\>>kR" : "\>>gi" "inoremap <<gi inoremap mode() ==# 'R' ? "\<<kR" : "\<<gi" inoremap :m+gi inoremap :m-2gi inoremap >>gi inoremap <<gi vnoremap :m'>+gv vnoremap :m-2gv vnoremap >gv vnoremap <gv vnoremap :m'>+gv vnoremap :m-2gv vnoremap >gv vnoremap <gv " move selection inside lines with Ctrl-Shift + left/right vnoremap `<i_mz"_xgvx`zPgvoo vnoremap `>gvxpgvoo "--------------------------------------------------------------- " to move cursor inside wrapping "--------------------------------------------------------------- " https://vim.fandom.com/wiki/Move_cursor_by_display_lines_when_wrapping nnoremap gj nnoremap gk vnoremap gj vnoremap gk inoremap gj inoremap gk "--------------------------------------------------------------- " put swap files in a special directory "--------------------------------------------------------------- " first create the needed directory " https://stackoverflow.com/questions/1549263/how-can-i-create-a-folder-if-it-doesnt-exist-from-vimrc silent !mkdir -p ~/.vim/swapfiles " 'directory' tells vim where to put the swap files, instead of " putting them in the current directory " the double slash '//' ask vim to give to the swap file a name " with its complete path, to avoid problems whene two files have " the same name set directory=~/.vim/swapfiles// "--------------------------------------------------------------- " put swap files in a special directory "--------------------------------------------------------------- " https://stackoverflow.com/questions/1676632/whats-a-quick-way-to-comment-uncomment-lines-in-vim#answer-67151825 " " version 1 : " autocmd FileType c,cpp,java,scala let b:comment_leader = '//' " autocmd FileType sh,ruby,python let b:comment_leader = '#' " autocmd FileType conf,fstab let b:comment_leader = '#' " autocmd FileType tex let b:comment_leader = '%' " autocmd FileType mail let b:comment_leader = '>' " autocmd FileType vim let b:comment_leader = '"' " function! CommentToggle() " execute ':silent! s/\([^ ]\)/' . escape(b:comment_leader,'\/') . ' \1/' " execute ':silent! s/^\( *\)' . escape(b:comment_leader,'\/') . ' \?' . escape(b:comment_leader,'\/') . ' \?/\1/' " endfunction " map :call CommentToggle() " " " version 2 " function CommentUncomment() " let line = getline('.') " if line[:1] == '//' " norm ^2x " else " norm I// " endif " endfunction " nnoremap :call CommentUncomment() "--------------------------------------------------------------- " to autofill new files "--------------------------------------------------------------- " to autofill a new Class.hpp file function! HPPFile() silent! 0r $HOME/.vim/templates/skeleton.hpp %s/FileName/\=expand("%:t:r")/g %s/FILENAME/\=toupper(expand("%:t:r"))/g endfunction " to autofill a new Class.cpp file function! CPPFile() silent! 0r $HOME/.vim/templates/skeleton.cpp %s/FileName/\=expand("%:t:r")/g endfunction " to autofill a new main.cpp file function! MAINCPPFile() silent! 0r $HOME/.vim/templates/skeleton_main.cpp endfunction " to autofill a new Makefile file function! MAKEFile() silent! 0r $HOME/.vim/templates/skeleton_makefile endfunction " to autofill a new colors.h file function! COLORFile() silent! 0r $HOME/.vim/templates/skeleton_colors.h endfunction " to autofill a new tests.hpp file function! TESTSFile() silent! 0r $HOME/.vim/templates/skeleton_tests.hpp endfunction " autofill calls autocmd BufNewFile *.hpp call HPPFile() autocmd BufNewFile *.cpp if @% == 'main.cpp' | call MAINCPPFile() | else | call CPPFile() autocmd BufNewFile Makefile call MAKEFile() autocmd BufNewFile colors.h call COLORFile() autocmd BufNewFile tests.hpp call TESTSFile() "--------------------------------------------------------------- " pour mettre en gras dans des fichiers txt "--------------------------------------------------------------- " BufEnter s'active quand un buffer est ouvert ou modifie " setf = setfiletype defini un filetype text SI n'existe pas " (!= 'set filetype=type') defini un new ft meme si existe au BufEnter *.txt setf text " conceal = hidden " cocu (concealcursor) hidden in normal mode (v=visual i=insert) " cole (conceallevel) hidden (0=not_hidden 1&2=replaced_by_smth) au filetype text set cocu=n cole=3 " les trois lignes suivantes sont lancees par des auto commands " pour declancher leur action malgre que les hilighting groups " soient nettoyes par la commande 'hi clear' du fichier " $VIMRUNTIME/color/default.vim au filetype text hi AsteriskBold ctermfg=Green cterm=bold au filetype text syn match Asterisks contained "\*\*" conceal au filetype text syn match EscapedAsterisks contained "\\" conceal au filetype text syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks,EscapedAsterisks "--------------------------------------------------------------- " remplis les elements de base d'un fichier html "--------------------------------------------------------------- command! Html 0s/^/\r\r\t\r\t\t\r\t\t\r\t\t<\/title>\r\t\t<meta name="description" content="description du site web">\r\t\t<meta name="keywords" content="truc, bidule, chouette">\r\t\t<link href=".\/style.css" type="text\/css" rel="stylesheet">\r\t\t<script type="text\/javascript" src="script.js" defer><\/script>\r\t<\/head>\r\t<body>\r\r\t<\/body>\r<\/html> "--------------------------------------------------------------- " pour transformer un text html et/ou css en version affichable "--------------------------------------------------------------- "remplace < et > par < et > command! Compare %s/</\</g <bar> %s/>/\>/g "remplir les lignes vides avec des <br> command! Ligne %s/^\n/<br>\r "ajoute <p> et </p> en debut et fin de lignes command! Paragraph %s/^/<p>/g <bar> %s/$/<\/p>/g "remplace les indentations par deux espaces   command! Indenta %s/\t/\ \ \ /g "remplace les < et > autour des commentaires par CS et CE command! Savecomment %s/<!--/CS/g <bar> %s/-->/CE/g "entoure les tag apres < ou </ par <span id="tag"></span> command! Tag %s#<[;/]*\zs[a-z0-9]*\ze#<span id=\"tag\">\0</span>#g "entoure les signes < et > et / et { et } par <span id="sign"></span> command! Sign %s#<\zs/\ze#<span id=\"sign\">\0</span>#g <bar> %s#&[lg]t;#<span id=\"sign\">\0</span>#g <bar> %s#[{}]#<span id=\"sign\">\0</span>#g "entoure les pseudos elements command! Pseudo %s#:\zs[a-z]*\ze.<span id="sign">{#<span id=\"pseudo\">\0</span>#g "entoure les selecteurs css avant les { par <span id="selec"></span> command! Selec %s#<p>\zs[^:{]*\ze.*<span id="sign">{#<span id=\"selec\">\0</span>#g "entoure les actions css avant les : par <span id="action"></span> command! Action %s# \zs[-a-zA-Z0-9]*\ze:#<span id=\"action\">\0</span>#g "entoure toutes les specifications des tags html par <span id="special"><span> command! Special %s#</span>\zs[^>]*\ze<span id="sign">>#<span id=\"special\">\0</span>#g "entoure les commentaires par <span id="comment"></span> command! Comment %s#\(CS\)\(.*\)\(CE\)#<span id=\"comment\">\<!--\2--\></span>#g <bar> %s#/\*.*\*/#<span id=\"comment\">\0</span>#g function! Editax() Compare Ligne Paragraph Indenta Savecomment Tag Sign Pseudo Selec Action Special Comment Start End endfunction "ajoute toutes les lignes du debut command! Start 0s/^/<!DOCTYPE html>\r<html>\r<head>\r<style>\r#cadre {\r position: fixed;\r top: 10vh;\r left: calc(50% - 250px);\r width: 500px;\r max-width: 80vw;\r height: 80vh;\r padding: 10px;\r overflow: hidden;\r border-radius: 10px;\r background-color: rgba(50, 50, 50, 0.9);\r}\r#scroll {\r height: 100%;\r width: calc(100% + 25px);\r box-sizing: border-box;\r padding-right: 10px;\r overflow-y: scroll;\r}\r#scroll p {\r margin: 0;\r padding: 0;\r color: #d3d3d3;\r}\r#tag {\r color: #669999;\r}\r#sign {\r color: white;\r}\r#action {\r color: #cc66cc;\r}\r#selec {\r color: #ff6633;\r}\r#pseudo {\r color: yellow;\r}\r#special {\r color: #8585ad;\r}\r#comment {\r color: #909090;\r}\r<\/style>\r<\/head>\r<body>\r<div id=\"cadre">\r<div id=\"scroll">\r\r<p>\<!DOCTYPE html\><\/p>\r "ajoute toutes les lignes de la fin command! End $s/$/\r\r<\/div>\r<\/div>\r<\/body>\r<\/html>