Про VIM

Vim logo

С началом года решил плотнее подсесть на Vim. На серверах то я его давно уже юзаю для правки конфигов, но тут захотелось максимально прокачанную конфигурацию для веб-разработки.

Опытные люди посоветовали vimrc от amix. Практически все мне подошло, но кое что пришлось подпилить.

Правки конфигов

Вот что я вписал в .vim_runtime/my_configs.vim

1
2
3
4
5
6
7
8
" colorscheme desert
nnoremap <F12> :TlistToggle<enter>
" inoremap $5 <?php<esc>o?><esc>O
if has('gui_running')
" set gfn=Droid\ Sans\ Mono\ 13
:map <silent> <S-Insert> "+gP
imap <silent> <S-Insert> <Esc>"+pa
endif

Тут я выбрал более подходящие для себя цветовую схему и шрифт, а также включил вставку по Shift+Insert. Также добавил показ Tlist по F12 и вставку php-скобок по $5 (Shift+4 Shift+5)

Подправил цветовую схему в zenroom2.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
"==============================================================================
"File: zenroom2.vim
"Description: Emulates iA Writer environment when editing Markdown, reStructuredText
" or text files.
"Maintainer: Amir Salihefendic <amix@doist.io>
"Version: 0.1
"Last Change: 2013-12-29
"License: BSD
"==============================================================================

if exists( "g:loaded_zenroom2_plugin" )
finish
endif
let g:loaded_zenroom2_plugin = 1


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin Configuration
"
" Save the current `background` value for reset later
let s:save_background = ""
if exists( "&background" )
let s:save_background = &background
endif

function! s:markdown_room()
set background=dark
set linespace=8

hi Normal guibg=gray95
hi NonText guifg=gray95
hi FoldColumn guibg=#333333
hi CursorLine guibg=gray90
hi Title gui=bold guifg=gray45
hi MarkdownHeadingDelimiter gui=bold guifg=gray45
hi htmlSpecialChar guifg=gray45
hi markdownError guifg=black
hi markdownBold gui=bold guifg=gray45
hi markdownItalic guifg=gray45 gui=underline
hi markdownUrl guifg=#2fb3a6
hi markdownAutomaticLink guifg=#2fb3a6
hi markdownLinkText guifg=#317849
hi markdownUrlTitle guifg=#317849
hi markdownBlockquote guifg=#317849 gui=bold
hi markdownId guifg=#2fb3a6
hi markdownIdDeclaration guifg=#317849 gui=bold
hi markdownListMarker guifg=#317849
hi Cursor guibg=#15abdd

if has('gui_running')
let l:highlightbgcolor = "guibg=#333333"
let l:highlightfgbgcolor = "guifg=#333333" . " " . l:highlightbgcolor
else
let l:highlightbgcolor = "ctermbg=bg"
let l:highlightfgbgcolor = "ctermfg=bg" . " " . l:highlightbgcolor
endif

exec( "hi Normal " . l:highlightbgcolor )
exec( "hi VertSplit " . l:highlightfgbgcolor )
exec( "hi NonText " . l:highlightfgbgcolor )
exec( "hi StatusLine " . l:highlightfgbgcolor )
exec( "hi StatusLineNC " . l:highlightfgbgcolor )
endfunction

function! s:zenroom_goyo_before()
if !has("gui_running")
return
endif
let is_mark_or_rst = &filetype == "markdown" || &filetype == "rst" || &filetype == "text"

if is_mark_or_rst
call s:markdown_room()
endif
endfunction

function! s:zenroom_goyo_after()
if !has("gui_running")
return
endif
let is_mark_or_rst = &filetype == "markdown" || &filetype == "rst" || &filetype == "text"
if is_mark_or_rst
set linespace=0

if s:save_background != ""
exec( "set background=" . s:save_background )
endif
endif
endfunction

let g:goyo_callbacks = [ function('s:zenroom_goyo_before'), function('s:zenroom_goyo_after') ]

Горячие клавиши

Вот памятка по часто используемым горячим клавишам:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
,w - :w!
,nn - toggle Nerd Tree
Ctrl+F - Fuzzy search
:Ag (PATTERN) - Fast grep analogue
Ctrl+N , Ctrl+S - Multiline editing
* - search word from cursor
Ctrl+Y+, - Emmet expand
+,- - visual select
gcc,gc,gcu - comment/uncomment line
,z - zen mode
,f - MRU
Ctrl+P - YankRing
Ctrl+N - Autocomplete
$4 - {}
* - search next
p - search prev

<tab> - Snippets!
F12 - Taglist Toggle
cs "' - change " to ' - surround
yss" - add wrap to line with "
yssb - wrap line with (

Пишите если нужны дополнительные комментарии.