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