Created
December 24, 2013 10:37
-
-
Save sputnick-dev/8111468 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set nocompatible | |
set backspace=indent,eol,start " | |
set background=dark | |
" buffer for files | |
set viminfo='50,\"1000 | |
set history=100 | |
" highlight /search | |
set hlsearch | |
" Use utf8 | |
set encoding=utf-8 | |
"set fileencoding=utf-8 | |
"set fileencodings=utf-8,latin1 | |
" Ignore certain filetypes when doing filename completion | |
set wildignore=*.swp,*.pyc,*.bak | |
" Automatically read files which have been changed outside of Vim, if we | |
" haven't changed it already. | |
set autoread | |
" color | |
syntax on | |
colorscheme sputnick | |
let php_sql_query=1 | |
" set colorscheme morning only for myfile.txt | |
autocmd BufReadPre myfile.txt colorscheme morning | |
" Uncomment the following to have Vim jump to the last position when | |
" reopening a file | |
if has("autocmd") | |
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | |
\| exe "normal g'\"" | endif | |
endif | |
let &t_SI = "\<Esc>]50;CursorShape=1\x7" | |
let &t_EI = "\<Esc>]50;CursorShape=0\x7" | |
" http://stackoverflow.com/questions/540721/compile-directly-from-vim | |
au FileType c setlocal makeprg=g++\ %\ -Wall | |
au FileType cpp setlocal makeprg=g++\ %\ -Wall | |
" compiler le c/c++ avec :make et lancer l'executable | |
autocmd QuickfixCmdPost make call AfterMakeC() | |
function! AfterMakeC() | |
" No any error after make | |
if len(getqflist()) == 0 | |
!./a.out | |
endif | |
" :~) | |
endfunction | |
" vim-python2 package | |
autocmd FileType python set omnifunc=pythoncomplete#Complete | |
" Uncomment the following to have Vim load indentation rules according to the | |
" detected filetype. Per default Debian Vim only load filetype specific | |
" plugins. | |
if has("autocmd") | |
filetype indent on | |
endif | |
filetype plugin on | |
" The following are commented out as they cause vim to behave a lot | |
" differently from regular Vi. They are highly recommended though. | |
set showcmd " Show (partial) command in status line. | |
set laststatus=2 | |
set statusline=%<%f%m\ %r\ %h%=%l,%c\ %p%% | |
set showmatch " Show matching brackets. | |
set ignorecase " Do case insensitive matching | |
set smartcase " Do smart case matching | |
set incsearch " Incremental search | |
set autowrite " Automatically save before commands like :next and :make | |
set hidden " Hide buffers when they are abandoned | |
set mouse=v | |
" skeleton | |
autocmd BufNewFile *Test.class.php 0r ~/.vim/skeleton.Test.class.php | |
autocmd BufNewFile *.bash 0r ~/.vim/skeleton.bash | |
autocmd BufNewFile *.pl 0r ~/.vim/skeleton.pl | |
autocmd BufNewFile *.pm 0r ~/.vim/skeleton.pm | |
autocmd BufNewFile *.py 0r ~/.vim/skeleton.py | |
autocmd BufNewFile *.html 0r ~/.vim/skeleton.html | |
"autocmd BufNewFile *\(Test*\)\@!*.php And 0r ~/.vim/skeleton.php | |
autocmd BufNewFile *\(Test\)\@<!.*php 0r ~/.vim/skeleton.php | |
autocmd BufNewFile *.js 0r ~/.vim/skeleton.js | |
autocmd BufNewFile *.user.js 0r ~/.vim/skeleton\.user\.js | |
autocmd BufNewFile *.awk 0r ~/.vim/skeleton.awk | |
autocmd BufNewFile *.sed 0r ~/.vim/skeleton.sed | |
autocmd BufNewFile *.c 0r ~/.vim/skeleton.c | |
autocmd BufNewFile *.c 0r ~/.vim/skeleton.class.php | |
autocmd BufNewFile PKGBUILD 0r ~/.vim/skeleton.PKGBUILD | |
"autocmd BufNewFile,BufRead *.txt setlocal spell spelllang=fr | |
function HtmlEscape() | |
silent s/À/\À/eg | |
silent s/Á/\Á/eg | |
silent s/Â/\Â/eg | |
silent s/Ã/\Ã/eg | |
silent s/Ä/\Ä/eg | |
silent s/Å/\Å/eg | |
silent s/Æ/\Æ/eg | |
silent s/Ç/\Ç/eg | |
silent s/È/\È/eg | |
silent s/É/\É/eg | |
silent s/Ê/\Ê/eg | |
silent s/Ë/\Ë/eg | |
silent s/Ì/\Ì/eg | |
silent s/Í/\Í/eg | |
silent s/Î/\Î/eg | |
silent s/Ï/\Ï/eg | |
silent s/Ð/\Ð/eg | |
silent s/Ñ/\Ñ/eg | |
silent s/Ò/\Ò/eg | |
silent s/Ó/\Ó/eg | |
silent s/Ô/\Ô/eg | |
silent s/Õ/\Õ/eg | |
silent s/Ö/\Ö/eg | |
silent s/Ø/\Ø/eg | |
silent s/Ù/\Ù/eg | |
silent s/Ú/\Ú/eg | |
silent s/Û/\Û/eg | |
silent s/Ü/\Ü/eg | |
silent s/Ý/\Ý/eg | |
silent s/Þ/\Þ/eg | |
silent s/ß/\ß/eg | |
silent s/à/\à/eg | |
silent s/á/\á/eg | |
silent s/â/\â/eg | |
silent s/ã/\ã/eg | |
silent s/ä/\ä/eg | |
silent s/å/\å/eg | |
silent s/æ/\æ/eg | |
silent s/ç/\ç/eg | |
silent s/è/\è/eg | |
silent s/é/\é/eg | |
silent s/ê/\ê/eg | |
silent s/ë/\ë/eg | |
silent s/ì/\ì/eg | |
silent s/í/\í/eg | |
silent s/î/\î/eg | |
silent s/ï/\ï/eg | |
silent s/ð/\ð/eg | |
silent s/ñ/\ñ/eg | |
silent s/ò/\ò/eg | |
silent s/ó/\ó/eg | |
silent s/ô/\ô/eg | |
silent s/õ/\õ/eg | |
silent s/ö/\ö/eg | |
silent s/ø/\ø/eg | |
silent s/ù/\ù/eg | |
silent s/ú/\ú/eg | |
silent s/û/\û/eg | |
silent s/ü/\ü/eg | |
silent s/ý/\ý/eg | |
silent s/þ/\þ/eg | |
silent s/ÿ/\ÿ/eg | |
endfunction | |
function HtmlUnEscape() | |
silent s/\À/À/eg | |
silent s/\Á/Á/eg | |
silent s/\Â/Â/eg | |
silent s/\Ã/Ã/eg | |
silent s/\Ä/Ä/eg | |
silent s/\Å/Å/eg | |
silent s/\Æ/Æ/eg | |
silent s/\Ç/Ç/eg | |
silent s/\È/È/eg | |
silent s/\É/É/eg | |
silent s/\Ê/Ê/eg | |
silent s/\Ë/Ë/eg | |
silent s/\Ì/Ì/eg | |
silent s/\Í/Í/eg | |
silent s/\Î/Î/eg | |
silent s/\Ï/Ï/eg | |
silent s/\Ð/Ð/eg | |
silent s/\Ñ/Ñ/eg | |
silent s/\Ò/Ò/eg | |
silent s/\Ó/Ó/eg | |
silent s/\Ô/Ô/eg | |
silent s/\Õ/Õ/eg | |
silent s/\Ö/Ö/eg | |
silent s/\Ø/Ø/eg | |
silent s/\Ù/Ù/eg | |
silent s/\Ú/Ú/eg | |
silent s/\Û/Û/eg | |
silent s/\Ü/Ü/eg | |
silent s/\Ý/Ý/eg | |
silent s/\Þ/Þ/eg | |
silent s/\ß/ß/eg | |
silent s/\à/à/eg | |
silent s/\á/á/eg | |
silent s/\â/â/eg | |
silent s/\ã/ã/eg | |
silent s/\ä/ä/eg | |
silent s/\å/å/eg | |
silent s/\æ/æ/eg | |
silent s/\ç/ç/eg | |
silent s/\è/è/eg | |
silent s/\é/é/eg | |
silent s/\ê/ê/eg | |
silent s/\ë/ë/eg | |
silent s/\ì/ì/eg | |
silent s/\í/í/eg | |
silent s/\î/î/eg | |
silent s/\ï/ï/eg | |
silent s/\ð/ð/eg | |
silent s/\ñ/ñ/eg | |
silent s/\ò/ò/eg | |
silent s/\ó/ó/eg | |
silent s/\ô/ô/eg | |
silent s/\õ/õ/eg | |
silent s/\ö/ö/eg | |
silent s/\ø/ø/eg | |
silent s/\ù/ù/eg | |
silent s/\ú/ú/eg | |
silent s/\û/û/eg | |
silent s/\ü/ü/eg | |
silent s/\ý/ý/eg | |
silent s/\þ/þ/eg | |
silent s/\ÿ/ÿ/eg | |
endfunction | |
map <F2> :set number!<CR>:set number?<CR> | |
map <silent> <c-h> :call HtmlEscape()<CR> | |
map <silent> <c-u> :call HtmlUnEscape()<CR> | |
map <F3> :call HtmlEscape()<CR> | |
map <F4> :call HtmlUnEscape()<CR> | |
" permet de naviguer dans les buffers ( :e ) | |
nmap <C-B> :bnext <cr> | |
"nmap <F6> :syntax on<CR> | :colorscheme sputnick<CR> | |
" Active la completion avec les touches ctrl-espace | |
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> | |
" quotes sur toutes les $variables non protegees : | |
"map <C-S> :%s:\v"@<!\$(\k+):"$\1":gc<CR> | |
map <F5> :%s:\v"@<!\$(\k+):"$\1":gc<CR> | |
" ouvrir un popup pour browser un fichier a ouvrir en tab | |
"nmap <M-F6> :tabe `zenity --file-selection` <cr> | |
map <F6> :tabe `zenity --file-selection` <cr> | |
"map <F7> <Space> :<C-U>put!=repeat(nr2char(10),v:count)<Bar>'<CR> | |
map <F7> o<Esc> | |
map <F8> O<Esc> | |
map <F9> :Date<CR> | |
" middle of the current line | |
" http://superuser.com/questions/216411/go-to-middle-of-line-in-vim | |
map <F10> :call cursor(0, len(getline('.'))/2)<CR> | |
" toggle paste/no paste | |
map <F11> :set paste!<CR>:set paste?<CR> | |
" Supprime tout les blancs en fin de ligne (touche _ et s) | |
"nmap _s :%s/ *$//<CR> | |
map <F12> :%s/ *$// \| nohl<CR> | |
" set expandtab | |
" set nobackup " pas de fichier backup | |
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc | |
" configure expanding of tabs for various file types | |
"au BufRead,BufNewFile *.py set expandtab textwidth=80 | |
au BufRead,BufNewFile *.c set noexpandtab | |
au BufRead,BufNewFile *.h set noexpandtab | |
au BufRead,BufNewFile Makefile* set noexpandtab | |
" configure editor with tabs and nice stuff... | |
set expandtab " enter spaces when tab is pressed | |
"set textwidth=120 " break lines when line length increases | |
set tabstop=4 " use 4 spaces to represent tab | |
set softtabstop=4 | |
set shiftwidth=4 " number of spaces to use for auto indent | |
set autoindent " copy indent from current line when starting a new line | |
" make backspaces more powerfull | |
set backspace=indent,eol,start | |
" declaration de variable | |
let mytag="sputnick <gilles.quenot *AT* gmail>" | |
" definition de commande + concatenation (:InsertTime) | |
" TODO : test on .ext to change the comment string : # perl, bash, python // C, javascript | |
command! Date :normal a<C-R>="# " . strftime('%F %H:%M:%S.0 %z') . " / " . mytag<CR> | |
" :SudoSave will save a file with root rights | |
command! SudoSave w !sudo tee % | |
" http://stackoverflow.com/questions/14226376/vim-function-update-timestamp-on-event-bufwrite-to-be-improved/14241638#14241638 | |
map :x :wq | |
function! UpdateTimestamp() | |
" Removed “.*” from the end of the pattern because it is pointless | |
" Also made it use very-magic mode because otherwise it looks bad (too many escapes) | |
" Also replaced \d\{2\} with \d\d because \d\d takes less characters | |
" let lnr=search('\v^(\#|\/\/)\s+\d{4}\-\d\d\-\d\d\s+\d\d\:\d\d\:\d\d\.\d+\s+\+\d{4}\s+\/\s+\VMe <[email protected]>', 'wn') | |
" 2013-01-17 23:57:46.0 +0100 / Gilles Quenot <[email protected]> | |
let lnr=search('\v^(\#|\/\/)\s+\d{4}\-\d\d\-\d\d\s+\d\d\:\d\d\:\d\d\.\d+\s+\+\d{4}\s+\/\s+\VGilles Quenot <[email protected]>', 'wn') | |
if lnr | |
" Matchstr gets comment leader. Above regex intended to work with # or // comments, but \=expression supported only the former, this got fixed | |
call setline(lnr, matchstr(getline(lnr), '^\S\+')." " . strftime('%F %H:%M:%S.0 %z') . " / Gilles Quenot <[email protected]>") | |
endif | |
endfunction | |
au BufWrite * call UpdateTimestamp() | |
function! LastModified() | |
if &modified | |
let save_cursor = getpos(".") | |
let n = min([20, line("$")]) | |
keepjumps exe '1,' . n . 's#^\(.\{,10}Last modified: \).*#\1' . | |
\ strftime('%a %b %d, %Y %I:%M%p') . '#e' | |
call histdel('search', -1) | |
call setpos('.', save_cursor) | |
endif | |
endfun | |
autocmd BufWritePre * call LastModified() | |
" http://vim.wikia.com/wiki/Step_increment_and_replace | |
command -nargs=+ SReplace call StepReplace(<f-args>) | |
"makes use of register y | |
function StepReplace(...) | |
if a:0 == 1 | |
let @y = input("Replace with: ", @y) | |
let y = @y | |
if @y =~ "\\d\\+$" | |
let n = substitute(@y, ".\\{-}\\(\\d\\+\\)$", "\\1", "") + a:1 | |
let @y = substitute(@y, "\\(.\\{-}\\)\\d\\+$", "\\1".n, "") | |
endif | |
return y | |
elseif a:0 == 3 | |
let @y = a:2 | |
execute "%s/".a:1."/\\=StepReplace(".a:3.")/".(&gdefault ? "" : "g")."c" | |
else | |
echo "Usage: SReplace <search> <substitute> <increment>" | |
endif | |
endfunction | |
" folding | |
" z-a | |
set foldmethod=syntax | |
" open by default | |
set foldlevelstart=999 | |
" close by default | |
" set foldlevelstart=1 | |
let perl_fold=1 | |
let sh_fold_enabled=1 | |
let perl_extended_vars=1 | |
let perl_sync_dist=250 | |
if !exists("my_auto_commands_loaded") | |
let my_auto_commands_loaded = 1 | |
let g:LargeFile = 1024 * 1024 * 10 | |
augroup LargeFile | |
autocmd BufReadPre * let f=expand("<afile>") | if getfsize(f) > g:LargeFile | set eventignore+=FileType | setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 | else | set eventignore-=FileType | endif | |
augroup END | |
endif | |
function! ToggleIndentGuidesTabs() | |
if exists('b:iguides_tabs') | |
setlocal nolist | |
let &l:listchars = b:iguides_tabs | |
unlet b:iguides_tabs | |
else | |
let b:iguides_tabs = &l:listchars | |
setlocal listchars=tab:┆\ "protect the space | |
setlocal list | |
endif | |
endfunction | |
function! ToggleIndentGuidesSpaces() | |
if exists('b:iguides_spaces') | |
call matchdelete(b:iguides_spaces) | |
unlet b:iguides_spaces | |
else | |
let pos = range(1, &l:textwidth, &l:shiftwidth) | |
call map(pos, '"\\%" . v:val . "v"') | |
let pat = '\%(\_^\s*\)\@<=\%(' . join(pos, '\|') . '\)\s' | |
let b:iguides_spaces = matchadd('CursorLine', pat) | |
endif | |
endfunction | |
function! ToggleIndentGuides() | |
if exists('b:indent_guides') | |
call matchdelete(b:indent_guides) | |
unlet b:indent_guides | |
else | |
let pos = range(1, &l:textwidth, &l:shiftwidth) | |
call map(pos, '"\\%" . v:val . "v"') | |
let pat = '\%(\_^\s*\)\@<=\%(' . join(pos, '\|') . '\)\s' | |
let b:indent_guides = matchadd('CursorLine', pat) | |
endif | |
endfunction | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment