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
|
require("plugins")
vim.g.mapleader = ' '
vim.opt.background = "dark"
vim.opt.clipboard = "unnamedplus" -- Use system clipboard
-- vim.opt.list = true -- Show spaces, tabs, etc.
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.shortmess:append("I") -- Disable intro message
vim.opt.wrap = false
vim.cmd.colorscheme("duskfox")
vim.opt.fillchars = {
vert = "|",
fold = " ",
eob = " ",
diff = "/",
msgsep = "-",
foldopen = "▾",
foldsep = "|",
foldclose = ">",
}
-- Remove trailing whitespace on all lines before saving, excluding markdown files
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*",
callback = function()
if vim.bo.filetype == "markdown" then
return
end
vim.cmd([[%s/\s\+$//e]])
end,
})
-- Disable auto-comment
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
callback = function()
vim.opt_local.formatoptions:remove({ "c", "r", "o" })
end,
})
-- Enable spellcheck for certain file types
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"gitcommit", "markdown", "text", "rst",
"asciidoc", "org", "norg", "latex", "tex", "mail", "pandoc"
},
callback = function()
vim.opt_local.spell = true
end,
})
-- NOTE: On some terminal emulators, the keybinds
-- <C-j> and <C-k> don't work either in normal or insert mode.
-- Tabs
vim.keymap.set('n', '<C-t>', '<cmd>tabnew<CR>' , { noremap = true, silent = true })
vim.keymap.set('n', 'J' , '<cmd>tabn<CR>' , { noremap = true, silent = true })
vim.keymap.set('n', 'K' , '<cmd>tabp<CR>' , { noremap = true, silent = true })
-- Windows
vim.keymap.set('n', '<C-Down>' , '<cmd>split<CR>' , { noremap = true, silent = true })
vim.keymap.set('n', '<C-Right>', '<cmd>vsplit<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<C-h>' , '<C-w>h' , { noremap = true })
vim.keymap.set('n', '<C-j>' , '<C-w>j' , { noremap = true })
vim.keymap.set('n', '<C-k>' , '<C-w>k' , { noremap = true })
vim.keymap.set('n', '<C-l>' , '<C-w>l' , { noremap = true })
-- Imitate normal mode in insert mode
vim.keymap.set('i', '<C-h>' , '<Left>' , { noremap = true })
vim.keymap.set('i', '<C-l>' , '<Right>', { noremap = true })
vim.keymap.set('i', '<C-j>' , '<Down>' , { noremap = true })
vim.keymap.set('i', '<C-k>' , '<Up>' , { noremap = true })
vim.keymap.set('i', '<C-space>', '<ESC>' , { noremap = true })
-- Plugins
vim.keymap.set('n', '<leader>e', '<cmd>Neotree toggle right<CR>', { noremap = true, silent = true })
-- Other
vim.keymap.set('n', '<leader><leader>', '<cmd>w!<CR>' , { noremap = true, silent = true })
vim.keymap.set('n', '<leader>q' , '<cmd>wq!<CR>', { noremap = true, silent = true })
|