From 345b7242678868f18d2b08d14799186353e68baa Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Tue, 25 Jun 2024 18:24:40 +0800 Subject: Update --- vim/init/basic.vim | 3 +- vim/init/keymaps.vim | 12 ++--- vim/init/plugins.vim | 24 +++++----- vim/init/style.vim | 8 ++-- vim/lua/configs/conform.lua | 5 +- vim/lua/configs/lspconfig.lua | 2 +- vim/lua/mappings.lua | 103 +++++++++++++++++++++++++----------------- vim/lua/plugins/init.lua | 10 +--- 8 files changed, 92 insertions(+), 75 deletions(-) (limited to 'vim') diff --git a/vim/init/basic.vim b/vim/init/basic.vim index a6d07dc..c2996d2 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim @@ -66,7 +66,8 @@ set autoindent " If current line has indent, automatically set indent for n set cindent set ttimeout set ttimeoutlen=50 -set updatetime=250 +set updatetime=500 +autocmd CursorHold * normal! m' imap l " Change IM to US when exit to Normal mode diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 211a0d1..14d813b 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim @@ -78,7 +78,7 @@ vnoremap , :terminal map pp :setlocal paste! " Switch CDW to root git directory -nnoremap cdg :execute 'cd' fnameescape(fnamemodify(finddir('.git', escape(expand('%:p:h'), ' ') . ';'), ':h')):pwd +nnoremap cg :execute 'cd' fnameescape(fnamemodify(finddir('.git', escape(expand('%:p:h'), ' ') . ';'), ':h')):pwd " Switch CWD to the directory of the open buffer map cd :cd %:p:h:pwd @@ -450,17 +450,17 @@ endfunc " 下面进行 grep,这样能方便的对相关项目进行搜索 "---------------------------------------------------------------------- if executable('rg') - noremap :AsyncRun! -cwd= rg -n --no-heading - \ --color never -g *.h -g *.c* -g *.py -g *.js -g *.vim + noremap :AsyncRun! -cwd= rg -n --no-heading + \ --color never -g *.h -g *.c* -g *.py -g *.js -g *.vim \ "" elseif has('win32') || has('win64') - noremap :AsyncRun! -cwd= findstr /n /s /C:"" + noremap :AsyncRun! -cwd= findstr /n /s /C:"" \ "\%CD\%\*.h" "\%CD\%\*.c*" "\%CD\%\*.py" "\%CD\%\*.js" \ "\%CD\%\*.vim" \ else - noremap :AsyncRun! -cwd= grep -n -s -R - \ --include='*.h' --include='*.c*' --include='*.py' + noremap :AsyncRun! -cwd= grep -n -s -R + \ --include='*.h' --include='*.c*' --include='*.py' \ --include='*.js' --include='*.vim' \ '' endif diff --git a/vim/init/plugins.vim b/vim/init/plugins.vim index 5b05c8e..d8b1307 100644 --- a/vim/init/plugins.vim +++ b/vim/init/plugins.vim @@ -145,7 +145,7 @@ let g:ale_set_quickfix = 1 " " ""---------------------------------------------------------------------- -"" 默认插件 +"" 默认插件 ""---------------------------------------------------------------------- " "" 全文快速移动,f{char} 即可触发 @@ -276,7 +276,7 @@ let g:ale_set_quickfix = 1 " " " 提供 gist 接口 " Plug 'lambdalisue/vim-gista', { 'on': 'Gista' } -" +" " " ALT_+/- 用于按分隔符扩大缩小 v 选区 " map (expand_region_expand) " map (expand_region_shrink) @@ -305,7 +305,7 @@ let g:ale_set_quickfix = 1 " let g:gutentags_cache_dir = expand('~/.cache/tags') " " " 默认禁用自动生成 -" let g:gutentags_modules = [] +" let g:gutentags_modules = [] " " " 如果有 ctags 可执行就允许动态生成 ctags 文件 " if executable('ctags') @@ -382,7 +382,7 @@ let g:ale_set_quickfix = 1 " " rust 语法增强 " Plug 'rust-lang/rust.vim', { 'for': 'rust' } " -" " vim org-mode +" " vim org-mode " Plug 'jceb/vim-orgmode', { 'for': 'org' } "endif " @@ -469,13 +469,13 @@ let g:ale_set_quickfix = 1 " " " 编辑不同文件类型需要的语法检查器 " let g:ale_linters = { -" \ 'c': ['gcc', 'cppcheck'], -" \ 'cpp': ['gcc', 'cppcheck'], -" \ 'python': ['flake8', 'pylint'], -" \ 'lua': ['luac'], +" \ 'c': ['gcc', 'cppcheck'], +" \ 'cpp': ['gcc', 'cppcheck'], +" \ 'python': ['flake8', 'pylint'], +" \ 'lua': ['luac'], " \ 'go': ['go build', 'gofmt'], " \ 'java': ['javac'], -" \ 'javascript': ['eslint'], +" \ 'javascript': ['eslint'], " \ } " " @@ -660,16 +660,16 @@ let g:ale_set_quickfix = 1 ""---------------------------------------------------------------------- "" Ycm 白名单(非名单内文件不启用 YCM),避免打开个 1MB 的 txt 分析半天 ""---------------------------------------------------------------------- -"let g:ycm_filetype_whitelist = { +"let g:ycm_filetype_whitelist = { " \ "c":1, -" \ "cpp":1, +" \ "cpp":1, " \ "objc":1, " \ "objcpp":1, " \ "python":1, " \ "java":1, " \ "javascript":1, " \ "coffee":1, -" \ "vim":1, +" \ "vim":1, " \ "go":1, " \ "cs":1, " \ "lua":1, diff --git a/vim/init/style.vim b/vim/init/style.vim index 8d056b0..a96601a 100644 --- a/vim/init/style.vim +++ b/vim/init/style.vim @@ -92,7 +92,7 @@ endif hi! SignColumn guibg=NONE ctermbg=NONE " 修改行号为浅灰色,默认主题的黄色行号很难看,换主题可以仿照修改 -highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE +highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE \ gui=NONE guifg=DarkGrey guibg=NONE " 修正补全目录的色彩:默认太难看 @@ -106,7 +106,7 @@ hi! PmenuSel guibg=gray guifg=brown ctermbg=brown ctermfg=gray if has('terminal') && exists(':terminal') == 2 if exists('##TerminalOpen') augroup VimUnixTerminalGroup - au! + au! au TerminalOpen * setlocal nonumber signcolumn=no augroup END endif @@ -174,7 +174,7 @@ function! Vim_NeatBuffer(bufnr, fullname) if l:name == '' return '[No Name]' else - if a:fullname + if a:fullname return fnamemodify(l:name, ':p') else let aname = fnamemodify(l:name, ':p') @@ -193,7 +193,7 @@ function! Vim_NeatBuffer(bufnr, fullname) if l:buftype == 'quickfix' return '[Quickfix]' elseif l:name != '' - if a:fullname + if a:fullname return '-'.fnamemodify(l:name, ':p') else return '-'.fnamemodify(l:name, ':t') diff --git a/vim/lua/configs/conform.lua b/vim/lua/configs/conform.lua index a000447..3553caf 100644 --- a/vim/lua/configs/conform.lua +++ b/vim/lua/configs/conform.lua @@ -1,8 +1,9 @@ local options = { formatters_by_ft = { lua = { "stylua" }, - -- css = { "prettier" }, - -- html = { "prettier" }, + css = { "prettier" }, + html = { "prettier" }, + markdown = { "prettier" } }, -- format_on_save = { diff --git a/vim/lua/configs/lspconfig.lua b/vim/lua/configs/lspconfig.lua index a73657a..c0fda79 100644 --- a/vim/lua/configs/lspconfig.lua +++ b/vim/lua/configs/lspconfig.lua @@ -1,4 +1,4 @@ --- EXAMPLE +-- EXAMPLE local on_attach = require("nvchad.configs.lspconfig").on_attach local on_init = require("nvchad.configs.lspconfig").on_init local capabilities = require("nvchad.configs.lspconfig").capabilities diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua index 7408708..fd58297 100644 --- a/vim/lua/mappings.lua +++ b/vim/lua/mappings.lua @@ -2,63 +2,63 @@ -- add yours here -local map = vim.keymap.set - -map("i", "jk", "") +vim.keymap.set("i", "jk", "") +vim.keymap.set("n", "co", "cd ~/.config/nvimpwd") vim.cmd("command! W execute 'SudaWrite %'") -- map({ "n", "i", "v" }, "", " w ") -map("n", "", "noh", { desc = "general clear highlights" }) +vim.keymap.set("n", "", "noh", { desc = "general clear highlights" }) -- map("n", "", "%y+", { desc = "file copy whole" }) -- map("n", "n", "set nu!", { desc = "toggle line number" }) -- map("n", "rn", "set rnu!", { desc = "toggle relative number" }) -map("n", "ch", "NvCheatsheet", { desc = "toggle nvcheatsheet" }) +vim.keymap.set("n", "ch", "NvCheatsheet", { desc = "toggle nvcheatsheet" }) -map("n", "F", function() +vim.keymap.set("n", "F", function() require("conform").format { lsp_fallback = true } end, { desc = "format files" }) -- global lsp mappings -map("n", "ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) +vim.keymap.set("n", "ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) -- tabufline -map("n", "", function() +vim.keymap.set("n", "", function() require("nvchad.tabufline").next() end, { desc = "buffer goto next" }) -map("n", "", function() +vim.keymap.set("n", "", function() require("nvchad.tabufline").prev() end, { desc = "buffer goto prev" }) -map("n", "x", function() +vim.keymap.set("n", "x", function() require("nvchad.tabufline").close_buffer() end, { desc = "buffer close" }) -- Comment -map("n", "/", "gcc", { desc = "comment toggle", remap = true }) -map("v", "/", "gc", { desc = "comment toggle", remap = true }) +vim.keymap.set("n", "/", "gcc", { desc = "comment toggle", remap = true }) +vim.keymap.set("v", "/", "gc", { desc = "comment toggle", remap = true }) -- nvimtree -map("n", "", "NvimTreeToggle", { desc = "nvimtree toggle window" }) -map("n", "nf", "NvimTreeFocus", { desc = "nvimtree focus window" }) +vim.keymap.set("n", "", "NvimTreeToggle", { desc = "nvimtree toggle window" }) +vim.keymap.set("n", "nf", "NvimTreeFocus", { desc = "nvimtree focus window" }) -- telescope -map("n", "f", "Telescope oldfiles", { desc = "telescope find oldfiles" }) -map("n", "b", "Telescope buffers", { desc = "telescope find buffers" }) -map("n", "/", "Telescope current_buffer_fuzzy_find", { desc = "telescope find in current buffer" }) -map("n", "sf", "Telescope find_files", { desc = "telescope find files" }) -map("n", "sF", "Telescope find_files follow=true no_ignore=true hidden=true", +vim.keymap.set("n", "f", "Telescope oldfiles", { desc = "telescope find oldfiles" }) +vim.keymap.set("n", "b", "Telescope buffers", { desc = "telescope find buffers" }) +vim.keymap.set("n", "/", "Telescope current_buffer_fuzzy_find", + { desc = "telescope find in current buffer" }) +vim.keymap.set("n", "sf", "Telescope find_files", { desc = "telescope find files" }) +vim.keymap.set("n", "sF", "Telescope find_files follow=true no_ignore=true hidden=true", { desc = "telescope find all files" }) -map("n", "sg", "Telescope live_grep", { desc = "telescope live grep" }) +vim.keymap.set("n", "sg", "Telescope live_grep", { desc = "telescope live grep" }) -map("n", "gf", "Telescope git_files", { desc = "telescope git files" }) -map("n", "sH", "Telescope help_tags", { desc = "telescope help page" }) -map("n", "tt", ":Telescope ", { desc = "telescope help page" }) -map('n', 'sk', "Telescope keymaps", { desc = 'telescope keymaps' }) -map("n", "pt", "Telescope terms", { desc = "telescope pick hidden term" }) +vim.keymap.set("n", "gf", "Telescope git_files", { desc = "telescope git files" }) +vim.keymap.set("n", "sH", "Telescope help_tags", { desc = "telescope help page" }) +vim.keymap.set("n", "tt", ":Telescope ", { desc = "telescope help page" }) +vim.keymap.set('n', 'sk', "Telescope keymaps", { desc = 'telescope keymaps' }) +vim.keymap.set("n", "pt", "Telescope terms", { desc = "telescope pick hidden term" }) vim.keymap.set('n', 'ss', function() local current_filetype = vim.bo.filetype @@ -82,6 +82,26 @@ vim.keymap.set('n', 'ss', function() } end, { desc = '[S]earch [S]nippets' }) +vim.keymap.set('n', 'sd', function() + require('telescope.builtin').oldfiles { + prompt_title = 'CD to', + attach_mappings = function(prompt_bufnr, map) + local cd_to_dir = function() + local file = require('telescope.actions.state').get_selected_entry()[1] + local path = string.match(file, "(.*[/\\])") + require('telescope.actions').close(prompt_bufnr) + vim.cmd("cd " .. path) + vim.cmd("pwd") + end + + map('i', '', cd_to_dir) + map('n', '', cd_to_dir) + + return true + end, + } +end, { desc = 'Search Directory' }) + vim.keymap.set('n', 'sn', function() vim.ui.input({ prompt = 'Snippet Name: ' }, function(snippet_path) local current_filetype @@ -112,27 +132,27 @@ end, { desc = "Create a new snippet" }) -- map("t", "", "", { desc = "terminal escape terminal mode" }) -- new terminals -map("n", "h", function() require("nvchad.term").new { pos = "sp" } end, +vim.keymap.set("n", "h", function() require("nvchad.term").new { pos = "sp" } end, { desc = "terminal new horizontal term" }) -map("n", "v", function() require("nvchad.term").new { pos = "vsp" } end, +vim.keymap.set("n", "v", function() require("nvchad.term").new { pos = "vsp" } end, { desc = "terminal new vertical window" }) -- toggleable -map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, +vim.keymap.set({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, { desc = "terminal toggleable vertical term" }) -map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, +vim.keymap.set({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, { desc = "terminal new horizontal term" }) -map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, +vim.keymap.set({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, { desc = "terminal toggle floating term" }) -- whichkey -map("n", "wK", "WhichKey ", { desc = "whichkey all keymaps" }) +vim.keymap.set("n", "wK", "WhichKey ", { desc = "whichkey all keymaps" }) -map("n", "wk", function() +vim.keymap.set("n", "wk", function() vim.cmd("WhichKey " .. vim.fn.input "WhichKey: ") end, { desc = "whichkey query lookup" }) -- blankline -map("n", "cc", function() +vim.keymap.set("n", "cc", function() local config = { scope = {} } config.scope.exclude = { language = {}, node_type = {} } config.scope.include = { node_type = {} } @@ -148,11 +168,12 @@ map("n", "cc", function() end, { desc = "blankline jump to current context" }) -- [[ Configure Obsidian.nvim ]] -map('n', "oo", ':Obsidian') -map('n', "ot", ':ObsidianTags') -map('n', "os", ':ObsidianSearch') -map('n', "oq", ':ObsidianQuickSwitch') -map('v', "on", ':ObsidianLinkNew') +vim.keymap.set('n', "oo", ':Obsidian') +vim.keymap.set('n', "ot", ':ObsidianTags') +vim.keymap.set('n', "os", ':ObsidianSearch') +vim.keymap.set('n', "oq", ':ObsidianQuickSwitch') +vim.keymap.set('v', "on", ':ObsidianLinkNew') +vim.keymap.set('n', "ol", ':ObsidianLinks') -- vim.cmd("let g:mkdp_browser = 'surf'") vim.cmd("let g:mkdp_browser = 'firefox'") @@ -170,7 +191,7 @@ vim.keymap.set('n', "", ':HopWord') vim.keymap.set('n', '', ':HopChar1') -- [ Aerial ] -vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr }) -vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr }) +vim.keymap.set("n", "{", "AerialPrev", {}) +vim.keymap.set("n", "}", "AerialNext", {}) vim.keymap.set("n", "a", "Telescope aerial") -vim.keymap.set("n", "A", "AerialToggle!left") +vim.keymap.set("n", "A", function() require("aerial").toggle({ direction = "left" }) end) diff --git a/vim/lua/plugins/init.lua b/vim/lua/plugins/init.lua index f6fb013..2342d18 100644 --- a/vim/lua/plugins/init.lua +++ b/vim/lua/plugins/init.lua @@ -40,7 +40,7 @@ return { -- Add indentation guides even on blank lines 'lukas-reineke/indent-blankline.nvim', -- See `:help ibl` - enabled = false, + enabled = true, main = "ibl", opts = { indent = { char = "┊" }, @@ -173,13 +173,6 @@ return { { 'stevearc/aerial.nvim', opts = { - on_attach = function(bufnr) - -- Jump forwards/backwards with '{' and '}' - vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr }) - vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr }) - vim.keymap.set("n", "a", "Telescope aerial") - vim.keymap.set("n", "A", "AerialToggle!left") - end, }, -- Optional dependencies dependencies = { @@ -213,6 +206,7 @@ return { { "williamboman/mason.nvim", opts = { + automatically_installation = true, ensure_installed = { "lua-language-server", "stylua", "html-lsp", "css-lsp", "prettier" -- cgit v1.2.3-70-g09d2