332 lines
11 KiB
VimL
332 lines
11 KiB
VimL
"#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 <C-Down> :m+<CR>
|
|
nnoremap <C-Up> :m-2<CR>
|
|
nnoremap <C-Right> >><CR>k
|
|
nnoremap <C-Left> <<<CR>k
|
|
nnoremap <C-j> :m+<CR>
|
|
nnoremap <C-k> :m-2<CR>
|
|
nnoremap <C-l> >><CR>k
|
|
nnoremap <C-h> <<<CR>k
|
|
|
|
" for insert mode, check if replace mode before (both uses inoremap)
|
|
"inoremap <C-Down> <Esc>:m+<CR>gi
|
|
inoremap <expr> <C-Down> mode() ==# 'R' ? "\<Esc>:m+<CR>R" : "\<Esc>:m+<CR>gi"
|
|
"inoremap <C-Up> <Esc>:m-2<CR>gi
|
|
inoremap <expr> <C-Up> mode() ==# 'R' ? "\<Esc>:m-2<CR>R" : "\<Esc>:m-2<CR>gi"
|
|
"inoremap <C-Right> <Esc>>><CR>gi
|
|
inoremap <expr> <C-Right> mode() ==# 'R' ? "\<Esc>>><CR>kR" : "\<Esc>>><CR>gi"
|
|
"inoremap <C-Left> <Esc><<<CR>gi
|
|
inoremap <expr> <C-Left> mode() ==# 'R' ? "\<Esc><<<CR>kR" : "\<Esc><<<CR>gi"
|
|
inoremap <C-j> <Esc>:m+<CR>gi
|
|
inoremap <C-k> <Esc>:m-2<CR>gi
|
|
inoremap <C-l> <Esc>>><CR>gi
|
|
inoremap <C-h> <Esc><<<CR>gi
|
|
|
|
vnoremap <C-Down> :m'>+<CR>gv
|
|
vnoremap <C-Up> :m-2<CR>gv
|
|
vnoremap <C-Right> ><CR>gv
|
|
vnoremap <C-Left> <<CR>gv
|
|
vnoremap <C-j> :m'>+<CR>gv
|
|
vnoremap <C-k> :m-2<CR>gv
|
|
vnoremap <C-l> ><CR>gv
|
|
vnoremap <C-h> <<CR>gv
|
|
|
|
" move selection inside lines with Ctrl-Shift + left/right
|
|
vnoremap <C-S-Left> <Esc>`<<Left>i_<Esc>mz"_xgvx`zPgv<Left>o<Left>o
|
|
vnoremap <C-S-Right> <Esc>`><Right>gvxpgv<Right>o<Right>o
|
|
|
|
|
|
|
|
"---------------------------------------------------------------
|
|
" to move cursor inside wrapping
|
|
"---------------------------------------------------------------
|
|
" https://vim.fandom.com/wiki/Move_cursor_by_display_lines_when_wrapping
|
|
|
|
nnoremap <Down> gj
|
|
nnoremap <Up> gk
|
|
vnoremap <Down> gj
|
|
vnoremap <Up> gk
|
|
inoremap <Down> <C-o>gj
|
|
inoremap <Up> <C-o>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 <F7> :call CommentToggle()<CR>
|
|
"
|
|
" " version 2
|
|
" function CommentUncomment()
|
|
" let line = getline('.')
|
|
" if line[:1] == '//'
|
|
" norm ^2x
|
|
" else
|
|
" norm I//
|
|
" endif
|
|
" endfunction
|
|
" nnoremap <Space><Space> :call CommentUncomment()<CR>
|
|
|
|
"---------------------------------------------------------------
|
|
" 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/^/<!DOCTYPE html>\r<html lang="en" dir="ltr">\r\t<head>\r\t\t<meta charset="UTF-8">\r\t\t<meta name="viewport" content="width=device-width, initial-scale=1.0">\r\t\t<title><\/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>
|
|
|