-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path.vimrc
137 lines (114 loc) · 3.53 KB
/
.vimrc
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
call pathogen#infect()
syntax on
set visualbell
set whichwrap+=>,l,<,h
set directory=$HOME/.vim/swapfiles//
" set ruler
" set number
" set nu!
" set smartindent
set confirm
set so=7
set tabstop=2
set shiftwidth=2
set expandtab
set background=dark
set colorcolumn=+1
colorscheme solarized
set laststatus=2
set textwidth=90
au FileType gitcommit set textwidth=72
" let g:airline_powerline_fonts = 1
let g:airline_theme = 'murmur'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '◀'
" let g:airline_section_x = airline#section#create_right(['tagbar'])
let g:airline_section_y = ''
set runtimepath^=~/.vim/bundle/ctrlp.vim
let g:ctrlp_map = '<c-p>'
let g:ctrlp_custom_ignore = 'node_modules\|bower_components\|dist\|coverage'
" Prettier code formatter
let g:prettier#config#semi = 'false'
let g:prettier#config#bracket_spacing = 'true'
let g:prettier#config#arrow_parens = 'avoid'
let g:prettier#config#trailing_comma = 'none'
au BufNewFile,BufRead *.jsx set filetype=javascript
au BufNewFile,BufRead *.tsx set filetype=typescript
au BufNewFile,BufRead *.ejs,*.hbs set filetype=html
au BufNewFile,BufRead *.js.ejs set filetype=javascript
au BufNewFile,BufRead *.json.ejs set filetype=json
au BufNewFile,BufRead *.ts.ejs set filetype=typescript
au BufNewFile,BufRead *.nginx,nginx.conf set filetype=nginx
au BufNewFile * :silent! exec ":0r ".$HOME."/.vim/templates/".&ft
au BufNewFile .babelrc :silent! exec ":0r ".$HOME."/.vim/templates/.babelrc"
au BufNewFile .prettierrc :silent! exec ":0r ".$HOME."/.vim/templates/.prettierrc"
au BufNewFile package.json :silent! exec ":0r ".$HOME."/.vim/templates/package.json"
au BufNewFile webpack.config.js :silent! exec ":0r ".$HOME."/.vim/templates/webpack.config.js"
" Strip trailing white space on save
au FileType javascript,typescript,css,scss,sql,html,markdown au BufWritePre <buffer> StripWhitespace
" filetype plugin indent on
" filetype plugin on
set omnifunc=syntaxcomplete#Complete
:imap jj <Esc>
nnoremap <silent> vv <C-w>v
xnoremap y "*y
" Format as JSON
nnoremap <C-j> :%!jq .<CR>
" Highlight search results
set hlsearch
" Map escape to turn off search highlighting
nnoremap <silent> <leader>/ :nohlsearch <CR>
" au vimenter * NERDTree
map <C-t> :NERDTreeToggle<CR>
let NERDTreeAutoDeleteBuffer = 1
let NERDTreeQuitOnOpen = 1
let NERDTreeShowHidden = 1
let NERDTreeWinSize = 50
" Toggle line number management
function! LineNumberToggle()
if (&relativenumber == 0 && &number == 0)
set norelativenumber
set number
elseif (&number == 1)
set nonumber
set relativenumber
else
set norelativenumber
set nonumber
endif
endfunc
nnoremap <C-l> :call LineNumberToggle()<CR>
:au FocusLost * :set number
:au FocusGained * :set relativenumber
" End: line number management
" Follow file paths without extensions
augroup suffixes
autocmd!
let fileTypeToExtensions = {
\'javascript': '.js,.jsx,.json',
\'typescript': '.ts,.tsx'
\}
for [fileType, extensions] in items(fileTypeToExtensions)
execute 'autocmd FileType ' . fileType . ' setlocal suffixesadd=' . extensions
unlet fileType extensions
endfor
augroup END
" Display buffer list in the alphabetical order
command! -bang Ls redir @" | silent ls<bang> | redir END | echo " " |
\ perl {
\ my $msg=VIM::Eval('@"');
\ my %list=();
\ my $key, $value;
\ while($msg =~ m/(.*?line\s+\d+)/g) {
\ $value = $1;
\ $value =~ m/"([^"]+)"/;
\ $key = $1;
\ $list{$key} = $value;
\ }
\ my $msg = '';
\ for $key (sort keys %list) {
\ $msg .= "$list{$key}\n";
\ }
\ VIM::Msg($msg);
\ }
\ <CR>