File: [Platon] / vimconfig / vimrc (download)
Revision 1.114, Fri Sep 28 22:36:15 2007 UTC (16 years, 2 months ago) by rajo
Changes since 1.113: +5 -1 lines
Fix: backspace on some terminals: keycode <7f> mapped to Backspace.
|
"
" vimconfig - project of powerful ViM 6.3 configuration files
"
" vimrc - main configuration file
" ____________________________________________________________
"
" Developed by Lubomir Host 'rajo' <rajo AT platon.sk>
" Copyright (c) 2000-2005 Platon SDG, http://platon.sk/
" All rights reserved.
"
" See README file for more information about this software.
" See COPYING file for license information.
"
" Download the latest version from
" http://platon.sk/projects/vimconfig/
"
" Please don't hesitate to correct my english :)
" Send corrections to
"
" Lubomir Host 'rajo' <rajo AT platon.sk>
" Version: $Platon: vimconfig/vimrc,v 1.113 2006-11-22 21:15:20 rajo Exp $
" Debian uses compressed helpfiles. We must inform vim that the main
" helpfiles is compressed. Other helpfiles are stated in the tags-file.
if !filereadable(expand("$VIMRUNTIME/doc/help.txt"))
if filereadable(expand("$VIMRUNTIME/doc/help.txt.gz"))
set helpfile=$VIMRUNTIME/doc/help.txt.gz
endif
endif
" Settings {{{
" To be secure & Vi nocompatible
:set secure nocompatible
:if version < 600
: echo "Please update your vim to 6.x version (version 6.3 is available, version 7.0 vill be soon!)"
: finish
:endif
:if version >= 600
syntax enable
filetype on
filetype plugin on
filetype indent on
:endif
function! Source(File)
silent! execute "source " . a:File
endfunction
let VIMRC_EXTRA="~/.vim/local/vimrc"
let GVIMRC_EXTRA="~/.vim/local/gvimrc"
if executable("uname") && executable("awk")
let machine = system("uname -n | awk 'BEGIN {ORS=\"\"} {print; }'")
else
let machine = $HOSTNAME
endif
let machine = tolower(machine)
let user = $USER
call Source(VIMRC_EXTRA.".pre")
call Source(VIMRC_EXTRA."-".user.".pre")
call Source(VIMRC_EXTRA."-".machine.".pre")
call Source(VIMRC_EXTRA."-".machine."-".user.".pre")
call Source(VIMRC_EXTRA."")
call Source(VIMRC_EXTRA."-".user)
call Source(VIMRC_EXTRA."-".machine)
call Source(VIMRC_EXTRA."-".machine."-".user)
" used for searching documentation (~/.vim/doc/FEATURES.txt) etc.
set runtimepath+=~/.vim
" Settings for C language {{{
let c_gnu=1
let c_comment_strings=1
let c_space_errors=1
" }}}
" History and viminfo settings {{{
if has("cmdline_hist")
set history=10000
endif
if has("viminfo")
if filewritable(expand("$HOME/.vim/viminfo")) == 1 ||
\ filewritable(expand("$HOME/.vim/")) == 2
set viminfo=!,%,'5000,\"10000,:10000,/10000,n~/.vim/viminfo
else
set viminfo=
endif
endif
" Don't save backups of files.
set nobackup
set backupcopy=yes
" }}}
" Status line settings {{{
":set ruler
" Display a status-bar.
set laststatus=2
if has("statusline")
set statusline=%5*%{GetID()}%0*#%{winnr()}\ %<%f\ %3*%m%1*%r%0*\ %2*%y%4*%w%0*%=[%b\ 0x%B]\ \ %8l,%10([%c%V/%{strlen(getline(line('.')))}]%)\ %P
endif
" }}}
" Settings for Calendar plugin {{{
if !exists("g:calendar_diary")
let g:calendar_diary = "~/.vim/diary"
endif
" }}}
" Settings for Explorer script {{{
if !exists("g:explDetailedHelp")
let g:explDetailedHelp=1
endif
if !exists("g:explDetailedList")
let g:explDetailedList=1
endif
if !exists("g:explDateFormat")
let g:explDateFormat="%d %b %Y %H:%M"
endif
" }}}
" Settings for gcc & make {{{
let g:cflags="-Wall -pedantic"
let g:c_debug_flags="-ggdb -DDEBUG"
let g:makeflags=""
" }}}
" Settings for AutoLastMod {{{
" Set this to 1 if you will automaticaly change date of modification of file.
let g:autolastmod=1
" Modification is made on line like this variable (regular expression!):
let g:autolastmodtext="^\\([ ]*Last modified: \\)"
" }}}
" Priority between files for file name completion (suffixes) {{{
" Do not give .h low priority in command-line filename completion.
set suffixes-=.h
set suffixes+=.aux
set suffixes+=.bbl
set suffixes+=.blg
set suffixes+=.log
set suffixes+=.eps
set suffixes+=.ps
set suffixes+=.pdf
set wildignore+=*.dvi
set wildignore+=*.pdf
set wildignore+=*.o
set wildignore+=*.ko
set wildignore+=*.swp
set wildignore+=*.aux
set wildignore+=*.bbl
set wildignore+=*.blg
" }}}
" The cursor is kept in the same column (if possible). This applies to the
" commands: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", , and to the
" commands "d", "<<" and ">>" with a linewise operator, with "%" with a count
" and to buffer changing commands (CTRL-^, :bnext, :bNext, etc.). Also for an
" Ex command that only has a line number, e.g., ":25" or ":+".
set nostartofline
" Automatically setting options in various files
" WARNINNG: disable modeline if you are running vim version < 6.1.265 !!
" These are security problems. See http://www.guninski.com/vim1.html
" (reported by Georgi Guninski)
" TODO: there is no way how to test vim patchlevel version, therefore we are
" not able determine vim version < 6.1.265
set modeline
" Available TAGS files
set tags=./TAGS,./tags,tags
" Don't add EOF at end of file
set noendofline
" Do case sensitive matching
set noignorecase
set showfulltag
set cmdheight=2
set backspace=2
set incsearch
set report=0
set showcmd showmatch showmode
" Set title of the window to Platon's copyright
" set titleold=
" set titlestring=ViMconfig\ (c)\ 2000-2005\ Platon\ SDG
" set title
" Indent of 1 tab with size of 4 spaces
set tabstop=4
set shiftwidth=4
" Need more undolevels ??
" (default 100, 1000 for Unix, VMS, Win32 and OS/2)
set undolevels=10000
" Use an indent of 4 spaces, with no tabs. This setting is recommended by PEAR
" (PHP Extension and Application Repository) Conding Standarts. If you want
" this setting uncomment the expandtab setting below.
":set expandtab
" Settings for mouse (gvim under Xwindows)
set nomousefocus
set mousehide
set mousemodel=popup
" Cursor always in the middle of the screen if GUI is not running
if ! has("gui_running")
set scrolloff=999
endif
set sidescroll=5
set sidescrolloff=1
" Make window maximalized
set winheight=100
" The screen will not be redrawn while executing macros, registers
" and other commands that have not been typed. To force an updates use |:redraw|.
set lazyredraw
" time out on mapping after one second, time out on key codes after
" a tenth of a second
set timeout timeoutlen=1000 ttimeoutlen=100
" command completition
set wildchar=<Tab>
set wildmenu
set wildmode=longest:full,full
"set clipboard=unnamed
" Allow specified keys that move the cursor left/right to wrap to the
" previous/next line when the cursor is on the first/last character in the
" line. Allowed keys are 'h' and 'l', arrow keys are not allowed to wrap.
set whichwrap=h,l
" Customize display {{{
" lastline When included, as much as possible of the last line
" in a window will be displayed. When not included, a
" last line that doesn't fit is replaced with "@" lines.
"uhex Show unprintable characters hexadecimal as <xx>
" instead of using ^C and ~C.
set display+=lastline
set display+=uhex
" }}}
" Vim beeping go to the hell... {{{
" With very little patch Vim(gvim) doesn't beep! To dissable beeping patch
" source and set ':set noerrorbells' (default).
" Here is patch for version 6.0.193:
" Note: file src/misc1.c was modified with theses patches:
" 6.0.024 6.0.089 6.0.113 6.0.178 6.0.180
" but patch (probably) also work!
" Patch:
"*** vim60.193/src/misc1.c.orig Sat Feb 9 01:49:54 2002
"--- vim60.193/src/misc1.c Sat Feb 9 02:17:16 2002
"***************
"*** 2721,2727 ****
" void
" vim_beep()
" {
"! if (emsg_silent == 0)
" {
" if (p_vb)
" {
"--- 2721,2727 ----
" void
" vim_beep()
" {
"! if (emsg_silent == 0 && p_eb)
" {
" if (p_vb)
" {
set noerrorbells
set visualbell
set t_vb=
" }}}
" Set this, if you will open all windows for files specified
" on the commandline at vim startup.
if !exists("g:open_all_win")
let g:open_all_win=1
endif
" Settings for folding long lines
if !exists("g:fold_long_lines")
let g:fold_long_lines=300
endif
" }}}
" Keybord mappings {{{
"
" backspace fix
noremap
inoremap
cnoremap
" start of line
"noremap <C-A> i<Home>
inoremap <C-A> <Home>
cnoremap <C-A> <Home>
" end of line
noremap <C-E> i<End>
inoremap <C-E> <End>
" back one word
inoremap <C-B> <S-Left>
" forward one word
"inoremap <C-F> <S-Right>
" Switching between windows by pressing one time CTRL-X keys.
noremap <C-X> <C-W><C-W>
" Tip from http://vim.sourceforge.net/tips/tip.php?tip_id=173
noremap <C-J> <C-W>j<C-W>_
noremap <C-K> <C-W>k<C-W>_
" Make Insert-mode completion more convenient:
imap <C-L> <C-X><C-L>
set remap
map <C-O><C-O> :split
imap <C-O><C-O> <Esc>:split
" diakritika
":map <C-D><C-D> :so ~/.vim/diakritika.vim
":imap <C-D><C-D> <Esc>:so ~/.vim/diakritika.vim
" Open new window with file ~/.vimrc (ViM configuration file)
map <C-O><C-K> :split ~/.vimrc<CR>
imap <C-O><C-K> <Esc>:split ~/.vimrc<CR>
" Open new window with dir ~/.vim (ViM configuration dir)
map <C-O><C-V> :split ~/.vim<CR>
imap <C-O><C-V> <Esc>:split ~/.vim<CR>
" Safe delete line (don't add line to registers)
":imap <C-D> <Esc>"_ddi
imap <C-D> <Esc>:call SafeLineDelete()<CR>i
" Search for the current Visual selection.
vmap S y/<C-R>=escape(@",'/\')<CR>
" replace selected text with text in register
vnoremap p <Esc>:let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc>
" Good pasting toggle {{{
" From Christopher Swingley <cswingle AT iarc.uaf.edu>
" Whenever I want to paste something, I do:
" ,f
" i
" <paste>
" <esc>
" ,f
map ,f :set paste!<CR>:set paste?<CR>
" }}}
" Mappings for folding {{{
" Open one foldlevel of folds in whole file
" Note: 'Z' works like 'z' but for all lines in file
noremap Zo mzggvGzo'z
noremap ZO zR
noremap Zc mzggvGzc'z
noremap ZC zM
noremap Zd mzggvGzd'z
noremap ZD mzggvGzD'z
noremap Za mzggvGza'z
noremap ZA mzggvGzA'z
noremap Zx mzggvGzx'z
noremap ZX mzggvGzX'z
" }}}
" }}}
" Settings for IMAP input method (IMAP plugin) {{{
" detect iso-8859-2 encoding before latin1
set fileencodings=ucs-bom,utf-8,iso-8859-2,windows-1250,latin1
" set variable "b:input_method" to change input method
" let b:input_method = "latin2"
let b:input_method = &encoding
" you may disable actions of IMAP plugin with variable b:disable_imap
" 0 - enabled
" 1 - disabled
let b:disable_imap = 0
call Source("~/.vim/plugin/imaps.vim")
" }}}
" New commands {{{
command! -nargs=0 -range Indent <line1>,<line2>call Indent()
command! -nargs=0 -range FoldLongLines <line1>,<line2>call FoldLongLines()
command! -nargs=0 -range UnquoteMailBody <line1>,<line2>call UnquoteMailBody()
command! -nargs=0 CallProg call CallProg()
command! -nargs=0 OpenAllWin call OpenAllWin()
command! -nargs=* ReadFileAboveCursor call ReadFileAboveCursor(<f-args>)
command! -nargs=* R call ReadFileAboveCursor(<f-args>)
command! -nargs=0 DiacriticsOn call ChooseInputMethod(0)
command! -nargs=0 DiacriticsOff let b:disable_imap=1
" }}}
" Functions {{{
" Function ChangeFoldMethod() {{{
" Function for changing folding method.
"
if version >= 600
function! ChangeFoldMethod() abort
let choice = confirm("Which folde method?", "&manual\n&indent\n&expr\nma&rker\n&syntax", 2)
if choice == 1
set foldmethod=manual
elseif choice == 2
set foldmethod=indent
elseif choice == 3
set foldmethod=expr
elseif choice == 4
set foldmethod=marker
elseif choice == 5
set foldmethod=syntax
else
endif
endfunction
endif
" ChangeFoldMethod() }}}
" Function FoldLongLines() {{{
"
if version >= 600
function! FoldLongLines() range abort
let savelnum = line(".")
let lnum = a:firstline
let lend = a:lastline
if lnum == lend
" No visual area choosen --> whole file
let lnum = line(".")
let lend = line("$")
" Go to the begin of the file
exec "1go"
endif
while lnum <= lend
" Skip closed folds
if foldclosed(lnum) != -1
let lnum = foldclosedend(lnum) + 1
continue
endif
let dlzka = strlen(getline("."))
if dlzka >= g:fold_long_lines
" Create fold for one line
exec "normal zfl"
endif
let lnum = line(".")
" Move one line down
exec "normal j"
if lnum == lend
break
endif
endwhile
" ...and go back
exec "normal " . savelnum . "G"
redraw!
endfunction
endif
" FoldLongLines() }}}
" Function AutoLastMod() {{{
" Provides atomatic change of date in files, if it is set via
" modeline variable autolastmod to appropriate value.
"
function! AutoLastMod()
if exists("g:autolastmod")
if g:autolastmod < 1
return 0;
elseif g:autolastmod == 1
call LastMod(g:autolastmodtext)
endif
endif
endfunction
" AutoLastMod() }}}
" Function LastMod() {{{
" Automatic change date in *.html files.
"
function! LastMod(text, ...)
mark d
let line = "\\1" . strftime("%Y %b %d %X") " text of changed line
let find = "g/" . a:text " regexpr to find line
let matx = a:text . ".*" " ...if line was found
exec find
let curr_line = getline(".")
if match(curr_line, matx) == 0
" call setline(line("."), line)
call setline(line("."), substitute(getline("."), matx, line, ""))
exec "'d"
endif
endfunction
" LastMod() }}}
" Function OpenAllWin() {{{
" Opens windows for all files in the command line.
" Variable "opened" is used for testing, if window for file was already opened
" or not. This is prevention for repeat window opening after ViM config file
" reload.
"
function! OpenAllWin()
" save Vim option to variable
let s:save_split = &splitbelow
set splitbelow
let s:i = 1
if g:open_all_win == 1
while s:i < argc()
if bufwinnr(argv(s:i)) == -1 " buffer doesn't exists or doesn't have window
exec ":split " . escape(argv(s:i), ' \')
"echo "Current window is " . bufwinnr(s:i)
endif
let s:i = s:i + 1
endwhile
endif
" force first window to be maximalized. Behaviour of vim has changed after
" 6.2(?) release, therefore next command is not needed for vim < 6.2(?)
exec "normal 2\<C-w>\<C-w>1\<C-w>\<C-w>"
" restore Vim option from variable
if s:save_split
set splitbelow
else
set nosplitbelow
endif
endfunction
" OpenAllWin() }}}
" Function CallProg() {{{
function! CallProg() abort
let choice = confirm("Call:", "&make\nm&ake in cwd\n" .
\ "&compile\nc&ompile in cwd\n" .
\ "&run\nr&un in cwd")
if choice == 1
exec ":wall"
exec "! cd %:p:h; pwd; make " . g:makeflags
elseif choice == 2
exec ":wall"
exec "! cd " .
\ getcwd() . "; pwd; make " . g:makeflags
elseif choice == 3
:call Compile(1)
elseif choice == 4
:call Compile(0)
elseif choice == 5
exec "! cd %:p:h; pwd; ./%:t:r"
elseif choice == 6
exec "! cd " . getcwd() . "; pwd; ./%<"
endif
endfunction
" CallProg() }}}
" Function Compile() {{{
function! Compile(do_chdir) abort
let cmd = ""
let filename = ""
let filename_ext = ""
if a:do_chdir == 1
let cmd = "! cd %:p:h; pwd; "
let filename = "%:t:r"
let filename_ext = "%:t"
else
let cmd = "! cd " . getcwd() . "; pwd; "
let filename = "%<"
let filename_ext = "%"
endif
let choice = confirm("Call:",
\ "&compile\n" .
\ "compile and &debug\n" .
\ "compile and &run\n" .
\ "compile using first &line")
if choice != 0
exec ":wall"
endif
if choice == 1
exec cmd . "gcc " . g:cflags .
\ " -o " . filename . " " . filename_ext
elseif choice == 2
exec cmd . "gcc " . g:cflags . " " . g:c_debug_flags .
\ " -o " . filename . " " . filename_ext " && gdb " . filename
elseif choice == 3
exec cmd . "gcc " . g:cflags .
\ " -o " . filename . " " . filename_ext " && ./" . filename
elseif choice == 4
exec cmd . "gcc " . g:cflags .
\ " -o " . filename . " " . filename_ext .
\ substitute(substitute(getline(2), "VIMGCC", "", "g"), "GCC", "", "g" )
endif
endfunction
" Compile() }}}
" Function Indent() {{{
" Indents source code.
function! Indent() range abort
let savelnum = line(".")
let lnum = a:firstline
let lend = a:lastline
if lnum == lend
" No visual area choosen --> whole file
let lnum = line(".")
let lend = line("$")
" Go to the begin of the file
exec "1go"
endif
exec "normal " . lnum . "Gv" . lend . "G="
exec "normal " . savelnum . "G"
endfunction
" Indent() }}}
" Function UnquoteMailBody() {{{
"
function! UnquoteMailBody() range abort
" Every backslash character must be escaped in function -- Nepto
"exec "normal :%s/^\\([ ]*>[ ]*\\)*\\(\\|[^>].*\\)$/\\2/g<CR>"
let savelnum = line(".")
let lnum = a:firstline
let lend = a:lastline
if lnum == lend
" No visual area choosen --> whole file
let lnum = line(".")
let lend = line("$")
" Go to the begin of the file
exec "1go"
endif
exec ":" . lnum . "," . lend . "s/^[ >]\\+//"
exec "normal " . savelnum . "G"
endfunction
" UnquoteMailBody() }}}
" Function SafeLineDelete() {{{
"
function! SafeLineDelete()
exec "normal \"_dd"
endfunction
" SafeLineDelete() }}}
" Function GetID() {{{
" - used in statusline.
" If you are root, function return "# " string --> it is showed at begin of
" statusline
" If you aren't root, function return empty string --> nothing is visible
" Check for your name ID
let g:get_id = $USER
" If you are root, set to '#', else set to ''
if g:get_id == "root"
let g:get_id = "# "
else
let g:get_id = ""
endif
function! GetID()
return g:get_id
endfunction
" GetID() }}}
" Function ReadFileAboveCursor() {{{
"
function! ReadFileAboveCursor(file, ...)
let str = ":" . (v:lnum - 1) . "read " . a:file
let idx = 1
while idx <= a:0
exec "let str = str . \" \" . a:" . idx
let idx = idx + 1
endwhile
exec str
endfunction
" ReadFileAboveCursor() }}}
" Function RemoveAutogroup() {{{
"
silent! function! RemoveAutogroup(group)
silent exec "augroup! ". a:group
endfunction
" RemoveAutogroup() }}}
" Function SmartBS() {{{
"
" This function comes from Benji Fisher <benji AT e-mathDOTAMSDOTorg>
" http://vim.sourceforge.net/scripts/download.php?src_id=409
" (modified/patched by: Lubomir Host 'rajo' <rajo AT platon.sk>
" Srinath Avadhanula <srinath AT fastmailDOTfm> )
silent function! SmartBS()
let init = strpart(getline("."), 0, col(".")-1)
if exists("g:smartBS_" . &filetype)
silent exec "let matchtxt = matchstr(init, g:smartBS_" . &filetype . ")"
echo "SmartBS(" . matchtxt . ")"
if matchtxt != ''
let bstxt = substitute(matchtxt, '.', "\<bs>", 'g')
return bstxt
else
return "\<bs>"
endif
else
return "\<bs>"
endif
endfunction
" You can turn on smart backspacing in ftplugin by setting
" g:smartBS_<filetype> variable and turning on mapping
" inoremap <buffer> <BS> <C-R>=SmartBS()<CR>
"
" Example: TeX plugin
" " set regular expresion for Smart backspacing
" let g:smartBS_tex = '\(' .
" \ "\\\\[\"^'=v]{\\S}" . '\|' .
" \ "\\\\[\"^'=]\\S" . '\|' .
" \ '\\v \S' . '\|' .
" \ "\\\\[\"^'=v]{\\\\[iI]}" . '\|' .
" \ '\\v \\[iI]' . '\|' .
" \ '\\q \S' . '\|' .
" \ '\\-' .
" \ '\)' . "$"
"
" " map <BS> to function SmartBS()
" inoremap <buffer> <BS> <C-R>=SmartBS()<CR>
" }}}
" Function ChooseInputMethod() {{{
function! ChooseInputMethod(method)
let b:disable_imap=0
let g:available_methods = "&none\n&Tex-universal\n&tex-iso8859-2\n&iso8859-2\n&windows-1250\nunicode-&Html\n&UTF-8"
if a:method == 0
let choice = confirm("Choose input mapping:", g:available_methods, 1)
else
let choice = a:method
endif
if choice == 1
let b:input_method = "NONE"
elseif choice == 2
let b:input_method = "tex-universal"
elseif choice == 3
let b:input_method = "tex-iso8859-2"
elseif choice == 4
let b:input_method = "iso8859-2"
elseif choice == 5
let b:input_method = "windows-1250"
elseif choice == 6
let b:input_method = "unicode-html"
elseif choice == 7
let b:input_method = "UTF-8"
endif
if choice == 1
let b:disable_imap = 1
elseif choice != 0
call UseDiacritics()
endif
endfunction
"}}}
" Function UseDiacritics() {{{
function! UseDiacritics()
let b:disable_imap = 0
call Source("~/.vim/modules/diacritics.vim")
endfunction
" }}}
" }}}
" Autocomands {{{
if has("autocmd")
" Autocomands for PlatonCopyright {{{
augroup PlatonCopyright
autocmd!
autocmd BufLeave * set titlestring=
autocmd BufLeave * silent! call RemoveAutogroup("PlatonCopyright")
autocmd WinEnter * set titlestring=
autocmd WinEnter * silent! call RemoveAutogroup("PlatonCopyright")
autocmd BufWrite * set titlestring=
autocmd BufWrite * silent! call RemoveAutogroup("PlatonCopyright")
autocmd CmdwinEnter * set titlestring=
autocmd CmdwinEnter * silent! call RemoveAutogroup("PlatonCopyright")
augroup END
" }}}
" UGLY hack - preload templatefile.vim. This is needed for loading templates
" for all buffers (when opening all windows for buffers)
call Source("~/.vim/plugin/templatefile.vim")
augroup TemplateSystem
autocmd!
au BufNewFile * call LoadTemplateFile()
augroup END
" Autocomands for GUIEnter {{{
augroup GUIEnter
autocmd!
if has("gui_win32")
autocmd GUIEnter * simalt ~x
endif
augroup END
" }}}
" Autocomands for ~/.vimrc {{{
augroup VimConfig
autocmd!
" Reread configuration of ViM if file ~/.vimrc is saved
autocmd BufWritePost ~/.vimrc so ~/.vimrc | exec "normal zv"
autocmd BufWritePost vimrc so ~/.vimrc | exec "normal zv"
augroup END
" }}}
" Autocommands for *.c, *.h, *.cc *.cpp {{{
augroup C
autocmd!
"formatovanie C-zdrojakov
autocmd BufEnter *.c,*.h,*.cc,*.cpp map <buffer> <C-F> mfggvG$='f
autocmd BufEnter *.c,*.h,*.cc,*.cpp imap <buffer> <C-F> <Esc>mfggvG$='fi
autocmd BufEnter *.c,*.h,*.cc,*.cpp map <buffer> yii yyp3wdwi
autocmd BufEnter *.c,*.h,*.cc,*.cpp map <buffer> <C-K> :call CallProg()<CR>
autocmd BufRead,BufNewFile *.c,*.h,*.cc,*.cpp setlocal cindent
autocmd BufRead,BufNewFile *.c,*.h,*.cc,*.cpp setlocal cinoptions=>4,e0,n0,f0,{0,}0,^0,:4,=4,p4,t4,c3,+4,(2s,u1s,)20,*30,g4,h4
autocmd BufRead,BufNewFile *.c,*.h,*.cc,*.cpp setlocal cinkeys=0{,0},:,0#,!<C-F>,o,O,e
augroup END
" }}}
" Autocommands for *.html *.cgi {{{
" Automatic updates date of last modification in HTML files. File must
" contain line "^\([<space><Tab>]*\)Last modified: ",
" else will be date writtend on the current " line.
augroup HtmlCgiPHP
autocmd!
" Appending right part of tag in HTML files.
autocmd BufEnter *.phtml imap <buffer> QQ </><Esc>2F<lywf>f/pF<i
autocmd BufWritePre,FileWritePre *.phtml call AutoLastMod()
autocmd BufEnter *.html imap <buffer> QQ </><Esc>2F<lywf>f/pF<i
autocmd BufWritePre,FileWritePre *.html call AutoLastMod()
autocmd BufEnter *.cgi imap <buffer> QQ </><Esc>2F<lywf>f/pF<i
autocmd BufWritePre,FileWritePre *.cgi call AutoLastMod()
autocmd BufEnter *.php imap <buffer> QQ </><Esc>2F<lywf>f/pF<i
autocmd BufWritePre,FileWritePre *.php call AutoLastMod()
autocmd BufEnter *.php3 imap <buffer> QQ </><Esc>2F<lywf>f/pF<i
autocmd BufWritePre,FileWritePre *.php3 call AutoLastMod()
augroup END
" }}}
" Autocomands for *.tcl {{{
augroup Tcl
autocmd!
autocmd WinEnter *.tcl map <buffer> <C-K> :call CallProg()<CR>
autocmd BufRead,BufNewFile *.tcl setlocal autoindent
augroup END
" }}}
" Autocomands for *.txt {{{
augroup Txt
autocmd BufNewFile,BufRead *.txt setf txt
augroup END
" }}}
" Autocomands for *.tt2 {{{
augroup Tt2
autocmd BufNewFile,BufRead *.tt2 setf tt2
augroup END
" }}}
" Autocomands for Makefile {{{
augroup Makefile
autocmd!
autocmd BufEnter [Mm]akefile* map <buffer> <C-K> :call CallProg()<CR>
augroup END
" }}}
" Autocomands for GnuPG (gpg) {{{
" Transparent editing of gpg encrypted files.
" By Wouter Hanegraaff <wouter@blub.net>,
" enhanced by Lubomir Host 'rajo' <rajo AT platon.sk>
"
augroup GnuPG
autocmd!
" First make sure nothing is written to ~/.viminfo while editing
" an encrypted file.
" viminfo doesn't have local value, set global value instead
autocmd BufReadPre,FileReadPre *.gpg,*.asc set viminfo=
" We don't want a swap file, as it writes unencrypted data to disk
autocmd BufReadPre,FileReadPre *.gpg,*.asc setlocal noswapfile
" Switch to binary mode to read the encrypted file
autocmd BufReadPre,FileReadPre *.gpg,*.asc setlocal bin
autocmd BufReadPre,FileReadPre *.gpg,*.asc let ch_save = &ch | setlocal ch=2
autocmd BufReadPost,FileReadPost *.gpg,*.asc '[,']!gpg --decrypt -q -a 2>/dev/null
" Switch to normal mode for editing
autocmd BufReadPost,FileReadPost *.gpg,*.asc setlocal nobin
autocmd BufReadPost,FileReadPost *.gpg,*.asc let &ch = ch_save | unlet ch_save
autocmd BufReadPost,FileReadPost *.gpg,*.asc execute ":doautocmd BufReadPost " . expand("%:r")
" Convert all text to encrypted text before writing
autocmd BufWritePre,FileWritePre *.gpg,*.asc '[,']!gpg --encrypt --default-recipient-self -q -a
" Undo the encryption so we are back in the normal text, directly
" after the file has been written.
autocmd BufWritePost,FileWritePost *.gpg,*.asc undo
augroup END
" }}}
endif " if has("autocmd")
" }}} Autocomands
" Colors {{{
set background=dark
hi StatusLine term=bold,reverse cterm=bold,reverse
hi StatusLineNC term=reverse cterm=reverse
hi User1 term=inverse,bold cterm=inverse,bold ctermfg=Red
hi User2 term=bold cterm=bold ctermfg=Yellow
hi User3 term=inverse,bold cterm=inverse,bold ctermfg=Blue
hi User4 term=inverse,bold cterm=inverse,bold ctermfg=LightBlue
hi User5 term=inverse,bold cterm=inverse,bold ctermfg=Red ctermbg=Green
hi Folded term=standout cterm=bold ctermfg=Blue ctermbg=Black
hi FoldColumn term=standout ctermfg=DarkBlue ctermbg=Black
hi Comment term=bold ctermfg=DarkCyan
" Parenthesis checking
hi MatchParen term=bold cterm=bold,reverse ctermfg=DarkBlue ctermbg=Black
" }}}
call Source(VIMRC_EXTRA.".post")
call Source(VIMRC_EXTRA."-".user.".post")
call Source(VIMRC_EXTRA."-".machine.".post")
call Source(VIMRC_EXTRA."-".machine."-".user.".post")
if exists("g:open_all_win")
if g:open_all_win == 1
" Open all windows only if we are not running (g)vimdiff
if match(v:progname, "diff") < 0
call OpenAllWin()
endif
endif
" turn g:open_all_win off after opening all windows
" it prevents reopen windows after 2nd sourcing .vimrc
let g:open_all_win = 0
endif
" Modeline {{{
" vim:set ts=4:
" vim600:fdm=marker fdl=0 fdc=3
" }}}
Platon Group <platon@platon.org> http://platon.org/
|