feat(nvim): new vim config

This commit is contained in:
2021-03-18 09:31:41 +08:00
parent fe0aab84af
commit 508529e4ce
13 changed files with 779 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
vim.o.termguicolors = true
-- colors for active , inactive buffer tabs
require "bufferline".setup {
options = {
buffer_close_icon = "",
modified_icon = "●",
close_icon = "",
left_trunc_marker = "",
right_trunc_marker = "",
max_name_length = 14,
max_prefix_length = 13,
tab_size = 18,
enforce_regular_tabs = true,
view = "multiwindow",
show_buffer_close_icons = true,
separator_style = "thin"
},
highlights = {
background = {
guifg = comment_fg,
guibg = "#282c34"
},
fill = {
guifg = comment_fg,
guibg = "#282c34"
},
buffer_selected = {
guifg = normal_fg,
guibg = "#3A3E44",
gui = "bold"
},
separator_visible = {
guifg = "#282c34",
guibg = "#282c34"
},
separator_selected = {
guifg = "#282c34",
guibg = "#282c34"
},
separator = {
guifg = "#282c34",
guibg = "#282c34"
},
indicator_selected = {
guifg = "#282c34",
guibg = "#282c34"
},
modified_selected = {
guifg = string_fg,
guibg = "#3A3E44"
}
}
}
+27
View File
@@ -0,0 +1,27 @@
require("gitsigns").setup {
signs = {
add = {hl = "DiffAdd", text = "▌", numhl = "GitSignsAddNr"},
change = {hl = "DiffChange", text = "▌", numhl = "GitSignsChangeNr"},
delete = {hl = "DiffDelete", text = "_", numhl = "GitSignsDeleteNr"},
topdelete = {hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr"},
changedelete = {hl = "DiffChange", text = "~", numhl = "GitSignsChangeNr"}
},
numhl = false,
keymaps = {
-- Default keymap options
noremap = true,
buffer = true,
["n ]c"] = {expr = true, '&diff ? \']c\' : \'<cmd>lua require"gitsigns".next_hunk()<CR>\''},
["n [c"] = {expr = true, '&diff ? \'[c\' : \'<cmd>lua require"gitsigns".prev_hunk()<CR>\''},
["n <leader>gs"] = '<cmd>lua require"gitsigns".stage_hunk()<CR>',
["n <leader>gu"] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>',
["n <leader>gr"] = '<cmd>lua require"gitsigns".reset_hunk()<CR>',
["n <leader>gp"] = '<cmd>lua require"gitsigns".preview_hunk()<CR>',
["n <leader>gb"] = '<cmd>lua require"gitsigns".blame_line()<CR>'
},
watch_index = {
interval = 100
},
sign_priority = 5,
status_formatter = nil -- Use default
}
+14
View File
@@ -0,0 +1,14 @@
local function map(mode, lhs, rhs, opts)
local options = {noremap = true}
if opts then
options = vim.tbl_extend("force", options, opts)
end
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
end
-- keybind list
map("", "<leader>c", '"+y')
-- open terminals
map("n", "<C-b>" , [[<Cmd> vnew term://bash<CR>]] , opt) -- split term vertically , over the right
map("n", "<C-x>" , [[<Cmd> split term://bash | resize 10 <CR>]] , opt) -- split term vertically , over the right
+62
View File
@@ -0,0 +1,62 @@
vim.cmd [[packadd nvim-lspconfig]]
vim.cmd [[packadd nvim-compe]]
vim.o.completeopt = "menuone,noselect"
require "compe".setup {
enabled = true,
autocomplete = true,
debug = false,
min_length = 1,
preselect = "enable",
throttle_time = 80,
source_timeout = 200,
incomplete_delay = 400,
max_abbr_width = 100,
max_kind_width = 100,
max_menu_width = 100,
documentation = false,
source = {
path = true,
buffer = true,
calc = true,
vsnip = true,
nvim_lsp = true,
nvim_lua = true,
spell = true,
tags = true,
snippets_nvim = true,
treesitter = true
}
}
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
_G.s_tab_complete = function()
if vim.fn.pumvisible() == 1 then
return t "<C-p>"
elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
return t "<Plug>(vsnip-jump-prev)"
else
return t "<S-Tab>"
end
end
-- mappings
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
function _G.completions()
local npairs = require("nvim-autopairs")
if vim.fn.pumvisible() == 1 then
if vim.fn.complete_info()["selected"] ~= -1 then
return vim.fn["compe#confirm"]("<CR>")
end
end
return npairs.check_break_line_char()
end
vim.api.nvim_set_keymap("i", "<CR>", "v:lua.completions()", {expr = true})
+32
View File
@@ -0,0 +1,32 @@
vim.cmd [[packadd nvim-lspconfig]]
vim.cmd [[packadd nvim-compe]]
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, ...)
end
local function buf_set_option(...)
vim.api.nvim_buf_set_option(bufnr, ...)
end
buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
-- Mappings.
local opts = {noremap = true, silent = true}
buf_set_keymap("n", "gD", "<Cmd>lua vim.lsp.buf.declaration()<CR>", opts)
buf_set_keymap("n", "gd", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts)
buf_set_keymap("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
buf_set_keymap("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
buf_set_keymap("n", "<space>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)
buf_set_keymap("n", "<space>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)
buf_set_keymap("n", "<space>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)
buf_set_keymap("n", "<space>D", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
buf_set_keymap("n", "<space>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
buf_set_keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
buf_set_keymap("n", "<space>e", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", opts)
buf_set_keymap("n", "[d", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", opts)
buf_set_keymap("n", "]d", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", opts)
buf_set_keymap("n", "<space>q", "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>", opts)
-- lsp for html , css and js/ts
require "lspconfig".gopls.setup {}
+85
View File
@@ -0,0 +1,85 @@
vim.cmd [[packadd nvim-tree.lua]]
vim.o.termguicolors = true
vim.g.nvim_tree_side = "left"
vim.g.nvim_tree_width = 24
vim.g.nvim_tree_ignore = {".git", "node_modules", ".cache"}
vim.g.nvim_tree_auto_open = 1
vim.g.nvim_tree_auto_close = 1
vim.g.nvim_tree_quit_on_open = 0
vim.g.nvim_tree_follow = 1
vim.g.nvim_tree_indent_markers = 1
vim.g.nvim_tree_hide_dotfiles = 1
vim.g.nvim_tree_git_hl = 1
vim.g.nvim_tree_root_folder_modifier = ":~"
vim.g.nvim_tree_tab_open = 1
vim.g.nvim_tree_allow_resize = 1
vim.g.nvim_tree_show_icons = {
git = 1,
folders = 1,
files = 1
}
vim.g.nvim_tree_icons = {
default = "",
symlink = "",
git = {
unstaged = "✗",
staged = "✓",
unmerged = "",
renamed = "➜",
untracked = "★"
},
folder = {
default = "",
open = "",
symlink = ""
}
}
local get_lua_cb = function(cb_name)
return string.format(":lua require'nvim-tree'.on_keypress('%s')<CR>", cb_name)
end
-- Mappings for nvimtree
vim.api.nvim_set_keymap(
"n",
"<C-n>",
":NvimTreeToggle<CR>",
{
noremap = true,
silent = true
}
)
vim.g.nvim_tree_bindings = {
["<CR>"] = get_lua_cb("edit"),
["l"] = get_lua_cb("edit"),
["o"] = get_lua_cb("edit"),
["<2-LeftMouse>"] = get_lua_cb("edit"),
["<2-RightMouse>"] = get_lua_cb("cd"),
["<C-]>"] = get_lua_cb("cd"),
["<C-v>"] = get_lua_cb("vsplit"),
["<C-x>"] = get_lua_cb("split"),
["<C-t>"] = get_lua_cb("tabnew"),
["<BS>"] = get_lua_cb("close_node"),
["<S-CR>"] = get_lua_cb("close_node"),
["<Tab>"] = get_lua_cb("preview"),
["I"] = get_lua_cb("toggle_ignored"),
["H"] = get_lua_cb("toggle_dotfiles"),
["R"] = get_lua_cb("refresh"),
["n"] = get_lua_cb("create"),
["d"] = get_lua_cb("remove"),
["r"] = get_lua_cb("rename"),
["<C-r>"] = get_lua_cb("full_rename"),
["x"] = get_lua_cb("cut"),
["c"] = get_lua_cb("copy"),
["p"] = get_lua_cb("paste"),
["[c"] = get_lua_cb("prev_git_item"),
["]c"] = get_lua_cb("next_git_item"),
["-"] = get_lua_cb("dir_up"),
["q"] = get_lua_cb("close")
}
+30
View File
@@ -0,0 +1,30 @@
-- check if packer is installed (~/local/share/nvim/site/pack)
local packer_exists = pcall(vim.cmd, [[packadd packer.nvim]])
return require("packer").startup(
function()
use {"wbthomason/packer.nvim", opt = true}
use {"kyazdani42/nvim-web-devicons"}
use {"kyazdani42/nvim-tree.lua"}
use {"nvim-lua/plenary.nvim"}
use {"lewis6991/gitsigns.nvim"}
use {"glepnir/galaxyline.nvim"}
use {"akinsho/nvim-bufferline.lua"}
use {"907th/vim-auto-save"}
use {"nvim-treesitter/nvim-treesitter"}
use {"chriskempson/base16-vim"}
use {"norcalli/nvim-colorizer.lua"}
use { 'Yggdroot/indentLine'}
use {"ryanoasis/vim-devicons"}
use {"sbdchd/neoformat"}
use {"neovim/nvim-lspconfig"}
use {"hrsh7th/nvim-compe"}
use {"windwp/nvim-autopairs"}
use {"alvan/vim-closetag"}
use {"tweekmonster/startuptime.vim"}
use {"onsails/lspkind-nvim"}
use {"nvim-telescope/telescope.nvim"}
use {"nvim-telescope/telescope-media-files.nvim"}
use {"nvim-lua/popup.nvim"}
end
)
+204
View File
@@ -0,0 +1,204 @@
local gl = require("galaxyline")
local gls = gl.section
gl.short_line_list = {"LuaTree", "vista", "dbui"}
local colors = {
bg = "#282c34",
line_bg = "#282c34",
fg = "#D8DEE9",
fg_green = "#65a380",
yellow = "#A3BE8C",
cyan = "#22262C",
darkblue = "#61afef",
green = "#BBE67E",
orange = "#FF8800",
purple = "#252930",
magenta = "#c678dd",
blue = "#22262C",
red = "#DF8890",
lightbg = "#3C4048",
nord = "#81A1C1",
greenYel = "#EBCB8B"
}
gls.left[1] = {
leftRounded = {
provider = function()
return ""
end,
highlight = {colors.nord, colors.bg}
}
}
gls.left[2] = {
ViMode = {
provider = function()
return ""
end,
highlight = {colors.bg, colors.nord},
separator = " ",
separator_highlight = {colors.lightbg, colors.lightbg}
}
}
gls.left[3] = {
FileIcon = {
provider = "FileIcon",
condition = buffer_not_empty,
highlight = {require("galaxyline.provider_fileinfo").get_file_icon_color, colors.lightbg}
}
}
gls.left[4] = {
FileName = {
provider = {"FileName", "FileSize"},
condition = buffer_not_empty,
highlight = {colors.fg, colors.lightbg}
}
}
gls.left[5] = {
teech = {
provider = function()
return ""
end,
separator = " ",
highlight = {colors.lightbg, colors.bg}
}
}
local checkwidth = function()
local squeeze_width = vim.fn.winwidth(0) / 2
if squeeze_width > 40 then
return true
end
return false
end
gls.left[6] = {
DiffAdd = {
provider = "DiffAdd",
condition = checkwidth,
icon = "",
highlight = {colors.greenYel, colors.line_bg}
}
}
gls.left[7] = {
DiffModified = {
provider = "DiffModified",
condition = checkwidth,
icon = "",
highlight = {colors.orange, colors.line_bg}
}
}
gls.left[8] = {
DiffRemove = {
provider = "DiffRemove",
condition = checkwidth,
icon = "",
highlight = {colors.red, colors.line_bg}
}
}
gls.left[9] = {
LeftEnd = {
provider = function()
return " "
end,
separator = " ",
separator_highlight = {colors.line_bg, colors.line_bg},
highlight = {colors.line_bg, colors.line_bg}
}
}
gls.left[10] = {
DiagnosticError = {
provider = "DiagnosticError",
icon = "",
highlight = {colors.red, colors.bg}
}
}
gls.left[11] = {
Space = {
provider = function()
return " "
end,
highlight = {colors.line_bg, colors.line_bg}
}
}
gls.left[12] = {
DiagnosticWarn = {
provider = "DiagnosticWarn",
icon = "",
highlight = {colors.blue, colors.bg}
}
}
gls.right[1] = {
GitIcon = {
provider = function()
return ""
end,
condition = require("galaxyline.provider_vcs").check_git_workspace,
highlight = {colors.green, colors.line_bg}
}
}
gls.right[2] = {
GitBranch = {
provider = "GitBranch",
condition = require("galaxyline.provider_vcs").check_git_workspace,
highlight = {colors.green, colors.line_bg}
}
}
gls.right[3] = {
right_LeftRounded = {
provider = function()
return ""
end,
separator = " ",
separator_highlight = {colors.bg, colors.bg},
highlight = {colors.red, colors.bg}
}
}
gls.right[4] = {
SiMode = {
provider = function()
local alias = {
n = "NORMAL",
i = "INSERT",
c = "COMMAND",
V = "VISUAL",
[""] = "VISUAL",
v = "VISUAL",
R = "REPLACE"
}
return alias[vim.fn.mode()]
end,
highlight = {colors.bg, colors.red}
}
}
gls.right[5] = {
PerCent = {
provider = "LinePercent",
separator = " ",
separator_highlight = {colors.red, colors.red},
highlight = {colors.bg, colors.fg}
}
}
gls.right[6] = {
rightRounded = {
provider = function()
return ""
end,
highlight = {colors.fg, colors.bg}
}
}
+76
View File
@@ -0,0 +1,76 @@
require("telescope").setup {
defaults = {
vimgrep_arguments = {
"rg",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case"
},
prompt_position = "bottom",
prompt_prefix = "> ",
selection_caret = "> ",
entry_prefix = " ",
initial_mode = "insert",
selection_strategy = "reset",
sorting_strategy = "descending",
layout_strategy = "horizontal",
layout_defaults = {
horizontal = {
mirror = false,
preview_width = 0.5
},
vertical = {
mirror = false
}
},
file_sorter = require "telescope.sorters".get_fuzzy_file,
file_ignore_patterns = {},
generic_sorter = require "telescope.sorters".get_generic_fuzzy_sorter,
shorten_path = true,
winblend = 0,
width = 0.75,
preview_cutoff = 120,
results_height = 1,
results_width = 0.8,
border = {},
borderchars = {"─", "│", "─", "│", "╭", "╮", "╯", "╰"},
color_devicons = true,
use_less = true,
set_env = {["COLORTERM"] = "truecolor"}, -- default = nil,
file_previewer = require "telescope.previewers".vim_buffer_cat.new,
grep_previewer = require "telescope.previewers".vim_buffer_vimgrep.new,
qflist_previewer = require "telescope.previewers".vim_buffer_qflist.new,
-- Developer configurations: Not meant for general override
buffer_previewer_maker = require "telescope.previewers".buffer_previewer_maker
},
extensions = {
media_files = {
filetypes = {"png", "webp", "jpg", "jpeg"},
find_cmd = "rg" -- find command (defaults to `fd`)
}
}
}
require("telescope").load_extension("media_files")
local opt = {noremap = true, silent = true}
vim.g.mapleader = " "
-- mappings
vim.api.nvim_set_keymap("n", "<Leader>ff", [[<Cmd>lua require('telescope.builtin').find_files()<CR>]], opt)
vim.api.nvim_set_keymap(
"n",
"<Leader>fp",
[[<Cmd>lua require('telescope').extensions.media_files.media_files()<CR>]],
opt
)
vim.api.nvim_set_keymap("n", "<Leader>fb", [[<Cmd>lua require('telescope.builtin').buffers()<CR>]], opt)
vim.api.nvim_set_keymap("n", "<Leader>fh", [[<Cmd>lua require('telescope.builtin').help_tags()<CR>]], opt)
vim.api.nvim_set_keymap("n", "<Leader>fo", [[<Cmd>lua require('telescope.builtin').oldfiles()<CR>]], opt)
vim.api.nvim_set_keymap("n", "<Leader>fm", [[<Cmd> Neoformat<CR>]], opt)
vim.api.nvim_set_keymap("n", "<C-a>", [[ <Cmd> %y+<CR>]], opt)
+18
View File
@@ -0,0 +1,18 @@
local ts_config = require("nvim-treesitter.configs")
ts_config.setup {
ensure_installed = {
"javascript",
"html",
"css",
"bash",
"cpp",
"rust",
"lua",
"go",
},
highlight = {
enable = true,
use_languagetree = true
}
}
+43
View File
@@ -0,0 +1,43 @@
local scopes = {o = vim.o, b = vim.bo, w = vim.wo}
local function opt(scope, key, value)
scopes[scope][key] = value
if scope ~= "o" then
scopes["o"][key] = value
end
end
opt("o", "hidden", true)
opt("o", "ignorecase", true)
opt("o", "splitbelow", true)
opt("o", "splitright", true)
opt("o", "termguicolors", true)
opt("w", "number", true)
opt("o", "numberwidth", 2)
opt("o", "mouse", "a")
opt("w", "signcolumn", "yes")
opt("o", "cmdheight", 1)
opt("o", "updatetime", 250) -- update interval for gitsigns
opt("o", "clipboard", "unnamedplus")
-- for indenline
opt("b", "expandtab", true )
opt("b", "shiftwidth", 2 )
local M = {}
function M.is_buffer_empty()
-- Check whether the current buffer is empty
return vim.fn.empty(vim.fn.expand("%:t")) == 1
end
function M.has_width_gt(cols)
-- Check if the windows width is greater than a given number of columns
return vim.fn.winwidth(0) / 2 > cols
end
return M
+71
View File
@@ -0,0 +1,71 @@
vim.cmd [[packadd nvim-web-devicons]]
require "nvim-web-devicons".setup {
override = {
html = {
icon = "",
color = "#DE8C92",
name = "html"
},
css = {
icon = "",
color = "#61afef",
name = "css"
},
js = {
icon = "",
color = "#EBCB8B",
name = "js"
},
png = {
icon = "",
color = "#BD77DC",
name = "png"
},
jpg = {
icon = "",
color = "#BD77DC",
name = "jpg"
},
jpeg = {
icon = "",
color = "#BD77DC",
name = "jpeg"
},
mp3 = {
icon = "",
color = "#C8CCD4",
name = "mp3"
},
mp4 = {
icon = "",
color = "#C8CCD4",
name = "mp4"
},
out = {
icon = "",
color = "#C8CCD4",
name = "out"
},
toml = {
icon = "",
color = "#61afef",
name = "toml"
},
lock = {
icon = "",
color = "#DE6B74",
name = "lock"
},
zip = {
icon = "",
color = "#EBCB8B",
name = "zip"
},
xz = {
icon = "",
color = "#EBCB8B",
name = "xz"
}
}
}