С тегом «vimrc»
Привет всем!
Мучаюсь уже неделю, решить проблему никак не получается..
Аббревиатуры подтягиваются из файлика ~/.vim/ftplugin/pascal.vim:
1
2
3
4
5
|
...
iab <buffer> begins BEGINS
iab <buffer> end END
iab <buffer> no-error NO-ERROR
... |
Если скормить файл vim'у через параметр: "$ vim temp.p", то все нормально тихо и гладко.
А вот при открытии файла из самого vim'а: ":e temp.p" выдает кучу ошибок такого типа -
Обнаружена ошибка при обработке ~/.vim/ftplugin/pascal.vim
строка 126:
Vim(iabbrev):E474: Недопустимый аргумент
На тех строках, которые он указывает находятся абб с дефисом, например "no-error NO-ERROR".
Как правильно назначать такие аббы?
Поделюсь, раз такое дело:
Занялся причесыванием своего конфигурационного файла для Vim. Может кому-то будет полезен или поделится кто своими наработками и замечаниями.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
|
"-------------------------
"" Basic Settings
"-------------------------
" " For vim outliner
filetype plugin indent on
" disable the welcome screen
set shortmess+=I
" " Set encoding for autocompetition
set fileencodings=utf-8,cp1251,koi8-r,cp866
" " More pretty colors
set t_Co=256
" " Setting up colorscheme
colorscheme xoria256
" " Set the reversal of lines according
set wrap
set linebreak
" " I am not really now why i add this line
set virtualedit=all
" " Cool stuff to view word which changes now
set cpoptions=ces$
" " Turning off capability with vi
set nocompatible
" " Show cursor all the time
set ruler
" " Show uncompleted commands in status bar
set showcmd
" " Switch on line numbering
set nu
" " Folding on indentation
set foldmethod=manual
" " Search as you type
set incsearch
" " Stop the search at the end of file
set nowrapscan
" Теперь нет необходимости передвигать курсор к краю экрана, чтобы подняться
" в режиме редактирования
set scrolljump=7
" " Теперь нет необходимости передвигать курсор к краю экрана, чтобы
" опуститься в режиме редактирования
set scrolloff=7
" " Set visual bell off
set novisualbell
set t_vb=
" " Default encoding
set termencoding=utf-8
" " Don't remove current buffer, when we switch to next.
set hidden
" " make command line height in one line
set ch=1
" " Hide mouse pointer when typing
set mousehide
" " Set autoindent
set autoindent
" " Syntax lighting
syntax on
" " Say to vim, that the background is black.
" " That give us more beauty colors :)
" set background=dark
" " Turn off backup files
set nobackup
" " Turn off swap files
set noswapfile
" " Conversion tab to spaces.
set expandtab
" " set default tab size
set shiftwidth=4
set softtabstop=4
set tabstop=4
set smarttab
"
set cursorline
" " Paren mode
" :let loaded_matchparen = 1
set showmatch
" " Status line format
set statusline=%<%f%h%m%r%=format=%{&fileformat}\ file=%{&fileencoding}\ enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %P
set laststatus=2
" " Set "smart" indent
set smartindent
" " Session option
set sessionoptions=curdir,buffers,tabpages
"-------------------------
"" Hotkeys
"-------------------------
" CTRL-F for omni completion
imap <C-F> <C-X><C-O>
" " C-c and C-v - Copy/Paste using "Global clipboard"
vmap <C-C> "+yi
imap <C-V> <esc>"+gPi
" " Shitf-Insert like xterm
map <S-Insert> <MiddleMouse>
" C-y - удаление текущей строки
" nmap <C-y> dd
" imap <C-y> <esc>ddi
" " Поиск и замена слова под курсором
nmap ; :%s/\<<c-r>=expand("<cword>")<cr>\>/
"
" F3 - просмотр ошибок
nmap <F3> :copen<cr>
vmap <F3> <esc>:copen<cr>
imap <F3> <esc>:copen<cr>
" " F5 - просмотр списка буферов
nmap <F5> <Esc>:BufExplorer<cr>
vmap <F5> <esc>:BufExplorer<cr>
imap <F5> <esc><esc>:BufExplorer<cr>
" " F6 - предыдущий буфер
map <F6> :bp<cr>
vmap <F6> <esc>:bp<cr>i
imap <F6> <esc>:bp<cr>i
" " F7 - следующий буфер
map <F7> :bn<cr>
vmap <F7> <esc>:bn<cr>i
imap <F7> <esc>:bn<cr>i
" " F8 - список закладок
map <F8> :MarksBrowser<cr>
vmap <F8> <esc>:MarksBrowser<cr>
imap <F8> <esc>:MarksBrowser<cr>
" команда
map <F9> :make<cr>
vmap <F9> <esc>:make<cr>i
imap <F9> <esc>:make<cr>i
" " F10 - удалить буфер
" map <F10> :bd<cr>
" vmap <F10> <esc>:bd<cr>
" imap <F10> <esc>:bd<cr>
" " VimCommander
noremap <silent> <F11> :cal VimCommanderToggle()<CR>
" " < & > - делаем отступы для блоков
" vmap < <gv
" vmap > >gv
" " Клавиши быстрого редактирования строки, в режиме вставки
" imap <C-J> <Left>
" imap <C-K> <Right>
" imap <C-L> <Del>
" " И командной строке
" cmap <C-K> <Right>
" cmap <C-J> <Left>
" cmap <C-L> <Del>
" " Moving the lines easily.
nmap <c-j> mz:m+<CR>`z==
nmap <c-k> mz:m-2<CR>`z==
imap <c-j> <Esc>:m+<CR>==gi
imap <c-k> <Esc>:m-2<CR>==gi
vmap <c-j> :m'>+<CR>gv=`<my`>mzgv`yo`z
vmap <c-k> :m'<-2<CR>gv=`>my`<mzgv`yo`z
" " Меню выбора кодировки текста (koi8-r, cp1251, cp866, utf8)
set wildmenu
set wcm=<Tab>
menu Encoding.koi8-r :e ++enc=koi8-r<CR>
menu Encoding.windows-1251 :e ++enc=cp1251<CR>
menu Encoding.cp866 :e ++enc=cp866<CR>
menu Encoding.utf-8 :e ++enc=utf8 <CR>
" Switches spelling
setlocal spell spelllang=ru,en
set wildmenu
set wcm=<Tab>
menu Spl.next ]s
menu Spl.prev [s
menu Spl.word_good zg
menu Spl.word_wrong zw
menu Spl.word_ignore zG
imap <F2> <Esc>:set spell!<CR>
nmap <F2> :set spell!<CR>
imap <C-F2> <Esc>:emenu Spl.<TAB>
nmap <C-F2> :emenu Spl.<TAB>
" " For snipmate plugin
filetype plugin on
au BufRead,BufNewFile *.phps set filetype=php
au BufRead,BufNewFile *.thtml set filetype=php
" " If file head have #!/bin/ then chmod +x to file
" au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod a+x | endif | endif
" Настройки для SessionMgr
let g:SessionMgr_AutoManage = 0
let g:SessionMgr_DefaultName = "mysession"
" " if you need to save file with root permission, just type :Wsudo to save.
command Wsudo set buftype=nowrite | silent execute ':%w !sudo tee %' | set buftype= | e! %
" allow command line editing like emacs
cnoremap <C-A> <Home>
cnoremap <C-E> <End>
" cnoremap <C-F> <Right>
cnoremap <C-N> <End>
cnoremap <C-P> <Up>
cnoremap <ESC>b <S-Left>
cnoremap <ESC><C-B> <S-Left>
cnoremap <ESC>f <S-Right>
cnoremap <ESC><C-F> <S-Right>
cnoremap <ESC><C-H> <C-W>
|
Он у меня в ужасно состоянии, всё никак не дойдут руки "причесать" :)
Остальные конфиги если кому интересно, всегда доступны через git на github
P.S. Парсер почему-то часть конфига перечеркнул. В чём дело не имею ни малейшего понятия =(
Ну и я приобщусь:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
|
" ------------------------------
" .vimrc klen <[email protected]>
" ------------------------------
" Setup
if !exists('s:loaded_my_vimrc')
" Don't reset twice on reloading - 'compatible' has SO many side effects.
set nocompatible " to use many extensions of Vim.
" Create special directory for backup and swap
if finddir($HOME.'/.data/') == ''
silent call mkdir($HOME.'/.data/')
endif
if finddir($HOME.'/.data/backup') == ''
silent call mkdir($HOME.'/.data/backup')
endif
set backup " make backup file and leave it around
set backupdir=$HOME/.data/backup " where to put backup file
set backupskip&
set backupskip+=svn-commit.tmp,svn-commit.[0-9]*.tmp
if finddir($HOME.'/.data/swap') == ''
silent call mkdir($HOME.'/.data/swap')
endif
set directory=$HOME/.data/swap " where to put swap file
if finddir($HOME.'/.data/sessions') == ''
silent call mkdir($HOME.'/.data/sessions')
endif
let g:session_dir = $HOME.'/.data/sessions'
endif
set hidden " не требовать сохранения буфера
set title " показывать имя файла в заголовке окна
set autoread " отслеживать изменения файлов
set visualbell " ошибки без писка
set modeline " читать параметры конфигурации из открытого файла
set magic " добавим магии
" Indent and tabulation
set autoindent " копирует отступ от предыдущей строки
set smartindent " включаем 'умную' автоматическую расстановку отступов
set expandtab " tab with spaces
set smarttab
set shiftwidth=4 " Размер сдвига при нажатии на клавиши << и >>
set softtabstop=4 " Табуляция 4 пробела
set shiftround " удалять лишние пробелы при отступе
" Backup and swap files
set history=400 " history length
set viminfo+=h " save history
set sessionoptions-=blank " dont save blank vindow
set sessionoptions-=options " dont save options
" Search options
set hlsearch " Подсветка результатов
set ignorecase " Игнорировать регистр букв при поиске
set incsearch " При поиске перескакивать на найденный текст в процессе набора строки
set smartcase " Игнорировать предыдущую опцию если в строке поиска есть буквы разного регистра
" Localization
set langmenu=none " Always use english menu
set keymap=russian-jcukenwin " Переключение раскладок клавиатуры по <C-^>
set iminsert=0 " Раскладка по умолчанию - английская
set imsearch=0 " Раскладка по умолчанию при поиске - английская
set spelllang=en,ru " Языки для проверки правописания
set encoding=utf-8
set fileencodings=utf-8,cp1251,koi8-r,cp866
set termencoding=utf-8
" Строка статуса и командная строка
set laststatus=2 " всегда отображать статусную строку для каждого окна
set shortmess=atToOI
set showcmd " show command
set showmode " show mode
set statusline=%<%f%h%m " filename and modify flag
set statusline+=%#Error#%r%*%= " read only and separator
set statusline+=\ type=%Y
set statusline+=\ format=%{&fileformat}
set statusline+=\ file=%{&fileencoding}
set statusline+=\ enc=%{&encoding}
set statusline+=\ %b\ 0x%B\ %l,%c%V\ %P
set wildmenu " использовать wildmenu ...
set wildcharm=<TAB> " ... с авто-дополнением
set wildignore=*.pyc " Игнорировать pyc файлы
set cmdheight=2 " Command line height 2
" Отображение
set foldenable
set foldclose=all
set foldmethod=syntax
set foldnestmax=3 "deepest fold is 3 levels
set foldopen=block,insert,jump,mark,percent,quickfix,search,tag,undo " This commands open folds
set listchars=eol:$,tab:>-,trail:·,nbsp:~,extends:>,precedes:<
set wrap " перенос строк
set linebreak " перенос строк по словам, а не по буквам
set showmatch " подсвечивать скобки
set winminheight=0 " минимальная высота окна
set winminwidth=0 " минимальная ширина окна
set lazyredraw " перерисовывать буфер менее плавно
set confirm " использовать диалоги вместо сообщений об ошибках
set shortmess=fimnrxoOtTI " использовать сокращённые диалоги
" Редактирование
set backspace=indent,eol,start
set clipboard+=unnamed " включаем X clipboard
set virtualedit=all " On virtualedit for all mode
set go+=a " выделение в виме копирует в буфер системы
" Скролл
set scrolloff=4 " 4 символа минимум под курсором
set sidescroll=4
set sidescrolloff=10 " 10 символов минимум под курсором при скролле
" Customization
syntax on
" enable mouse
if &term =~ "xterm"
set t_Co=256 " set 256 colors
set background=dark " set background color to dark
colorscheme wombat256
set ttyfast
set mouse=a
set mousemodel=popup
endif
set mousehide " Hide the mouse when typing text
" Опции автодополнения
set completeopt=menu
set infercase " предлагать авто-дополнение на основе уже введённого регистра
" Перемещать курсор на следующую строку при нажатии на клавиши вправо-влево и пр.
set whichwrap=b,s,<,>,[,],l,h
" Подключение тег файла
set tags=tags
" set custom map leader to ','
let mapleader = ","
" Plugins setup
" Taglist
let Tlist_GainFocus_On_ToggleOpen = 1 " Jump to taglist window to open
let Tlist_Close_On_Select = 0 " Close taglist when a file or tag selected
let Tlist_Exit_OnlyWindow = 1 " If you are last kill your self
let Tlist_Show_One_File = 1 " Displaying tags for only one file
let Tlist_Use_Right_Window = 1 " split to rigt side of the screen
let Tlist_Compart_Format = 1 " Remove extra information and blank lines from taglist window
let Tlist_Compact_Format = 1 " Do not show help
let Tlist_Enable_Fold_Column = 0 " Don't Show the fold indicator column
let Tlist_WinWidth = 30 " Taglist win width
let Tlist_Display_Tag_Scope = 1 " Show tag scope next to the tag name
let Tlist_BackToEditBuffer = 0 " If no close on select, let the user choose back to edit buffer or not
let Grep_Skip_Dirs = 'RCS CVS SCCS .svn .git'
let Grep_Cygwin_Find = 1
" Comment with space
let NERDSpaceDelims = 1
" Enable extended matchit
runtime macros/matchit.vim
" ------------------------------
" Functions
" Подсветка текущей раскладки
fun! KeyMapHighlight()
if &iminsert == 0
hi StatusLine ctermfg=White ctermbg=Blue
else
hi StatusLine ctermbg=Red
endif
endfun
call KeyMapHighlight()
" Биндинг клавиш"
fun! Map_ex_cmd(key, cmd)
execute "nmap ".a:key." " . ":".a:cmd."<CR>"
execute "cmap ".a:key." " . "<C-C>:".a:cmd."<CR>"
execute "imap ".a:key." " . "<C-O>:".a:cmd."<CR>"
execute "vmap ".a:key." " . "<Esc>:".a:cmd."<CR>gv"
endfun
" Биндинг переключалки опций
fun! Toggle_option(key, opt)
call Map_ex_cmd(a:key, "set ".a:opt."! ".a:opt."?")
endfun
" передвигаемся по вкладкам
fun! TabJump(direction)
let l:tablen=tabpagenr('$')
let l:tabcur=tabpagenr()
if a:direction=='left'
if l:tabcur>1
execute 'tabprevious'
endif
else
if l:tabcur!=l:tablen
execute 'tabnext'
endif
endif
endfun
" Sessions
fun! SessionRead(name)
let s:name = g:session_dir.'/'.a:name.'.session'
if getfsize(s:name) >= 0
echo "Reading " s:name
exe 'source '.s:name
exe 'silent! source '.getcwd().'/.vim/.vimrc'
else
echo 'Not find session: '.a:name
endif
endfun
fun! SessionInput(type)
let s:name = input(a:type.' session name? ')
if a:type == 'Save'
call SessionSave(s:name)
else
call SessionRead(s:name)
endif
endfun
fun! SessionSave(name)
exe "mks! " g:session_dir.'/'.a:name.'.session'
echo "Session" a:name "saved"
endfun
" Omni and dict completition
fun! AddWrapper()
if exists('&omnifunc') && &omnifunc != ''
return "\<C-X>\<C-o>\<C-p>"
else
return "\<C-N>"
endif
endfun
" ------------------------------
" Autocommands
if has("autocmd")
filetype plugin indent on
augroup vimrcEx
au!
" Подсветка раскладки
au WinEnter * :call KeyMapHighlight()
" Auto reload vim settins
au! bufwritepost rc.vim source ~/.vimrc
" Highlight insert mode
au InsertEnter * set cursorline
au InsertLeave * set nocursorline
" au InsertEnter * highlight CursorLine ctermbg=DarkBlue
" au InsertLeave * highlight CursorLine ctermbg=236
" New file templates
au BufNewFile * silent! 0r $HOME/.vim/templates/%:e.tpl
"Omni complete settings
" au FileType python set omnifunc=pythoncomplete#Complete
au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
au FileType html set omnifunc=htmlcomplete#CompleteTags
au FileType css set omnifunc=csscomplete#CompleteCSS
" Autosave last session
if has('mksession')
au VimLeavePre * :call SessionSave('last')
endif
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" Also don't do it when the mark is in the first line, that is the default
" position when opening a file.
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
augroup END
endif
" ------------------------------
" Hot keys
"
" Text navigation
imap <M-l> <Right>
imap <M-h> <Left>
imap <M-j> <Down>
imap <M-k> <Up>
nnoremap <Space> <C-d>
" Set paste mode for paste from terminal
nmap <silent> ,p :set invpaste<CR>:set paste?<CR>
" Новая строка и выход из режима вставки
map <S-O> i<CR><ESC>
" Drop hightlight search result
map <silent> <leader>n :silent :nohls<CR>
" Omni and dict completition on space
inoremap <Nul> <C-R>=AddWrapper()<CR>
inoremap <C-Space> <C-R>=AddWrapper()<CR>
" Fast scrool
nnoremap <C-e> 3<C-e>
nnoremap <C-y> 3<C-y>
" allow command line editing like emacs
cnoremap <C-A> <Home>
cnoremap <C-B> <Left>
cnoremap <C-E> <End>
cnoremap <C-F> <Right>
cnoremap <C-N> <Down>
cnoremap <C-P> <Up>
" Close cwindow
noremap <silent> ,ll :ccl<CR>
noremap <silent> ,nn :cn<CR>
" Window commands
noremap <silent> ,h :wincmd h<CR>
noremap <silent> ,j :wincmd j<CR>
noremap <silent> ,k :wincmd k<CR>
noremap <silent> ,l :wincmd l<CR>
noremap <silent> ,sb :wincmd p<CR>
noremap <silent> ,cj :wincmd j<CR>:close<CR>
noremap <silent> ,ck :wincmd k<CR>:close<CR>
noremap <silent> ,ch :wincmd h<CR>:close<CR>
noremap <silent> ,cl :wincmd l<CR>:close<CR>
noremap <silent> ,cw :close<CR>
" Buffer commands
noremap <silent> ,bp :bp<CR>
noremap <silent> ,bn :bn<CR>
noremap <silent> ,bw :w<CR>
noremap <silent> ,bd :bd<CR>
noremap <silent> ,ls :ls<CR>
" Delete all buffers
nmap <silent> ,da :exec "1," . bufnr('$') . "bd"<cr>
" Search the current file for the word under the cursor and display matches
nmap <silent> ,gw :Rgrep<CR>
" Search the current file for the WORD under the cursor and display matches
" nmap <silent> ,gW
" \ :vimgrep /<C-r><C-a>/ %<CR>:ccl<CR>:cwin<CR><C-W>J:set nohls<CR>
" Работа с вкладками
" новая вкладка
call Map_ex_cmd("<C-W>t", ":tabnew")
" предыдущая вкладка
nmap Z :call TabJump('left')<cr>
" следующая вкладка
nmap X :call TabJump('right')<cr>
" первая вкладка
call Map_ex_cmd("<A-UP>", ":tabfirst")
" последняя вкладка
call Map_ex_cmd("<A-DOWN>", ":tablast")
" переместить вкладку в начало
nmap Q :tabmove 0<cr>
" переместить вкладку в конец
call Map_ex_cmd("<C-DOWN>", ":tabmove")
" Переключение раскладок будет производиться по <C-F>
cmap <silent> <C-F> <C-^>
imap <silent> <C-F> <C-^>X<Esc>:call KeyMapHighlight()<CR>a<C-H>
nmap <silent> <C-F> a<C-^><Esc>:call KeyMapHighlight()<CR>
vmap <silent> <C-F> <Esc>a<C-^><Esc>:call KeyMapHighlight()<CR>gv
" Запуск/сокрытие плагина NERDTree
call Map_ex_cmd("<F1>", "NERDTree")
" Toggle cwindow
call Map_ex_cmd("<F2>", "cw")
" Запуск/сокрытие плагина Tlist
call Map_ex_cmd("<F3>", "TlistToggle")
call Toggle_option("<F6>", "list") " Переключение подсветки невидимых символов
call Toggle_option("<F7>", "wrap") " Переключение переноса слов
" Меню работы с (VCS plugin
map <F9> :emenu VCS.<TAB>
menu VCS.VimDiff :VCSVimDiff<CR>
menu VCS.Commit :VCSCommit<CR>
menu VCS.Revert :VCSRevert<CR>
menu VCS.Add :VCSAdd<CR>
menu VCS.Delete :VCSDelete<CR>
menu VCS.Log :VCSLog<CR>
menu VCS.Update :VCSUpdate<CR>
" Закрытие файла
call Map_ex_cmd("<F10>", "qall")
call Map_ex_cmd("<S-F10>", "qall!")
" Список регистров
call Map_ex_cmd("<F11>", "reg")
" Список меток
call Map_ex_cmd("<F12>", "marks")
nmap <Leader>ss :call SessionInput('Save')<CR>
nmap <Leader>sr :call SessionInput('Read')<CR>
nmap <Leader>sl :call SessionRead('last')<CR>
com! Ssave :call SessionSave(<args>)
com! Sread :call SessionRead(<args>)
" Some gui settings
if has("gui_running")
" Set up the gui cursor to look nice
set guicursor=n-v-c:block-Cursor-blinkon0
set guicursor+=ve:ver35-Cursor
set guicursor+=o:hor50-Cursor
set guicursor+=i-ci:ver25-Cursor
set guicursor+=r-cr:hor20-Cursor
set guicursor+=sm:block-Cursor-blinkwait175-blinkoff150-blinkon175
set guioptions=ac
set guifont=Monaco\ 11
colorscheme wombat256
if !exists("g:vimrcloaded")
winpos 0 0
if ! &diff
winsize 130 90
else
winsize 227 90
endif
let g:vimrcloaded = 1
endif
endif
if !exists('s:loaded_my_vimrc')
" Автозагрузка настроек из текущей директории
exe 'silent! source '.getcwd().'/.vim/.vimrc'
endif
let s:loaded_my_vimrc = 1 " Fin
set secure " must be written at the last. see :help 'secure'.
|
Ну, раз пошло такое дело.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
" Определить тип файла
filetype plugin indent on
" тема
colorscheme pyte "torte
" Подсветка синтаксиса
syntax on
" Автоматически менять папку при открытии файла
set autochdir
" Автоотсупы
set autoindent
" Папка для buckup
set backupdir=/tmp
"set cursorline " Подсветка строки, где момент курсор
" поддержка символов, которых нет на клаве
set digraph
" Преобразование таба в пробел
set expandtab
" Сворачивание по отступам
set fdm=indent
" Список кодировок файлов для автоопределения
set fileencodings=utf-8,cp1251,koi8-r,cp866
" Включаем фолдинг (сворачивание участков кода)
set foldenable
" Автоматическое открытие сверток при заходе в них
set foldopen=all
" Шрифт
set guifont=Courier_new:h10:cDEFAULT
" Запоминать последние 150 команд
set history=150
" игнорировать регистр при поиске
set ignorecase
" Всегда отображать статусную строку для каждого окна
set laststatus=2
" Показываем табы в начале строки точками
set listchars=tab:··
set list
set mouse=a
set mousehide
" Переносить длинные строки
set wrap
" Показать номер строки
set number
set shiftwidth=4
" Показывать введенные команды
set showcmd
" Набрав закрывающую скобку, показывает открывающую
set showmatch
set smartcase
" удалять таб-символы как tab (но реально удаляется n пробелов)
set softtabstop=4
set tabstop=4
set virtualedit=all
" Автодополнение как в zsh
set wildmode=list:longest,full
" установить keymap, чтобы по Ctrl+^ переключался на русский и обратно
set keymap=russian-jcukenwin
" по умолчанию - латинская раскладка
set iminsert=0
" по умолчанию - латинская раскладка при поиске
set imsearch=0
" настройка для работы с рус.словами (чтобы w, b, * понимали русские слова)
set iskeyword=@,48-57,_,192-255
" Переключение раскладок и индикация выбранной в данный момент раскладки.
" -->
" Переключение раскладок будет производиться по <C-F>
function MyKeyMapHighlight()
if &iminsert == 0
hi StatusLine ctermfg=DarkBlue guifg=DarkBlue guibg=Gray
else
hi StatusLine ctermfg=Yellow guifg=Yellow guibg=Red
endif
endfunction
" Вызываем функцию, чтобы она установила цвета при запуске Vim'a
call MyKeyMapHighlight()
" При изменении активного окна будет выполняться обновление
" индикации текущей раскладки
au WinEnter * :call MyKeyMapHighlight()
cmap <silent> <C-F> <C-^>
imap <silent> <C-F> <C-^>X<Esc>:call MyKeyMapHighlight()<CR>a<C-H>
nmap <silent> <C-F> a<C-^><Esc>:call MyKeyMapHighlight()<CR>
vmap <silent> <C-F> <Esc>a<C-^><Esc>:call MyKeyMapHighlight()<CR>gv
" <--
" Статусная строка
set statusline=%<%f%h%m%r%=format=%{&fileformat}\
\file=%{&fileencoding}\ enc=%{&encoding}\
\ \%b\ 0x%B\ %l,%c%V\ %P
"Позиция окна при загрузке для GVim в Windows
" winpos 0 0
" winsize 150 50
"Горячие клавиши F2-F12
" F2 - сохранить
" F3 - новый таб
" F4 - диалог открытия файлов для GVIM
" F6 - вставить/убрать нумерацию строк
" F7, Shift+F7 - слудующий/предыдущий таб
" F8 - выбор/запись в нужной кодировке
" F9 - поднять регистр слова (верхний регистр)
" F10 - выход
" F12 - текстовый диалог открытия файлов
map <F2> :w<CR>
map! <F2> <Esc>:w<CR>
map <F3> :tabnew<CR>
map! <F3> <Esc>:tabnew<CR>
map <F4> :browse confirm e<CR>
map! <F4> <Esc>:browse confirm e<CR>
map <F6> :set number!<CR>
map <F7> :tabnext<CR>
map <S-F7> :tabprevious<CR>
" Выбор кодировки, в которой читать файл
set wildmenu
set wcm=<TAB>
menu Encoding.koi8-r :e ++enc=koi8-r<CR>
menu Encoding.windows-1251 :e ++enc=cp1251<CR>
menu Encoding.ibm-866 :e ++enc=cp866<CR>
menu Encoding.utf-8 :e ++enc=utf-8<CR>
map <F8> :emenu Encoding.<TAB>
" Выбор кодировки, в которой сохранять файл
set wildmenu
set wcm=<Tab>
menu Encoding.Write.koi8-r :set fenc=koi8-r<CR>
menu Encoding.Write.windows-1251 :set fenc=cp1251<CR>
menu Encoding.Write.cp866 :set fenc=cp866<CR>
menu Encoding.Write.utf-8 :set fenc=utf8<CR>
map <S-F8> :emenu Encoding.Write.<TAB>
map <F9> vEU
map! <F9> <ESC>vEU
map <S-F9> vEu
map! <S-F9> <ESC>vEu
map <F10> :q<CR>
map! <F10> <Esc>:q<CR>
" F12 - file browser
map <F12> :Ex<cr>
vmap <F12> <esc>:Ex<cr>i
imap <F12> <esc>:Ex<cr>i
"Вставка по нажатию на колесик мышки
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
" Автоматическое закрытие скобок
imap [ []<LEFT>
imap ( ()<LEFT>
imap { {}<LEFT>
|
Конфиг пригоден для программирования на python с pyqt и pykde, а также на похапе.
Мой конфиг для вима, уже довольно долго не претерпевал коренных изменений, поэтому думаю будет не лишним выложить его здесь.
Конфиг имеет зависимости – для его корректной работы необходима утилита ctags.
1
|
|
|
Последние посты
|
|
Последние комментарии
|
|
Изменения
|
|
Черновики (все)
|
|
Избранное (всё)
|
|
|