-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnvim-init.lua
More file actions
99 lines (85 loc) · 2.87 KB
/
Copy pathnvim-init.lua
File metadata and controls
99 lines (85 loc) · 2.87 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
-- vim: set ts=2 sw=2
---@diagnostic disable: undefined-global
vim.g.mapleader = ","
vim.pack.add({
"https://github.com/tpope/vim-surround",
"https://github.com/ibhagwan/fzf-lua",
"https://github.com/nvim-treesitter/nvim-treesitter",
})
vim.o.wrap = false
vim.o.scrolloff = 10
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.number = true
vim.o.laststatus = 3
vim.o.swapfile = false
vim.o.autowrite = true
vim.o.clipboard = "unnamedplus"
vim.o.ignorecase = true
vim.o.grepprg = "rg --hidden --vimgrep --no-heading --smart-case"
vim.cmd.colorscheme("alabaster")
vim.defer_fn(function()
require("nvim-treesitter").install({
"bash", "html", "javascript", "json", "lua", "markdown",
"python", "tsx", "typescript", "vim", "vimdoc", "yaml",
})
end, 0)
vim.api.nvim_create_autocmd("FileType", {
callback = function(args)
pcall(vim.treesitter.start, args.buf)
vim.bo[args.buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
-- Wrap Markdown on words and make j/k follow displayed lines. Other file types
-- keep nowrap and normal j/k.
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function(args)
vim.opt_local.wrap = true
vim.opt_local.linebreak = true
vim.opt_local.breakindent = true
vim.keymap.set("n", "j", "gj", { buffer = args.buf })
vim.keymap.set("n", "k", "gk", { buffer = args.buf })
end,
})
local fzflua = require("fzf-lua")
local map = vim.keymap.set
map("n", "<leader>t", fzflua.files)
map("n", "<leader>f", fzflua.live_grep)
map("n", "<leader>h", fzflua.helptags)
map("n", "<leader>r", fzflua.command_history)
map("n", "<leader>p", fzflua.commands)
map("n", "<leader>b", fzflua.buffers)
map("n", "<leader><leader>", fzflua.builtin)
map("n", "<m-j>", function()
vim.cmd("tabnew")
local buf = vim.api.nvim_get_current_buf()
vim.fn.jobstart({ "jjui" }, {
term = true,
on_exit = function()
vim.schedule(function()
if vim.api.nvim_buf_is_valid(buf) then
vim.api.nvim_buf_delete(buf, { force = true })
end
end)
end,
})
vim.cmd("startinsert")
end, { desc = "jjui" })
map("n", "<leader>y", function() vim.fn.setreg("+", vim.fn.expand("%")) end)
map("n", "<leader>e", ":Explore<cr>")
map("n", "<leader>c", function()
local comment_prefix, comment_suffix = vim.bo.commentstring:match("^(.-)%%s(.-)$")
if not comment_prefix then
vim.notify("SHARVIEW: missing commentstring", vim.log.levels.ERROR)
return
end
comment_suffix = comment_suffix or ""
local row = vim.api.nvim_win_get_cursor(0)[1]
local indent = vim.api.nvim_get_current_line():match("^%s*") or ""
local prefix = indent .. comment_prefix .. "SHARVIEW: "
vim.api.nvim_buf_set_lines(0, row - 1, row - 1, false, { prefix .. comment_suffix })
vim.api.nvim_win_set_cursor(0, { row, #prefix })
vim.cmd("startinsert")
end, { desc = "insert SHARVIEW comment" })