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
|
--[[
General
--]]
-- Lines of history
vim.opt.history = 500
-- Line numbers
vim.opt.nu = false
-- Autoread when file is changed outside vim
vim.opt.autoread = true
-- Convenient sudo saving of file
vim.api.nvim_create_user_command(
'W', 'w !sudo tee % > /dev/null',
{bang=true, desc='Save file using sudo'}
)
-- Disable the auto line wrap
vim.opt.formatoptions:remove("t")
-- Make find more usefull
vim.opt.path:append("**")
-- Turn off netrw banner
vim.g.netrw_banner = 0
-- Tree style listing in netrw
vim.g.netrw_liststyle = 1
-- Make browse set split
-- vim.g.netrw_browse_split = 4
-- Split to the right, instead of to the left
-- vim.g.netrw_altv = 1
--[[
VIM User interface
--]]
-- Set 3 lines to the cursor - when moving vertically using j/k
-- vim.opt.so = 3
-- set WildMenu
--vim.opt.wildmenu = true
-- Ignore compiled files
vim.opt.wildignore = '*.o,*~,*.pyc'
vim.opt.wildignore:append('*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store')
-- Always show current position
--vim.opt.ruler = true
-- Hide buffers when they are abandoned
-- vim.opt.hid = true
-- Make backspace function normally
vim.opt.backspace = 'eol,start,indent'
vim.opt.whichwrap:append('<,>,h,l')
-- Ignore case when searching
vim.opt.ignorecase = true
-- Be smart about cases when searching
-- If search has uppercases, then we want to respect case
vim.opt.smartcase = true
-- Highlight search results
vim.opt.hlsearch = true
-- Make search act like search in modern browsers
vim.opt.incsearch = true
-- Turn on "magic" for regular expressions
vim.opt.magic = true
-- Show matching brackets when cursor is over one
vim.opt.showmatch = true
vim.opt.mat = 2
-- Left column option, used to have it at 1 to always show it. But Gitsigns is not using it anyway
vim.opt.foldcolumn = '0'
-- Show leader commands
vim.opt.showcmd = true
-- Colorscheme
vim.cmd [[ colorscheme default ]]
vim.opt.background = "light"
vim.opt.termguicolors = true
-- No idea why, preview in fzf does at least work extremely porly without this
vim.cmd [[ let $BAT_THEME = 'gruvbox-light' ]]
-- Workaround for gutter color, to remove background?
vim.api.nvim_set_hl(0, "SignColumn", {link = "LineNr"})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = function()
vim.api.nvim_set_hl(0, "SignColumn", {link = "LineNr"})
end
})
-- Show colour column
vim.opt.colorcolumn = '80,120'
vim.api.nvim_set_hl(0, "ColorColumn", { ctermbg = "lightgrey", bg = "#eae7da" })
-- Set utf8 as standard encoding
vim.opt.encoding = 'utf8'
-- Use Unix as the standard file type
vim.opt.ffs = 'unix,dos,mac'
--[[
Files, backups and undo
--]]
vim.opt.swapfile = false
--[[
Text, tab and indent related
--]]
-- Use spaces instead of tabs
vim.opt.expandtab = true
-- Be smart when using tabs
vim.opt.smarttab = true
-- 1 tab is 4 spaces
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
-- Auto indent
vim.opt.ai = true
-- Smart indent
vim.opt.si = true
-- Wrap lines
vim.opt.wrap = true
--[[
Moving around, tabs, windows and buffers
--]]
-- Disable highlight when <leader><cr> is pressed
map('n', '<leader><cr>', ':noh<cr>', silentnoremap)
-- Tab commands
map('n', '<leader>tn', ':tabnext<cr>', silentnoremap)
map('n', '<leader>tc', ':tabnew<cr>', silentnoremap)
map('n', '<leader>tx', ':tabclose<cr>', silentnoremap)
-- Always show tabbar
vim.opt.stal = 1
-- Return to last edit position when opening files (You want this!)
vim.cmd [[
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
]]
--[[
Status Line
--]]
-- Always show status line
vim.opt.laststatus = 2
--[[
Mappings
--]]
-- Interact with system clipboard
map('v', '<leader>y', '"+y', noremap)
map('n', '<leader>Y', '"+yg_', noremap)
map('n', '<leader>y', '"+y', noremap)
map('v', '<leader>p', '"+p', noremap)
map('v', '<leader>P', '"+P', noremap)
map('n', '<leader>p', '"+p', noremap)
map('n', '<leader>P', '"+P', noremap)
--[[
Misc
--]]
-- Scribble buffer
map('n', '<leader>q', ':e ~/buffer<cr>', silentnoremap)
-- Toggle paste mode
map('n', '<leader>pp', ':setlocal paste!<cr>', silentnoremap)
-- Send file-title to tmux
vim.opt.titlestring = [[%f %h%m%r%w%{v:progname} (%{tabpagenr()} of %{tabpagenr('$')}})]]
vim.opt.title = true
--[[
Debugging
--]]
vim.g.termdebug_popup = 0
vim.g.termdebug_wide = 163
vim.cmd([[:packadd termdebug]])
-- This is to get rid of weird artifacts with text showing up inside buffer.
vim.opt.title = false
|