-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_init.lua
More file actions
162 lines (124 loc) · 4.26 KB
/
_init.lua
File metadata and controls
162 lines (124 loc) · 4.26 KB
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
-- [[ OPTIONS ]]
vim.g.mapleader = " "
vim.g.maplocalleader = ","
-- Make line numbers default
vim.opt.number = true
vim.opt.relativenumber = true
-- Enable mouse mode (useful for resizing splits)
vim.opt.mouse = "a"
-- Save undo history
vim.opt.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Keep signcolumn on by default
vim.opt.signcolumn = "yes"
-- Decrease update time
vim.opt.updatetime = 50
-- Increase time before timeout
vim.opt.timeout = true
vim.opt.timeoutlen = 1'000
-- Configure how new splits should be opened
vim.opt.splitright = true
vim.opt.splitbelow = true
-- Show specials
vim.opt.list = true
vim.optpt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
-- Preview substitutions live, as you type!
vim.opt.inccommand = "split"
-- Show which line your cursor is on
-- vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 1
vim.opt.sidescrolloff = 20
-- Tabs
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
-- Dont pass this marker
vim.opt.colorcolumn = "80"
-- Linewraps
vim.opt.showbreak = "└▶"
vim.opt.wrap = false
-- Enable break indent
vim.opt.breakindent = true
-- Disable cursor changing
vim.opt.guicursor = "n-v-c:block"
-- cinkeys
vim.opt.cinkeys = "0{,0},0),0],:,!^F,o,O,e"
-- cinoptions
vim.opt.cinoptions = ":0,l1,b1"
-- conceal options (syntax visibility)
vim.api.nvim_create_autocmd("TextYankPost", {
desc = "Disable Conceal on All Buffers",
group = vim.api.nvim_create_augroup("my-conceallevel", { clear = true }),
callback = function()
vim.opt.conceallevel = 0
end,
})
-- completion
vim.opt.wildmode = "longest:full"
vim.opt.wildmenu = true
vim.opt.completeopt = "longest,noselect"
-- [[ Keymaps ]]
-- Auto Completion
vim.keymap.set("i", "<c-space>", "<c-x><c-o>");
-- Terminal Binds
vim.keymap.set("t", "<C-w>", "<c-\\><c-n>");
-- Navigation
--/ Center Screen When Scrolling
-- vim.keymap.set("n", "<C-d>", "<C-d>zz");
-- vim.keymap.set("n", "<C-u>", "<C-u>zz");
--/ Navigate Wrapped Lines
vim.keymap.set("n", "j", "gj");
vim.keymap.set("n", "k", "gk");
-- Yanks
vim.keymap.set("n", "<leader>y", "\"+y");
vim.keymap.set("v", "<leader>y", "\"+y");
vim.keymap.set("n", "<leader>Y", "\"+Y");
-- Set highlight on search, but clear on pressing <Esc> in normal mode
vim.opt.hlsearch = nvim_mk_obj_bool(true));
vim.keymap.set("n", "<esc>", "<cmd>nohlsearch<cr><esc>");
-- Diagnostics
vim.keymap.set("n", "<leader>uq", "<cmd>copen<cr>")
vim.keymap.set("n", "<leader>ul", "<cmd>lopen<cr>")
-- Code
vim.keymap.set("n", "<leader>cw", "<cmd>cd %:p:h<cr>") -- move nvim base path to current buffer
vim.keymap.set("n", "<leader>cm", "<cmd>Man<cr>")
vim.keymap.set("n", "<leader>cW", "<cmd>%s/\\s\\+$--g<cr>") // remove trailing whitespace
-- Make
vim.keymap.set("n", "<leader>mm", "<cmd>make<cr>")
vim.keymap.set("n", "<leader>mc", function()
vim.ui.input(
{ prompt = 'Make Command: ', default = vim.opt.makeprg },
function(usr_input)
if usr_input ~= nil and usr_input ~= ''
then vim.opt.makeprg = usr_input
end
end)
end);
-- UI
vim.keymap.set("n", "<leader>um", "<cmd>messages<cr>")
-- Toggle
vim.keymap.set("n", "<leader>th", "<cmd>ColorizerToggle<cr>")
-- Windows
vim.keymap.set("n", "<leader>v", "<cmd>vsp<cr>")
vim.keymap.set("n", "<leader>wv", "<cmd>vsp<cr>")
vim.keymap.set("n", "<leader>x", "<cmd>sp<cr>")
vim.keymap.set("n", "<leader>wx", "<cmd>sp<cr>")
vim.keymap.set("n", "<leader>wt", "<cmd>tab split<cr>")
vim.keymap.set("n", "<leader>w|", "<cmd>vertical resize<cr>");
vim.keymap.set("n", "<leader>w_", "<cmd>horizontal resize<cr>")
vim.keymap.set("n", "<leader>ws", "<cmd>wincmd =<cr>")
vim.keymap.set("n", "<leader>wf", "<cmd>horizontal resize<cr><cmd>vertical resize<cr>");
vim.keymap.set("n", "<leader>wN", "<cmd>setlocal buftype=nofile<cr>") -- turn off ability to save
-- [[ End Keymaps ]]
-- Highlight when yanking (copying) text
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('my-highlight-yank', { clear = true }),
callback = function()
vim.highlight.on_yank { on_visual = false }
end,
})