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