-
Notifications
You must be signed in to change notification settings - Fork 1
/
init.lua
150 lines (117 loc) · 4.68 KB
/
init.lua
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
require('plugins')
require('language_server_config')
-- ----------------------------------------------------------------------------
-- General Settings
-- ----------------------------------------------------------------------------
-- Set leader key
vim.g.mapleader = ','
vim.g.maplocalleader = ','
-- Quicker navigation between splits
vim.keymap.set('n', '<C-j>', '<C-w>j')
vim.keymap.set('n', '<C-k>', '<C-w>k')
vim.keymap.set('n', '<C-h>', '<C-w>h')
vim.keymap.set('n', '<C-l>', '<C-w>l')
-- Move to previous buffer with gb
vim.keymap.set('n', 'gb', '<C-^>')
-- NERDTree
vim.keymap.set('n', '<Leader>nt', ':NERDTreeToggle<CR>')
vim.keymap.set('n', '<Leader>nf', ':NERDTreeFind<CR>')
vim.opt.clipboard = 'unnamedplus' -- Copy to system clipboard
vim.cmd([[
set nobackup " Disable backups.
set nowritebackup
set noswapfile
]])
-- Instead of using <Tab> use <C-ENTER> to accept the completion
vim.cmd([[
imap <silent><script><expr> <C-ENTER> copilot#Accept("\<CR>")
let g:copilot_no_tab_map = v:true
]])
-- ----------------------------------------------------------------------------
-- Spell Checking
-- ----------------------------------------------------------------------------
vim.cmd([[
set spelllang=en_gb,en_us
augroup customSpellChecking
autocmd!
autocmd FileType markdown setlocal spell
autocmd FileType gitcommit setlocal spell
autocmd FileType text setlocal spell
augroup END
set complete+=kspell
]])
-- ----------------------------------------------------------------------------
-- White Space
-- ----------------------------------------------------------------------------
vim.opt.tabstop = 2
vim.opt.softtabstop = 2
vim.opt.shiftwidth = 2
vim.opt.shiftround = true
vim.opt.expandtab = true
--vim.opt.nojoinspaces = true
vim.cmd([[
set list listchars=tab:»·,trail:·,nbsp:· " Show trailing whitespace
]])
-- ----------------------------------------------------------------------------
-- Search and Replace
-- ----------------------------------------------------------------------------
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- ----------------------------------------------------------------------------
-- Ag/grep
-- ----------------------------------------------------------------------------
vim.cmd([[
if executable('ag')
" If ag is available, we should use it because it's much faster than grep!
let g:ctrlp_user_command = "ag %s -l --nocolor -g ''"
set grepprg=ag\ --nogroup\ --nocolor
" bind \ (backward slash) to grep shortcut
command! -nargs=+ -complete=file -bar Ag silent! grep! <args>|cwindow|redraw!
nnoremap \ :Ag<SPACE>
endif
" bind F to grep word under cursor
" nnoremap F :grep! "\b<C-R><C-W>\b"<CR>:cw<CR>
]])
-- ----------------------------------------------------------------------------
-- Status Line
-- ----------------------------------------------------------------------------
vim.opt.laststatus = 2 -- Always display the status line
-- ----------------------------------------------------------------------------
-- Presentation
-- ----------------------------------------------------------------------------
vim.opt.number = true -- Show line numbers
vim.cmd("colorscheme jellybeans") -- Set color scheme
--vim.g.airline_section_y = "" -- Remove file encoding from status line
-- Use powerline fonts. For this to work the iTerm setting "Use built-in
-- Powerline glyphs" must be enabled. See this SO answer for more info:
-- https://apple.stackexchange.com/a/413332/223301
vim.g.airline_powerline_fonts = 1
-- ----------------------------------------------------------------------------
-- Line Length
-- ---------------------------------------------------------------------------- vim.opt.textwidth = 80 -- Set line length to 80 characters vim.opt.colorcolumn = '80' -- Show line length in the editor
vim.cmd([[
augroup setPythonTextOptions
autocmd!
" The Black Python code formatter uses 88 as its default line-length.
autocmd FileType python setlocal textwidth=88
" Disable 'Auto-wrap text using textwidth' because python is whitespace aware
autocmd FileType python setlocal formatoptions-=t
augroup END
]])
-- ----------------------------------------------------------------------------
-- Testing
-- ----------------------------------------------------------------------------
vim.cmd([[
" Use "neovim" test strategy and remap <C-\><C-n> to <C-o> to " allow you to
" enter normal mode easier and scroll through test output.
let test#strategy = "neovim"
tmap <C-o> <C-\><C-n>
nmap <silent> <leader>t :TestNearest<CR>
nmap <silent> <leader>T :TestFile<CR>
nmap <silent> <leader>l :TestLast<CR>
nmap <silent> <leader>g :TestVisit<CR>
" Local config
if filereadable($HOME . "/.vimrc.local")
source ~/.vimrc.local
endif
]])