.vimrc
author Eugen Sawin <sawine@me73.com>
Sun, 22 Apr 2012 23:50:59 +0200
changeset 2 30a239e15f59
parent 1 ec86797f55f8
child 3 407757340e9c
permissions -rw-r--r--
Dont remember.
     1 " Name: Moon Vim Configuration
     2 " Author: Eugen Sawin <sawine@me73.com>
     3 
     4 let indentspace=2
     5 " mappings
     6 let mapleader=","
     7 nnoremap <leader>y "*Y
     8 nnoremap <leader>p "*P
     9 " nnoremap <leader>cc :'c,. s/^/\/\/ /<cr>
    10 nnoremap <leader>hg :HeaderguardAdd<cr>
    11 nnoremap <leader>1 :set lines=53 columns=85<CR><C-w>o
    12 nnoremap <leader>2 :set lines=53 columns=171<CR><C-w>v
    13 nnoremap <leader>dtr :%s/\s\+$<cr>
    14 nnoremap <leader><space> :noh<cr>
    15 nnoremap / /\v
    16 nnoremap <leader>evim :split $MYVIMRC<cr>
    17 nnoremap <leader>svim :source $MYVIMRC<cr>
    18 nnoremap <leader>v <C-w>v<C-w>l
    19 nnoremap <leader>h <C-w>s<C-w>l
    20 nnoremap <C-h> <C-w>h
    21 nnoremap <C-j> <C-w>j
    22 nnoremap <C-k> <C-w>k
    23 nnoremap <C-l> <C-w>l
    24 inoremap ii <ESC>
    25 vnoremap ii <ESC>
    26 inoremap <C-h> <left>
    27 inoremap <C-j> <down>
    28 inoremap <C-k> <up>
    29 inoremap <C-l> <right>
    30 vnoremap / /\v
    31 
    32 " vim > vi
    33 set nocompatible
    34 filetype on
    35 filetype plugin on
    36 filetype indent on
    37 set autochdir
    38 set notitle
    39 
    40 " search
    41 set incsearch
    42 set ignorecase
    43 set smartcase
    44 set hlsearch
    45 
    46 " scrolling
    47 set scrolloff=3
    48 
    49 " tab completion
    50 set wildmode=list:longest,full
    51 set wildmenu
    52 set wildignore+=.hg,.git,.svn                    " Version control
    53 set wildignore+=*.aux,*.out,*.toc                " LaTeX intermediate files
    54 set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg   " binary images
    55 set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files
    56 set wildignore+=*.spl                            " compiled spelling word lists
    57 set wildignore+=*.sw?                            " Vim swap files
    58 set wildignore+=*.luac                           " Lua byte code
    59 set wildignore+=migrations                       " Django migrations
    60 set wildignore+=*.pyc                            " Python byte code
    61 set wildignore+=*.orig                           " Merge resolution files
    62 " Clojure/Leiningen
    63 set wildignore+=classes
    64 set wildignore+=lib
    65 
    66 " command
    67 set cmdheight=1
    68 set history=500
    69 
    70 " status line
    71 set laststatus=2
    72 set statusline=%.50F " (almost) full path to file
    73 set statusline+=%= " align right
    74 set statusline+=%l/%L " line / total lines
    75 
    76 " indenting
    77 let &shiftwidth=indentspace
    78 let &tabstop=indentspace
    79 set expandtab
    80 let &softtabstop=indentspace
    81 set autoindent
    82 set textwidth=80
    83 set colorcolumn=81
    84 set formatoptions=qrn1
    85 set wrap
    86 " highlight OverLength ctermbg=red ctermfg=white guibg=#592929
    87 " match OverLength /\%80v.\+/
    88 
    89 " misc
    90 set showmode
    91 set showcmd
    92 set hidden
    93 " set visualbell
    94 set cursorline
    95 set gcr=a:blinkwait0,a:block-cursor
    96 set ttyfast
    97 set ruler
    98 set backspace=indent,eol,start
    99 " set relativenumber
   100 set undofile
   101 au FocusLost * :wa
   102 " folding
   103 " set foldmethod=indent
   104 set lines=53
   105 set columns=85
   106 " mouse
   107 set mouse=a
   108 
   109 " encoding
   110 scriptencoding utf-8
   111 
   112 " backups
   113 set undodir=~/.vim/tmp/undo//
   114 set backupdir=~/.vim/tmp/backup//
   115 set directory=~/.vim/tmp/swap//
   116 set backup
   117 set noswapfile
   118 
   119 "
   120 " syntax and colours
   121 "
   122 set guioptions-=m
   123 set guioptions-=T
   124 set guioptions-=r
   125 set guioptions-=R
   126 set guioptions-=l
   127 set guioptions-=L
   128 set guioptions-=b
   129 set nonumber
   130 set showmatch
   131 " Activate scheme
   132 colorscheme molokai
   133 syntax on
   134 
   135 if exists("loaded_headerguard")
   136     finish
   137 endif
   138 let loaded_headerguard = 1
   139 
   140 
   141 " Save 'cpoptions' and set Vim default to enable line continuations.
   142 let s:save_cpoptions = &cpoptions
   143 set cpoptions&vim
   144 
   145 if ! exists("*g:HeaderguardName")
   146     function! g:HeaderguardName()
   147         return toupper(expand('%:t:gs/[^0-9a-zA-Z_]/_/g'))
   148     endfunction
   149 endif
   150 
   151 if ! exists("*g:HeaderguardLine1")
   152     function! g:HeaderguardLine1()
   153         return "#ifndef " . g:HeaderguardName()
   154     endfunction
   155 endif
   156 
   157 if ! exists("*g:HeaderguardLine2")
   158     function! g:HeaderguardLine2()
   159         return "#define " . g:HeaderguardName()
   160     endfunction
   161 endif
   162 
   163 if ! exists("*g:HeaderguardLine3")
   164     function! g:HeaderguardLine3()
   165         return "#endif /* " . g:HeaderguardName() . " */"
   166     endfunction
   167 endif
   168 
   169 function! s:HeaderguardAdd()
   170     " Test for empty filename.
   171     if expand('%') == ""
   172         echoerr "Empty filename (save file and try again)."
   173         return
   174     endif
   175     " Locate first, second, and last pre-processor directives.
   176     call cursor(1, 1)
   177     let s:poundLine1 = search('^#', "cW")
   178     let s:poundLine2 = search('^#', "W")
   179     call cursor(line("$"), col("$"))
   180     let s:poundLine3 = search('^#', "b")
   181 
   182     " Locate #ifndef, #define, #endif directives.
   183     call cursor(1, 1)
   184     let s:regex1  = '^#\s*ifndef\s\+\w\+\|'
   185     let s:regex1 .= '^#\s*if\s\+!\s*defined(\s*\w\+\s*)'
   186     let s:guardLine1 = search(s:regex1, "cW")
   187     let s:guardLine2 = search('^#\s*define', "W")
   188     call cursor(line("$"), col("$"))
   189     let s:guardLine3 = search('^#\s*endif', "b")
   190 
   191     " Locate #define of desired guardName.
   192     call cursor(1, 1)
   193     let s:guardDefine = search('^#\s*define\s\+' . 
   194                 \ g:HeaderguardName() . '\>', "cW")
   195 
   196     " If the candidate guard lines were found in the proper
   197     " location (the outermost pre-processor directives), they
   198     " are deemed valid header guards.
   199     if s:guardLine1 > 0 && s:guardLine2 > 0 && s:guardLine3 > 0 &&
   200                 \ s:guardLine1 == s:poundLine1 &&
   201                 \ s:guardLine2 == s:poundLine2 &&
   202                 \ s:guardLine3 == s:poundLine3
   203         " Replace existing header guard.
   204         call setline(s:guardLine1, g:HeaderguardLine1())
   205         call setline(s:guardLine2, g:HeaderguardLine2())
   206         call setline(s:guardLine3, g:HeaderguardLine3())
   207         " Position at new header guard start.
   208         call cursor(s:guardLine1, 1)
   209 
   210     elseif s:guardDefine > 0
   211         echoerr "Found '#define " . g:HeaderguardName() . 
   212                     \ "' without guard structure"
   213         " Position at unexpected #define.
   214         call cursor(s:guardDefine, 1)
   215 
   216     else
   217         " No header guard found.
   218         call append(0, [ g:HeaderguardLine1(), g:HeaderguardLine2(), "" ])
   219         call append(line("$"), ["", g:HeaderguardLine3()])
   220         call cursor(1, 1)
   221     endif
   222 endfunction
   223 command! HeaderguardAdd call s:HeaderguardAdd()
   224 
   225 " Restore saved 'cpoptions'.
   226 let cpoptions = s:save_cpoptions
   227 " vim: sts=4 sw=4 tw=80 et ai: