-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvimrc
126 lines (112 loc) · 3.32 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
set nocompatible " Forget about Vi compatibility
"" This configuration uses vim-pulg to manage plugins
call plug#begin('~/.vim/bundle/')
Plug 'autozimu/LanguageClient-neovim', {'branch': 'next', 'do': 'bash install.sh'}
Plug 'bling/vim-airline'
Plug 'edkolev/tmuxline.vim'
Plug 'JuliaEditorSupport/julia-vim'
Plug 'junegunn/vim-easy-align'
Plug 'lervag/vimtex'
Plug 'Raimondi/delimitMate'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-surround'
Plug 'voldikss/vim-floaterm'
Plug 'https://git.sr.ht/~ackyshake/VimCompletesMe.vim'
"" Colorschemes
Plug 'sainnhe/sonokai'
Plug 'sonph/onehalf', { 'rtp': 'vim' }
call plug#end()
runtime macros/matchit.vim
"" Indentation
set autoindent
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
autocmd FileType tex setlocal shiftwidth=2 softtabstop=2
"" General appearance
set number
set laststatus=2 " Always show vim-airline
set noshowmode " Avoid redundance with vim-airline
set signcolumn=yes
set splitbelow
set splitright
set textwidth=90
set ttimeoutlen=50
set completeopt+=longest
let &colorcolumn = join(range(93,120),",")
autocmd FileType tex setlocal textwidth=72
"" Fonts & colors
syntax on
if has('gui_running')
set background=light
set linespace=2
set guioptions-=T
colorscheme onehalflight
else
if has('termguicolors')
set termguicolors
else
set t_Co=256
end
set background=dark
colorscheme sonokai
endif
"" Searches
set incsearch
set hlsearch
"" In many terminal emulators the mouse works just fine
if has('mouse')
set mouse=a
end
"" Plugins specific configurations
" vim-airline
let g:airline_powerline_fonts = 1
let g:airline_exclude_filetypes = ['floaterm']
" vim-floaterm
let g:floaterm_autoclose = 1
let g:floaterm_opener = 'tabe'
" Language Server Protocol
let g:LanguageClient_autoStart = 1
let g:LanguageClient_loadSettings = 1
let g:LanguageClient_settingsPath = [ '~/.vim/settings.json', '.vim/settings.json' ]
let g:LanguageClient_serverCommands = {
\ 'julia': ['julia', '--startup-file=no', '--history-file=no', '--project=.', '-e', '
\ using LanguageServer;
\ using Pkg;
\ import StaticLint;
\ import SymbolServer;
\ env_path = dirname(Pkg.Types.Context().env.project_file);
\
\ server = LanguageServer.LanguageServerInstance(stdin, stdout, env_path, "");
\ server.runlinter = true;
\ run(server);
\ '],
\ 'python': ['pylsp'],
\ }
"" Custom shorcuts (key mappings)
let mapleader = ','
" Select all
nmap <Leader>a ggVG
" Save
nmap <Leader>s :update<CR>
" Go to end of line
nmap ¿ $
" Leave insert mode
inoremap kj <Esc>
" Change to path od current file
nnoremap <Leader>cd :lcd %:p:h<CR>:pwd<CR>
" Floaterm
nnoremap <silent> <Leader>ftr
\ :FloatermNew --name=ftr --width=0.5 --wintype=vsplit --position=right<CR>
nnoremap <silent> <Leader>ftb
\ :FloatermNew --name=ftb --height=0.33 --wintype=split<CR>
nnoremap <silent> <Leader>ftn :FloatermNext<CR>
tnoremap kj <C-\><C-n>
tnoremap <silent> <Leader>ftn <C-\><C-n>:FloatermNext<CR>
tnoremap <silent> <Leader>fth <C-\><C-n>:FloatermHide<CR>
vnoremap <silent> <Leader><CR> :'<,'>FloatermSend<CR><CR>
" LSP
nnoremap <silent> <Leader>lh :call LanguageClient_textDocument_hover()<CR>
nnoremap <silent> <Leader>lf :call LanguageClient_textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient_textDocument_rename()<CR>