1
0
mirror of https://github.com/gryf/.vim.git synced 2026-04-21 01:11:24 +02:00
Files
.vim/.vimrc
T

330 lines
11 KiB
VimL

"Basic setup for all files {{{
set nocompatible "VIM over VI
filetype plugin indent on "turn plugins/indent on
syntax on "Turn syntax highlighting on
set backspace=indent,eol,start "Allow backspacing over everything in insert mode
set background=dark "Hint Vim that I use dark colorscheme
set confirm "Ask for confirmation rather then refuse certain commands
set cursorline "Turn on current line highlight
set expandtab "I want spaces instead of tabs
set fileencodings=ucs-bom,utf-8,latin2,default,latin1,default
set fileformats=unix,dos "Type of <EOL> in written files
set formatoptions=croqw "Automatic formatting settings
set hidden "Keep hidden windows
set history=1000 "Keep 1000 lines of command line history
"set ignorecase "Ignore case in search patterns
set laststatus=2 "Always show statusbar
set lazyredraw "Don't update screen while executing macros
set listchars=tab:▸⎯,trail"Strings to use in 'list' mode. list is off by default.
set number "show line numbers
" Show ruler and set format of statusline
set ruler
set statusline=%<%F\ %h%m%r%=%(%l,%c%V%)\ %3p%%
set scrolloff=5 "Minimal number of screen lines to keep above and below the cursor
set selection=exclusive "Define the behavior of the selection
set sessionoptions-=blank "Don't store empty windows
set sessionoptions-=globals "Don't store global vars
set sessionoptions-=localoptions "Don't store local options and mappings
set sessionoptions-=options "Don't store options and mappings
set shiftwidth=4 "Number of spaces to use for each step of (auto)indent
set shortmess=atToOI "Abbreviate some messages
set showbreak=> "String to put at the start of lines that have been wrapped
set showcmd "Show (partial) command in status line
set showmatch "When a bracket is inserted, briefly jump to the matching one
"set smartindent "Do smart autoindenting when starting a new line
filetype indent on "Indenting per filetype rather then smartindent.
set smarttab "Do the smart tab/backspace behaviour
set softtabstop=4
"spell options
set spelllang=pl,en
set spellfile=/home/gryf/.vim/pol.utf8.add
set splitbelow "Create new window below current one
set swapfile "Use swap file
set t_vb= "Turn beeping off
set tabstop=4 "Set tab stop to 4
set updatecount=50 "After typing this many chars the swap file will be written to disk
set viewoptions-=options "Don't store options in view stored in ~/.vim/view dir
set viminfo='20,<1000,h,f0 "Configure .viminfo
set whichwrap+=<,>,[,] "Cursor keys wrap to previous/next line
set wildchar=<TAB> "Character to start wildcard expansion in the command-line
set wildmenu "Put command-line completion in an enhanced mode
set wrapmargin=1 "Number of characters from the right window border where wrapping starts
"backup/writeback/swapfile
set nobackup
set nowb
set noswapfile
"in case they are needed, store swapfiles in tmp
"set dir=~/tmp/
" TOhtml options
:let html_number_lines = 1
:let html_use_css = 1
:let html_ignore_folding = 1
:let html_use_encoding = "utf-8"
"}}}
"COMMON: specific vim behaviour {{{
"
"remove all trailing whitespace for specified files before write
autocmd BufWritePre *.py :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.rst :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.wiki :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.js :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.css :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.xml :call <SID>StripTrailingWhitespaces()
" }}}
" OTHER FILES: {{{
autocmd BufRead *.tmux.conf set filetype=tmux
"}}}
"TERMINAL: options for terminal emulators {{{
if $TERM == 'rxvt-unicode' || $TERM == 'xterm'
set term=rxvt-unicode256 "Set terminal type
set t_Co=256 "Enable 256 colors support
"repair urxvt ctrl+pgup/down behaviour
map [5^ <C-PageUp>
map [6^ <C-PageDown>
elseif $TERM == 'screen' || $TERM == 'screen-256color'
set term=screen-256color "Set terminal type
set t_Co=256 "Enable 256 colors support
set t_kN=[6;*~
set t_kP=[5;*~
endif
if $TERM == 'linux'
"For term like linux terminal keep interface simple
set nolist
set nocursorline
set nonumber
endif
"}}}
"PLUGINS: {{{
"getscriptPlugin {{{2
"let g:GetLatestVimScripts_allowautoinstall=1 "allow autoinstall scripts
"}}}
"TagList{{{2
let Tlist_Use_Right_Window = 1
"show menu in gvim. usefull to pop it up from kbd
let Tlist_Show_Menu = 1
let Tlist_Auto_Open = 0
let Tlist_Display_Prototype = 1
"open fold for current buff, and close all others...
let Tlist_File_Fold_Auto_Close = 1
".. or just display current file
"let Tlist_Show_One_File = 1
let Tlist_Sort_Type = "name"
let Tlist_Exit_OnlyWindow = 1
let Tlist_WinWidth = 40
"}}}
"NERDTree {{{2
let NERDTreeWinSize = 40
" }}}
"VimWIKI {{{2
let g:vimwiki_list = [{'html_header': '~/vimwiki/vimwiki_head.tpl',
\ 'html_footer': '~/vimwiki/vimwiki_foot.tpl'}]
" }}}
"FuzzyFinder {{{2
let g:fuf_file_exclude = '\v\~$|\.(o|bak|swp|pyc|pyo|pyd)$|(^|[/\\])\.(hg|git|bzr|cvs)($|[/\\])'
"}}}
"ShowMarks {{{2
let g:showmarks_ignore_type = "hqprm"
let g:showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
"}}}
"jsbeautify {{{3
nnoremap <silent> <leader>ff :call g:Jsbeautify()<cr>:retab!<cr>
"}}}
" pydiction {{{2
let g:pydiction_location = '/home/gryf/.vim/after/ftplugin/pytdiction/complete-dict'
"}}}
"TagListToo {{{2
let g:VerticalToolWindowSide = 'right'
"}}}
"Tagbar {{{2
let g:tagbar_autoclose = 1
"}}}
"{{{ Pydoc
let g:pydoc_cmd = "/usr/bin/pydoc"
"}}}
"mark {{{
" addidtional colors --
highlight def MarkWord7 ctermbg=White ctermfg=Black guibg=#E8E8E8 guifg=Black
highlight def MarkWord8 ctermbg=LightGray ctermfg=Black guibg=#C0C0C0 guifg=Black
highlight def MarkWord9 ctermbg=DarkYellow ctermfg=Black guibg=#FFC299 guifg=Black
highlight def MarkWord10 ctermbg=DarkGreen ctermfg=Black guibg=#6E9954 guifg=Black
"}}}
" DirDiff{{{
let g:DirDiffExcludes = "CVS,*.class,*.exe,.*.swp,*.pyc,*.pyo"
" }}}
"}}}
"KEYS: User definied keyboard shortcuts {{{
"Cycle through buffers.
map <C-p> :bp<CR>
map <C-n> :bn<CR>
"Cycle through tabs.
if $TERM == 'rxvt-unicode'
map <C-PageDown> :tabn<CR>
map <C-PageUp> :tabp<CR>
endif
map <F5> :call <SID>Make()<cr>
"QuickFix jumps
map <F9> :cp<CR>
map <F10> :cn<CR>
map <F11> :lprevious<CR>
map <F12> :lnext<CR>
map <S-F9> :QFix<CR>
map <S-F11> :LWin<CR>
"remove trailing whitespaces
map <C-e> :%s/\s\+$//<CR>
"redefine tab key for vimwiki
map <Leader>wn <Plug>VimwikiNextWord
map <Leader>wp <Plug>VimwikiPrevWord
map ]b :call OpenInFirefox()<cr>
"make displaying tags easy
"nmap <Leader>t :TlistToo<CR>
nmap <Leader>t :TagbarToggle<CR>
"eclim Buffer shortcut
map <Leader>b :Buffers<CR>
" copy current buffer filename (full path)
nmap ,cn :silent call <SID>CopyFileName(1)<CR>
" copy current buffer filename (filename only)
nmap ,cs :silent call <SID>CopyFileName(0)<CR>
"FuzzyFinder plugin. Keys for file fuf
map <C-F> :TlistToo!<cr>:FufFile **/<CR>
" }}}
" FUNCTIONS: usefull functions for all of th files {{{
" Simple wrapper for :make command
function <SID>Make()
echohl Statement
echo "Running make (ctrl-c to cancel) ..."
echohl Normal
silent make
if getqflist() != []
copen
endif
endfunction
" Remove trailing whitespace
function <SID>StripTrailingWhitespaces()
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
%s/\s\+$//e
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
function <SID>CopyFileName(full)
if a:full
let l:full_fn = expand("%:p")
else
let l:full_fn = expand("%")
endif
" Convert slashes to backslashes for Windows.
if has('win32')
let @*=substitute(l:full_fn, "/", "\\", "g")
else
let @*=l:full_fn
endif
echo l:full_fn + " copied to clipboard"
endfunction
" Toggle QuickFix buffer
command -bang -nargs=? QFix call QFixToggle(<bang>0)
function! QFixToggle(forced)
if exists("g:qfix_win") && a:forced == 0
cclose
unlet g:qfix_win
else
copen 10
let g:qfix_win = bufnr("$")
endif
endfunction
" Toggle location buffer
command -bang -nargs=? LWin call LocationWindowToggle(<bang>0)
function! LocationWindowToggle(forced)
if exists("g:loc_win") && a:forced == 0
lclose
unlet g:loc_win
else
lopen 10
let g:loc_win = bufnr("$")
endif
endfunction
" OpenInFirefox
" try to open url in Firefox
function! OpenInFirefox()
let l:line = getline(".")
let l:cursor_position = getpos(".")[2]
let l:url = ""
let l:pattern = '\c\%(http[s]\?\|ftp\|file\)\:\/\/[^$ ]\+'
for i in split(l:line)
if match(i, l:pattern) == 0
"check position in line against cursor_position
for x in range(match(l:line, i), match(l:line, i) + len(i))
if l:cursor_position == x
let l:url = i
break
endif
endfor
endif
endfor
if len(l:url) > 0
call system("firefox " . l:url)
echohl Statement
echo "Opened '" . l:url ."' in firefox."
else
echohl WarningMsg
echo "Not an URL under cursor."
endif
echohl None
endfunction
"}}}
" GUI: here goes all the gvim customizations {{{
if has('gui_running')
"set guifont=Consolas\ 12 "I like this font, but it looks like crap on linux
set guifont=Fixed\ 14 "I like this font better.
set mouse=a "Enable mouse support
set guioptions-=T "No toolbar
set guioptions-=m "Nor menu
"add menuitem OpenInFirefox
nmenu 666 PopUp.&Open\ in\ browser :call OpenInFirefox()<cr>
"Turn off annoying beep
au GUIEnter * set vb t_vb=
endif
"}}}
" HIGHLIGHT: colorscheme and highlight, which should be applied on after {{{
" some vim initialization
if $TERM == 'linux'
colorscheme pablo
else
colorscheme wombat256grf
endif
"}}}
" vim:ts=4:sw=4:wrap:fdm=marker: