add work nvim setting
This commit is contained in:
parent
dabce46993
commit
f21db92115
221
init.lua
221
init.lua
|
|
@ -1,89 +1,3 @@
|
|||
--[[
|
||||
|
||||
=====================================================================
|
||||
==================== READ THIS BEFORE CONTINUING ====================
|
||||
=====================================================================
|
||||
======== .-----. ========
|
||||
======== .----------------------. | === | ========
|
||||
======== |.-""""""""""""""""""-.| |-----| ========
|
||||
======== || || | === | ========
|
||||
======== || KICKSTART.NVIM || |-----| ========
|
||||
======== || || | === | ========
|
||||
======== || || |-----| ========
|
||||
======== ||:Tutor || |:::::| ========
|
||||
======== |'-..................-'| |____o| ========
|
||||
======== `"")----------------(""` ___________ ========
|
||||
======== /::::::::::| |::::::::::\ \ no mouse \ ========
|
||||
======== /:::========| |==hjkl==:::\ \ required \ ========
|
||||
======== '""""""""""""' '""""""""""""' '""""""""""' ========
|
||||
======== ========
|
||||
=====================================================================
|
||||
=====================================================================
|
||||
|
||||
What is Kickstart?
|
||||
|
||||
Kickstart.nvim is *not* a distribution.
|
||||
|
||||
Kickstart.nvim is a starting point for your own configuration.
|
||||
The goal is that you can read every line of code, top-to-bottom, understand
|
||||
what your configuration is doing, and modify it to suit your needs.
|
||||
|
||||
Once you've done that, you can start exploring, configuring and tinkering to
|
||||
make Neovim your own! That might mean leaving Kickstart just the way it is for a while
|
||||
or immediately breaking it into modular pieces. It's up to you!
|
||||
|
||||
If you don't know anything about Lua, I recommend taking some time to read through
|
||||
a guide. One possible example which will only take 10-15 minutes:
|
||||
- https://learnxinyminutes.com/docs/lua/
|
||||
|
||||
After understanding a bit more about Lua, you can use `:help lua-guide` as a
|
||||
reference for how Neovim integrates Lua.
|
||||
- :help lua-guide
|
||||
- (or HTML version): https://neovim.io/doc/user/lua-guide.html
|
||||
|
||||
Kickstart Guide:
|
||||
|
||||
TODO: The very first thing you should do is to run the command `:Tutor` in Neovim.
|
||||
|
||||
If you don't know what this means, type the following:
|
||||
- <escape key>
|
||||
- :
|
||||
- Tutor
|
||||
- <enter key>
|
||||
|
||||
(If you already know the Neovim basics, you can skip this step.)
|
||||
|
||||
Once you've completed that, you can continue working through **AND READING** the rest
|
||||
of the kickstart init.lua.
|
||||
|
||||
Next, run AND READ `:help`.
|
||||
This will open up a help window with some basic information
|
||||
about reading, navigating and searching the builtin help documentation.
|
||||
|
||||
This should be the first place you go to look when you're stuck or confused
|
||||
with something. It's one of my favorite Neovim features.
|
||||
|
||||
MOST IMPORTANTLY, we provide a keymap "<space>sh" to [s]earch the [h]elp documentation,
|
||||
which is very useful when you're not exactly sure of what you're looking for.
|
||||
|
||||
I have left several `:help X` comments throughout the init.lua
|
||||
These are hints about where to find more information about the relevant settings,
|
||||
plugins or Neovim features used in Kickstart.
|
||||
|
||||
NOTE: Look for lines like this
|
||||
|
||||
Throughout the file. These are for you, the reader, to help you understand what is happening.
|
||||
Feel free to delete them once you know what you're doing, but they should serve as a guide
|
||||
for when you are first encountering a few different constructs in your Neovim config.
|
||||
|
||||
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info.
|
||||
|
||||
I hope you enjoy your Neovim journey,
|
||||
- TJ
|
||||
|
||||
P.S. You can delete this when you're done too. It's your config now! :)
|
||||
--]]
|
||||
|
||||
-- Set <space> as the leader key
|
||||
-- See `:help mapleader`
|
||||
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
||||
|
|
@ -91,7 +5,7 @@ vim.g.mapleader = ' '
|
|||
vim.g.maplocalleader = ' '
|
||||
|
||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
||||
vim.g.have_nerd_font = false
|
||||
vim.g.have_nerd_font = true
|
||||
|
||||
-- [[ Setting options ]]
|
||||
-- See `:help vim.o`
|
||||
|
|
@ -110,6 +24,22 @@ vim.o.mouse = 'a'
|
|||
-- Don't show the mode, since it's already in the status line
|
||||
vim.o.showmode = false
|
||||
|
||||
vim.opt.tags = "./tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,../../../../../../tags,../../../../../../../tags"
|
||||
|
||||
vim.opt.backup = true
|
||||
local home_backup_path = os.getenv('HOME') .. '/.backup'
|
||||
vim.opt.backupdir = home_backup_path
|
||||
|
||||
vim.opt.errorbells = false
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.expandtab = true
|
||||
|
||||
vim.g.autoformat = false
|
||||
vim.g.setrnu = false
|
||||
|
||||
-- Sync clipboard between OS and Neovim.
|
||||
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
||||
-- Remove this option if you want your OS clipboard to remain independent.
|
||||
|
|
@ -164,11 +94,16 @@ vim.o.scrolloff = 10
|
|||
-- See `:help 'confirm'`
|
||||
vim.o.confirm = true
|
||||
|
||||
vim.opt.foldlevel = 5
|
||||
vim.opt.foldmethod = "expr"
|
||||
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
|
||||
|
||||
-- [[ Basic Keymaps ]]
|
||||
-- See `:help vim.keymap.set()`
|
||||
|
||||
-- Clear highlights on search when pressing <Esc> in normal mode
|
||||
-- See `:help hlsearch`
|
||||
vim.opt.hlsearch = true
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
|
||||
-- Diagnostic Config & Keymaps
|
||||
|
|
@ -230,6 +165,8 @@ vim.api.nvim_create_autocmd('TextYankPost', {
|
|||
callback = function() vim.hl.on_yank() end,
|
||||
})
|
||||
|
||||
--vim.api.nvim_set_hl(0, '@lsp.type.comment.cpp', {})
|
||||
|
||||
-- [[ Install `lazy.nvim` plugin manager ]]
|
||||
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
|
||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||
|
|
@ -289,6 +226,24 @@ require('lazy').setup({
|
|||
},
|
||||
},
|
||||
|
||||
{
|
||||
'sindrets/diffview.nvim',
|
||||
},
|
||||
|
||||
{
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
-- @type Flash.Config
|
||||
opts = {},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
|
||||
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
|
||||
{ "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
|
||||
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
|
||||
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
|
||||
},
|
||||
},
|
||||
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
|
||||
--
|
||||
-- This is often very useful to both group configuration, as well as handle
|
||||
|
|
@ -393,7 +348,25 @@ require('lazy').setup({
|
|||
-- i = { ['<c-enter>'] = 'to_fuzzy_refine' },
|
||||
-- },
|
||||
-- },
|
||||
-- pickers = {}
|
||||
defaults = {
|
||||
layout_config = {
|
||||
preview_width = 0.7,
|
||||
},
|
||||
},
|
||||
pickers = {
|
||||
find_files = {
|
||||
find_command = { "rg", "--files", "-g", "!**/**Linux_x86_64/**", "-g", "!compile_commands.json"},
|
||||
},
|
||||
live_grep = {
|
||||
additional_args = {"-w", "-g", "!**/**Linux_x86_64/**"},
|
||||
},
|
||||
grep_string = {
|
||||
additional_args = {"-w", "-g", "!**/**Linux_x86_64/**"},
|
||||
},
|
||||
},
|
||||
cond = function (lang, bufnr)
|
||||
return lang == "cpp" and vim.api.nvim_buf_line_count(bufnr) < 10000
|
||||
end,
|
||||
extensions = {
|
||||
['ui-select'] = { require('telescope.themes').get_dropdown() },
|
||||
},
|
||||
|
|
@ -411,11 +384,13 @@ require('lazy').setup({
|
|||
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
|
||||
vim.keymap.set({ 'n', 'v' }, '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
|
||||
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
|
||||
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||
--vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
|
||||
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
|
||||
vim.keymap.set('n', '<leader>sc', builtin.commands, { desc = '[S]earch [C]ommands' })
|
||||
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
|
||||
vim.keymap.set("n", "<C-q>", "<cmd> Telescope grep_string<CR>", {desc="Telescope Grep String"})
|
||||
vim.keymap.set("n", "<C-p>", "<cmd> Telescope find_files<CR>", {desc="Telescope Files"})
|
||||
|
||||
-- This runs on LSP attach per buffer (see main LSP attach function in 'neovim/nvim-lspconfig' config for more info,
|
||||
-- it is better explained there). This allows easily switching between pickers if you prefer using something else!
|
||||
|
|
@ -483,6 +458,7 @@ require('lazy').setup({
|
|||
{
|
||||
-- Main LSP Configuration
|
||||
'neovim/nvim-lspconfig',
|
||||
ft = {"lua", "cpp", "python"},
|
||||
dependencies = {
|
||||
-- Automatically install LSPs and related tools to stdpath for Neovim
|
||||
-- Mason must be loaded before its dependents so we need to set it up here.
|
||||
|
|
@ -603,9 +579,25 @@ require('lazy').setup({
|
|||
-- See `:help lsp-config` for information about keys and how to configure
|
||||
---@type table<string, vim.lsp.Config>
|
||||
local servers = {
|
||||
-- clangd = {},
|
||||
clangd = {
|
||||
mason = true,
|
||||
cmd = {'/home/utils/llvm-17.0.6/bin/clangd',
|
||||
"--background-index",
|
||||
"--clang-tidy",
|
||||
"--j=2"},
|
||||
filetypes = {"cpp"},
|
||||
single_file_support = true,
|
||||
capabilities = capabilities,
|
||||
--on_attach = on_attach,
|
||||
--root_dir = function()
|
||||
-- return vim.fn.getcwd()
|
||||
--end
|
||||
root_dir = function(fname)
|
||||
return require('lspconfig/util').root_pattern( unpack({'compile_commands.json', 'tree.make'}))(fname)
|
||||
end
|
||||
},
|
||||
-- gopls = {},
|
||||
-- pyright = {},
|
||||
pyright = {},
|
||||
-- rust_analyzer = {},
|
||||
--
|
||||
-- Some languages (like typescript) have entire language plugins that can be useful:
|
||||
|
|
@ -806,7 +798,8 @@ require('lazy').setup({
|
|||
-- change the command in the config to whatever the name of that colorscheme is.
|
||||
--
|
||||
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
||||
'folke/tokyonight.nvim',
|
||||
--'folke/tokyonight.nvim',
|
||||
'catppuccin/nvim',
|
||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
||||
config = function()
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
|
|
@ -819,7 +812,10 @@ require('lazy').setup({
|
|||
-- Load the colorscheme here.
|
||||
-- Like many other themes, this one has different styles, and you could load
|
||||
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
||||
vim.cmd.colorscheme 'tokyonight-night'
|
||||
vim.cmd.colorscheme 'catppuccin-mocha'
|
||||
|
||||
-- You can configure highlights by doing something like:
|
||||
vim.cmd.hi 'Comment gui=none'
|
||||
end,
|
||||
},
|
||||
|
||||
|
|
@ -877,7 +873,9 @@ require('lazy').setup({
|
|||
branch = 'main',
|
||||
-- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
|
||||
config = function()
|
||||
local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
|
||||
-- If on a system with a non-default compiler, set it here:
|
||||
-- require('nvim-treesitter.install').compilers = {"/home/utils/gcc-12.2.0/bin/gcc" }
|
||||
local parsers = { 'bash', 'c', 'cpp', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'python', 'query', 'vim', 'vimdoc' }
|
||||
require('nvim-treesitter').install(parsers)
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
callback = function(args)
|
||||
|
|
@ -902,6 +900,41 @@ require('lazy').setup({
|
|||
})
|
||||
end,
|
||||
},
|
||||
{ 'ngemily/vim-vp4',
|
||||
lazy = true,
|
||||
event = "BufModifiedSet",
|
||||
cmd = {"Vp4Diff", "Vp4Annotate"},
|
||||
},
|
||||
{ 'AndrewRadev/linediff.vim',
|
||||
lazy = true,
|
||||
cmd = "Linediff",
|
||||
},
|
||||
{ 'junegunn/vim-easy-align',
|
||||
lazy = true,
|
||||
cmd="EasyAlign"
|
||||
},
|
||||
{
|
||||
'pteroctopus/faster.nvim',
|
||||
opts = {
|
||||
behaviors = {
|
||||
bigfile = {
|
||||
features_disabled = {
|
||||
"illuminate", "matchparen", "lsp", "treesitter", "indent_blankline",
|
||||
"vimopts", "syntax", "filetype", "linediff", "vim-vp4", "vim-easy-align", "telescope"
|
||||
},
|
||||
filesize = 3,
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"m4xshen/hardtime.nvim",
|
||||
dependencies = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim" },
|
||||
opts = {
|
||||
max_count = 10,
|
||||
restriction_mode = "hint",
|
||||
}
|
||||
},
|
||||
|
||||
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the
|
||||
-- init.lua. If you want these files, they are in the repository, so you can just download them and
|
||||
|
|
|
|||
Loading…
Reference in New Issue