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@0
|
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@0
|
24 |
inoremap ii <ESC>
|
sawine@0
|
25 |
vnoremap ii <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:
|