From b95f0341b61e010698b59487e73bf5d9eb01f017 Mon Sep 17 00:00:00 2001 From: Alan Weng Date: Sat, 1 Nov 2025 13:30:43 -0400 Subject: [PATCH] Update Neovim configuration options and keymaps --- init.lua | 122 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 86 insertions(+), 36 deletions(-) diff --git a/init.lua b/init.lua index b98ffc61..0e8154b2 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,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` @@ -102,7 +102,7 @@ vim.g.have_nerd_font = false vim.o.number = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! --- vim.o.relativenumber = true +vim.o.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example! vim.o.mouse = 'a' @@ -151,12 +151,14 @@ vim.o.splitbelow = true -- and `:help lua-options-guide` vim.o.list = true vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } +vim.opt['tabstop'] = 2 +vim.opt['shiftwidth'] = 2 -- Preview substitutions live, as you type! vim.o.inccommand = 'split' -- Show which line your cursor is on -vim.o.cursorline = true +vim.o.cursorline = false -- Minimal number of screen lines to keep above and below the cursor. vim.o.scrolloff = 10 @@ -194,16 +196,23 @@ vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' } -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands -vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) -vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) + +vim.keymap.set('n', '', 'zz') +vim.keymap.set('n', '', 'zz') + +-- Window navigation with h/j/k/l +vim.keymap.set('n', 'h', 'h', { desc = 'Move to left split' }) +vim.keymap.set('n', 'j', 'j', { desc = 'Move to below split' }) +vim.keymap.set('n', 'k', 'k', { desc = 'Move to above split' }) +vim.keymap.set('n', 'l', 'l', { desc = 'Move to right split' }) -- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes -- vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) -- vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) -- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) -- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) +-- +-- -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` @@ -247,15 +256,14 @@ rtp:prepend(lazypath) -- NOTE: Here is where you install your plugins. require('lazy').setup({ -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). - 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically - - -- NOTE: Plugins can also be added by using a table, - -- with the first argument being the link and the following - -- keys can be used to configure plugin behavior/loading/etc. - -- - -- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded. - -- + require 'kickstart.plugins.debug', + require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.lint', + require 'kickstart.plugins.autopairs', + require 'kickstart.plugins.neo-tree', + require 'kickstart.plugins.gitsigns', + -- adds gitsigns recommend keymaps -- Alternatively, use `config = function() ... end` for full control over the configuration. -- If you prefer to call `setup` explicitly, use: -- { @@ -307,7 +315,7 @@ require('lazy').setup({ delay = 0, icons = { -- set icon mappings to true if you have a Nerd Font - mappings = vim.g.have_nerd_font, + mappings = false, -- If you are using a Nerd Font: set icons.keys to an empty table which will use the -- default which-key.nvim defined Nerd Font icons, otherwise define a string table keys = vim.g.have_nerd_font and {} or { @@ -413,12 +421,28 @@ require('lazy').setup({ -- }, -- }, -- pickers = {} + defaults = { + file_ignore_patterns = { 'node_modules/' }, + }, extensions = { ['ui-select'] = { require('telescope.themes').get_dropdown(), }, }, } + require('neo-tree').setup { + filesystem = { + filtered_items = { + visible = true, + hide_dotfiles = false, + hide_gitignored = false, + }, + }, + window = { + width = 30, + }, + vim.keymap.set('n', 'e', 'Neotree toggle'), + } -- Enable Telescope extensions if they are installed pcall(require('telescope').load_extension, 'fzf') @@ -428,14 +452,14 @@ require('lazy').setup({ local builtin = require 'telescope.builtin' vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) - vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) + -- vim.keymap.set('n', 'k', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) + vim.keymap.set('n', '', builtin.find_files, { desc = '[S]earch [F]iles' }) -- Slightly advanced example of overriding default behavior and theme vim.keymap.set('n', '/', function() @@ -553,7 +577,7 @@ require('lazy').setup({ -- Jump to the definition of the word under your cursor. -- This is where a variable was first declared, or where a function is defined, etc. -- To jump back, press . - map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') -- WARN: This is not Goto Definition, this is Goto Declaration. -- For example, in C this would take you to the header. @@ -681,8 +705,6 @@ require('lazy').setup({ -- https://github.com/pmizio/typescript-tools.nvim -- -- But for many setups, the LSP (`ts_ls`) will work just fine - -- ts_ls = {}, - -- lua_ls = { -- cmd = { ... }, @@ -716,6 +738,7 @@ require('lazy').setup({ local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code + 'prettierd', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } @@ -736,6 +759,20 @@ require('lazy').setup({ end, }, + { -- Typescript / React + 'pmizio/typescript-tools.nvim', + dependencies = { 'nvim-lua/plenary.nvim', 'neovim/nvim-lspconfig' }, + opts = { + settings = { + tsserver_file_preferences = { + includeCompletionsForModuleExports = true, + includeCompletionsWithInsertText = true, + jsxAttributeCompletionStyle = 'auto', + }, + }, + }, + }, + { -- Autoformat 'stevearc/conform.nvim', event = { 'BufWritePre' }, @@ -761,18 +798,20 @@ require('lazy').setup({ return nil else return { - timeout_ms = 500, + timeout_ms = 1000, lsp_format = 'fallback', } end end, formatters_by_ft = { lua = { 'stylua' }, - -- Conform can also run multiple formatters sequentially - -- python = { "isort", "black" }, - -- - -- You can use 'stop_after_first' to run the first available formatter from the list - -- javascript = { "prettierd", "prettier", stop_after_first = true }, + javascript = { 'prettierd' }, + javascriptreact = { 'prettierd' }, + typescript = { 'prettierd' }, + typescriptreact = { 'prettierd' }, + css = { 'prettierd' }, + html = { 'prettierd' }, + json = { 'prettierd' }, }, }, }, @@ -886,6 +925,7 @@ require('lazy').setup({ config = function() ---@diagnostic disable-next-line: missing-fields require('tokyonight').setup { + transparent = 'true', styles = { comments = { italic = false }, -- Disable italics in comments }, @@ -894,7 +934,7 @@ 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 'tokyonight-storm' end, }, @@ -944,7 +984,23 @@ require('lazy').setup({ main = 'nvim-treesitter.configs', -- Sets main module to use for opts -- [[ Configure Treesitter ]] See `:help nvim-treesitter` opts = { - ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, + ensure_installed = { + 'bash', + 'c', + 'diff', + 'html', + 'lua', + 'luadoc', + 'markdown', + 'markdown_inline', + 'query', + 'vim', + 'vimdoc', + 'typescript', + 'css', + 'javascript', + 'tsx', + }, -- Autoinstall languages that are not installed auto_install = true, highlight = { @@ -973,12 +1029,6 @@ require('lazy').setup({ -- Here are some example plugins that I've included in the Kickstart repository. -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- - -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', - -- require 'kickstart.plugins.lint', - -- require 'kickstart.plugins.autopairs', - -- require 'kickstart.plugins.neo-tree', - -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- This is the easiest way to modularize your config. @@ -1013,4 +1063,4 @@ require('lazy').setup({ }) -- The line beneath this is called `modeline`. See `:help modeline` --- vim: ts=2 sts=2 sw=2 et +-- vim ts=2 sts=2 sw=2 et