389 lines
11 KiB
VimL
Executable File
389 lines
11 KiB
VimL
Executable File
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
" Behaviour.
|
||
"
|
||
|
||
" All our scripts and files are here.
|
||
if filereadable(expand("~/devel/scripts/vim/vimrc"))
|
||
set runtimepath+=~/devel/scripts/vim
|
||
endif
|
||
|
||
" Set 'nocompatible' to ward off unexpected things that your distro might
|
||
" have made, as well as sanely reset options when re-sourcing .vimrc
|
||
set nocompatible
|
||
" Line ending is UNIX.
|
||
set fileformat=unix
|
||
" Swap files go here.
|
||
"set directory="~/tmp,." console version complains all the time.
|
||
" Don't backup files.
|
||
set nobackup
|
||
"set backupdir="~/tmp,." git commit doesn't work.
|
||
" Try to set up UTF-8 encoding.
|
||
if has("multi_byte")
|
||
if &termencoding == ""
|
||
let &termencoding = &encoding
|
||
endif
|
||
set encoding=utf-8
|
||
setglobal fileencoding=utf-8
|
||
"setglobal bomb
|
||
set fileencodings=ucs-bom,utf-8,latin1
|
||
endif
|
||
" Make tabes to be equal to 4 space chars.
|
||
set tabstop=4
|
||
" Number of spaces a <Tab> counts. If different from tabstop a combination of
|
||
" tabs and spaces will be inserted.
|
||
set softtabstop=4
|
||
" For indentation shift by 4 chars.
|
||
set shiftwidth=4
|
||
" When on <Tab> insert shiftwidth space in front of line. When off <Tab> inserts
|
||
" blanks according to softtabstop.
|
||
set smarttab
|
||
" Don't expand tabs.
|
||
set noexpandtab
|
||
if has('autocmd')
|
||
" Unset expandtab for make files in any case.
|
||
autocmd FileType make setlocal noexpandtab
|
||
" Set expandtab for python files in any case.
|
||
autocmd FileType python setlocal expandtab
|
||
endif
|
||
" Attempt to determine the type of a file based on its name and possibly its
|
||
" contents. Use this to allow intelligent auto-indenting for each filetype,
|
||
" and for plugins that are filetype specific.
|
||
filetype indent plugin on
|
||
" When opening a new line and no filetype-specific indenting is enabled, keep
|
||
" the same indent as the line you're currently on. Useful for READMEs, etc.
|
||
set autoindent
|
||
" Allow backspacing over autoindent, line breaks and start of insert action
|
||
set backspace=indent,eol,start
|
||
" Stop certain movements from always going to the first character of a line.
|
||
" While this behaviour deviates from that of Vi, it does what most users
|
||
" coming from other editors would expect.
|
||
set nostartofline
|
||
" Try to not cross 80 char boundary.
|
||
set textwidth=80
|
||
|
||
" Existing long lines are not broken.
|
||
set formatoptions+=l
|
||
" Auto-wrap comments using textwidth.
|
||
set formatoptions=cq
|
||
" Insert comment leader if <Enter> is hit in insert mode or 'o' in Normal mode.
|
||
set formatoptions+=ro
|
||
"set formatoptions-=o " don't autoformat on 'o' e.g. comment wrapping
|
||
|
||
"
|
||
" C++ oriented.
|
||
"
|
||
"do not auto insert single line comments
|
||
set comments-=://
|
||
" Auto-insert multi-line comment continuations
|
||
set comments+=f://
|
||
" Do not indent after namespace XX{
|
||
set cino+=N-s
|
||
" Match open-bracket indentation when breaking parameter lists over multiple
|
||
" lines.
|
||
set cino+=(0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
set viminfo='20,\"50 " read/write a .viminfo file, don't store more
|
||
" than 50 lines of registers
|
||
let g:netrw_preview = 1 " netrw open window to the right
|
||
let g:netrw_browse_split = 3 " open in a tab
|
||
|
||
|
||
set ttyfast "tf "smooths redraw by using more bandwidth
|
||
"set sessionoptions-=options
|
||
"show shortmessages
|
||
"set shortmess+=atIW
|
||
" Set timeout for detecting command key sequence
|
||
set timeoutlen=400
|
||
|
||
"set autoread "update file modified outside of vim
|
||
|
||
" Quickly time out on keycodes, but never time out on mappings
|
||
set notimeout ttimeout ttimeoutlen=200
|
||
" Use <F11> to toggle between 'paste' and 'nopaste'
|
||
"set pastetoggle=<F11>
|
||
|
||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
" Display
|
||
"
|
||
|
||
" wrap text at window edge without modifying buffer
|
||
set nowrap
|
||
" Scroll this much chars when scrolled horizontally.
|
||
set sidescroll=1
|
||
" break at a suitable character (as in breakat)
|
||
"set linebreak
|
||
" Begin scrolling this lines from window edge.
|
||
set scrolloff=0
|
||
|
||
" Set the command window height to 2 lines, to avoid many cases of having to
|
||
" press <Enter> to continue"
|
||
set cmdheight=2
|
||
" Always display the status line, even if only one window is displayed
|
||
set laststatus=2
|
||
" Display the cursor position on the last line of the screen or in the status
|
||
" line of a window
|
||
if exists('&ruler')
|
||
set ruler
|
||
endif
|
||
" Instead of failing a command because of unsaved changes, raise a dialogue
|
||
" asking if you wish to save changed files.
|
||
if exists('&confirm')
|
||
set confirm
|
||
endif
|
||
" Use visual bell instead of beeping when doing something wrong
|
||
if exists('&visualbell')
|
||
set visualbell
|
||
" And reset the terminal code for the visual bell. If visualbell is set, and
|
||
" this line is also included, vim will neither flash nor beep. If visualbell
|
||
" is unset, this does nothing.
|
||
set t_vb=
|
||
endif
|
||
" Display line numbers on the left
|
||
if exists('&number')
|
||
set number
|
||
endif
|
||
" Turn on spell check.
|
||
if exists("+spell")
|
||
set spell
|
||
endif
|
||
" Show 80th column.
|
||
if exists("+colorcolumn")
|
||
set colorcolumn=+1 " color textwidth+1-th line
|
||
endif
|
||
|
||
" Show command-line completion above the command line.
|
||
set wildmenu
|
||
" wildmenu ignore list
|
||
set wildignore=*.o,*.obj,*.bak,*.exe,*.d,*.dd
|
||
" Complete to longest common string
|
||
set wildmode=longest:full
|
||
" remember more history
|
||
set history=1000
|
||
|
||
" Switch syntax highlighting on, when the terminal has colors
|
||
" Also switch on highlighting the last used search pattern.
|
||
if &t_Co > 2 || has("gui_running")
|
||
syntax on
|
||
set hlsearch
|
||
endif
|
||
|
||
" Enable syntax highlighting
|
||
highlight DiffAdd cterm=none ctermfg=Black ctermbg=Green gui=none guifg=Black guibg=Green
|
||
highlight DiffDelete cterm=none ctermfg=Black ctermbg=Red gui=none guifg=Black guibg=Red
|
||
highlight DiffChange cterm=none ctermfg=Black ctermbg=Yellow gui=none guifg=Black guibg=Yellow
|
||
highlight DiffText cterm=none ctermfg=Black ctermbg=Magenta gui=none guifg=Black guibg=Magenta
|
||
" Display tabs and trailing spaces visually
|
||
set list
|
||
set listchars=tab:>-,trail:·
|
||
|
||
|
||
|
||
"
|
||
" .gvimrc content here.
|
||
"
|
||
if has("gui_running")
|
||
" set color scheme
|
||
colorscheme darkblue
|
||
"set guioptions-=m
|
||
"set guioptions-=T
|
||
set lines=50
|
||
set columns=85
|
||
|
||
" Set the font.
|
||
if has("win32") || has("win64")
|
||
"set guifont=FreeMono:h14:cANSI
|
||
"set guifont=Courier\ AM:h12
|
||
else
|
||
"set guifont=Bitstream\ Vera\ Sans\ Mono\ 12
|
||
set guifont=Monospace\ 12
|
||
endif
|
||
else
|
||
colors vahagn_black_terminal
|
||
endif
|
||
" Configure coloring on command line terminals.
|
||
if &term=="xterm"
|
||
set t_Co=8
|
||
set t_Sb=[4%dm
|
||
set t_Sf=[3%dm
|
||
endif
|
||
" In many terminal emulators the mouse works just fine, thus enable it.
|
||
if has('mouse')
|
||
" set mouse=n
|
||
endif
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
" One such option is the 'hidden' option, which allows you to re-use the same
|
||
" window and switch from an unsaved buffer without saving it first. Also allows
|
||
" you to keep an undo history for multiple files when re-using the same window
|
||
" in this way. Note that using persistent undo also lets you undo in multiple
|
||
" files even in the same window, but is less efficient and is actually designed
|
||
" for keeping undo history after closing Vim entirely. Vim will complain if you
|
||
" try to quit without saving, and swap files will keep you safe if your computer
|
||
" crashes.
|
||
if exists('&hidden')
|
||
set hidden
|
||
endif
|
||
|
||
" Modelined are used to configure files.
|
||
if exists('&modeline')
|
||
set modeline
|
||
set modelines=10
|
||
endif
|
||
|
||
" Set fold method if supported
|
||
if has('folding')
|
||
set nofoldenable
|
||
set foldmethod=indent "fold based on indent
|
||
set foldnestmax=3
|
||
set foldminlines=4
|
||
set foldlevel=1
|
||
set foldcolumn=2 " foldcolumn is width 2
|
||
if has("autocmd")
|
||
autocmd FileType vim setlocal foldmethod=marker
|
||
autocmd FileType c setlocal foldmethod=syntax
|
||
autocmd FileType h setlocal foldmethod=syntax
|
||
autocmd FileType cpp setlocal foldmethod=syntax
|
||
endif
|
||
endif
|
||
|
||
" Only do this part when compiled with support for autocommands.
|
||
if has("autocmd")
|
||
|
||
" Enable file type detection.
|
||
" Use the default filetype settings, so that mail gets 'tw' set to 72,
|
||
" 'cindent' is on in C files, etc.
|
||
" Also load indent files, to automatically do language-dependent indenting.
|
||
filetype plugin indent on
|
||
|
||
" start with all folds open
|
||
au BufRead,BufNewFile,BufWinEnter * normal zR
|
||
" highlight lone colon characters
|
||
highlight WarnChar ctermbg=yellow ctermfg=red guibg=#FFCC33 guifg=#FF0000
|
||
"apply highlight when opening a file, changing text (N or I), or opening a split
|
||
au BufRead,InsertCharPre *.cpp 2mat WarnChar /\w\+;\?:;\?\w\+/
|
||
|
||
" Put these in an autocmd group, so that we can delete them easily.
|
||
augroup vimrcEx
|
||
au!
|
||
|
||
|
||
" When editing a file, always jump to the last known cursor position.
|
||
" Don't do it when the position is invalid or when inside an event handler
|
||
" (happens when dropping a file on gvim).
|
||
" Also don't do it when the mark is in the first line, that is the default
|
||
" position when opening a file.
|
||
autocmd BufReadPost *
|
||
\ if line("'\"") > 1 && line("'\"") <= line("$") |
|
||
\ exe "normal! g`\"" |
|
||
\ endif
|
||
|
||
augroup END
|
||
|
||
endif " has("autocmd")
|
||
|
||
" Convenient command to see the difference between the current buffer and the
|
||
" file it was loaded from, thus the changes you made.
|
||
" Only define it when not defined already.
|
||
if !exists(":DiffOrig")
|
||
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
|
||
\ | wincmd p | diffthis
|
||
endif
|
||
|
||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
" Key Mappings
|
||
"
|
||
|
||
" F4 grep the word under cursor.
|
||
"map <F4> :execute "grep " . expand("<cword>") . " -r *.h *.cpp *.c *.f" <Bar> cw<CR>
|
||
map <F4> :execute "grep " . expand("<cword>") . " -r --include \*.h --include \*.cpp --include \*.c --include \*.f ." <Bar> cw<CR>
|
||
" Create a new tab.
|
||
map <silent> <C-F3> :tabnew<CR>
|
||
"
|
||
"command! -nargs=* PFdiff :!p4 diff <args> %
|
||
"
|
||
" Loads CF5Compile
|
||
" Compile and run file if Ctrl-F5 is pressed.
|
||
"
|
||
if !exists('*CF5Compile')
|
||
runtime plugin/cf5-compiler.vim
|
||
endif
|
||
map <silent> <C-F5> :call CF5Compile(1)<CR>
|
||
map <silent> <F5> :call CF5Compile(0)<CR>
|
||
"
|
||
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
|
||
" so that you can undo CTRL-U after inserting a line break.
|
||
"
|
||
inoremap <C-U> <C-G>u<C-U>
|
||
"
|
||
" Move through wrapped lines instead of buffer lines.
|
||
"
|
||
noremap <Up> gk
|
||
noremap <Down> gj
|
||
imap <Up> <C-O>gk
|
||
imap <Down> <C-O>gj
|
||
"
|
||
" Working with tabs especially if using console version.
|
||
"
|
||
nnoremap th :tabfirst<CR>
|
||
nnoremap tj :tabnext<CR>
|
||
nnoremap tk :tabprev<CR>
|
||
nnoremap tl :tablast<CR>
|
||
nnoremap tm :tabm<Space>
|
||
nnoremap td :tabclose<CR>
|
||
"
|
||
" .gvimrc content here.
|
||
"
|
||
if has("gui_running")
|
||
":tab drop {file}
|
||
|
||
" Hide show menu and toolbar.
|
||
map <silent> <C-F2> :if &guioptions =~# 'm' <Bar>
|
||
\set guioptions-=m <Bar>
|
||
\set guioptions-=T <Bar>
|
||
\set showtabline=0 <Bar>
|
||
\else <Bar>
|
||
\set guioptions+=m <Bar>
|
||
\set guioptions+=T <Bar>
|
||
\set showtabline=1 <Bar>
|
||
\endif <CR>
|
||
|
||
" Open file in a new tab.
|
||
if has("browsefilter")
|
||
let g:browsefilter = "All Files (*.*)\t*\n"
|
||
endif
|
||
|
||
else
|
||
endif
|
||
|
||
"
|
||
" Vundle experimental stuff here.
|
||
"
|
||
if filereadable(expand("~/.vim/bundle/Vundle.vim/README.md"))
|
||
filetype off
|
||
set rtp+=~/.vim/bundle/Vundle.vim
|
||
call vundle#begin()
|
||
Plugin 'VundleVim/Vundle.vim'
|
||
call vundle#end()
|
||
filetype plugin indent on
|
||
endif
|