aptpod Advent Calendar 2024 12æ24æ¥ã®èšäºãæ
åœããŸãã intdashã°ã«ãŒãã®å®®å
ã§ãã å
æ¥ãçè
ã®ã°ã«ãŒãå
ã§ãéçºç°å¢ã®ç޹ä»ããšããããŒãã§æèŠäº€æãè¡ããŸããã ã°ã«ãŒãå
ã§ã¯ãœãã/ããŒããšãã«ä»äººã®éçºç°å¢ã«èå³ããã人ãå€ãããã§ã ãšãŠãçãäžãããŸããã ãã ããã®éã«ãçè
ã¯Neovimã玹ä»ããã®ã§ãããæéã®éœåäžå
šç¶ç޹ä»ããããŸããã§ããã ä»åã¯ãã®å ŽãåããŠããã®æã®äžå®å
šççŒæãææãã¹ããé話äŒé¡çãªåœ¢ã§ã çè
ã®Neovimã«ã€ããŠç޹ä»ããŠãããããšæããŸãã ã¡ãªã¿ã«ãã°ã«ãŒãå
ã¯VSCode䜿ããå€ãã§ãã 察象èªè
çè
ã®éçºç°å¢ã«ã€ã㊠èšå®ã®ããŒã¹ ãã©ã°ã€ã³çŽ¹ä» ãã©ã°ã€ã³ç®¡ç lazy.nvim mason.nvim & mason-lspconfig mason-tool-installer.nvim ã³ãŒãã£ã³ã° nvim-cmp conform none-ls ThePrimeagen/refactoring.nvim Git gitsign git-blame.nvim diffview.nvim lazygit.nvim æ€çŽ¢çœ®æ telescope.nvim grug-far.nvim text-case.nvim ãã®ä» overseer.nvim toggleterm.nvim dashboard-nvim rest.nvim venn.nvim vim-table-mode render-markdown.nvim ãŸãšã 察象èªè
ããããNeovimãè§Šã£ãŠã¿ãããšæã£ãŠãã人 Neovimã®ããããã®ãã©ã°ã€ã³ãç¥ããã人 Neovimã£ãŠäžäœã©ããªããšãã§ããã®ãç¥ããã人 çè
ã®éçºç°å¢ã«ã€ã㊠Neovimã¯æ§ã
ãªããšãã§ããã®ã§ä»ã®ããŒã«ãšã®æ£²ã¿åãã¯ãšãŠãéèŠã§ãã ã§ãããããŸãNeovimãèªãåã«ãçè
ã®éçºç°å¢ã«ã€ããŠç°¡åã«ç޹ä»ããŸãã çè
ã¯intdashããã«ãŠã§ã¢éçºã®ãµãŒããŒãµã€ããæ
åœããŠããŸãã æ¥åå
ã§ã¯äžèšã®èšèªããã¡ã€ã«ãæ±ãããšãå€ãã§ãã Golangã®ãœãŒã¹ã³ãŒã Pythonã®ãœãŒã¹ã³ãŒã ïŒç°¡åãªïŒã·ã§ã«ã¹ã¯ãªãã yamlãã¡ã€ã«ïŒopenapi.yamlãcièšå®ãªã©ïŒ Dockeré¢é£ïŒDockerfileãcompose.yamlãªã©ïŒ ããŒã¯ããŠã³ ãŸãããšãã£ã¿ãå«ã次ã®ãããªç°å¢ã§éçºãè¡ã£ãŠããŸãã WeztermïŒç«¯æ«ãšãã¥ã¬ãŒã¿ãRust補ã§å®è¡ç°å¢ãéžã°ãªãã®ãæ°ã«å
¥ã£ãŠãããïŒ tmuxïŒã¿ãŒããã«ãã«ããã¬ã¯ãµãã¿ãŒããã«å
ã§è€æ°ã®ã»ãã·ã§ã³ã管çã§ãããïŒ Neovim zsh ããã«ãæ®æ®µã¯Macãã UbuntuãžSSHæ¥ç¶ããéçºæ¥åã¯åºæ¬çã«Ubuntuäžã§è¡ã£ãŠããŸãã Weztermã¯Macã«ã€ã³ã¹ããŒã«ããããšã¯ãã£ããšsshã§Ubuntuã®äžã«å
¥ã£ãŠåŒããããäœæ¥ããŠãã圢ã§ãã Weztermãéã sshã§Ubuntuãžå
¥ã tmuxã§ã»ãã·ã§ã³ãéãïŒéå»ã®ãã®ãããã°äœæ¥äžã®ã»ãã·ã§ã³ã«å
¥ãïŒ tmuxãã€ã³ãèšå®ãNeovimã§äœæ¥ æ¬åœã¯Neovim以å€ã«ãèªãããããšã¯ããã®ã§ããä»åã¯Neovimã«çµã£ãŠç޹ä»ããŸãã èšå®ã®ããŒã¹ Neovimã®å€§ããªé
åã®äžã€ã¯ããã®ã«ã¹ã¿ãã€ãºæ§ã®é«ãã«ãããŸããããããã®åé¢ãåæç¶æ
ã§ã¯æ©èœãå°ãªããå¹ççã«äœ¿ãå§ããã«ã¯èšå®ãå¿
èŠã§ãã ãã®èª²é¡ã解決ããããã«ãã¹ã¿ãŒã¿ãŒããããšããŠäœ¿ãããã³ãã¬ãŒãã倿°å
¬éãããŠããŸããäŸãã°ã以äžã®ãããªãã®ããããŸãã kickstart.nvim LazyVim NvChad AstroNvim LunarVim SpaceVim ããããç¹åŸŽãããã®ã§ãèªåã®å¥œã¿ã«åãããŠéžã¶ãšè¯ããšæããŸãã ã«ã¹ã¿ãã€ãºã¯ã©ã®ãã³ãã¬ãŒãã§ãå¯èœã§ãããçè
ã¯ãèšå®ãã»ã©ããèããèªç±åºŠãé«ãããšããçç±ã§kickstart.nvimãéžãã§ããŸãã kickstart.nvimã®éçšã«ã€ããŠã¯ãå
¬åŒã®README.mdã«èšèŒããããŸãããçè
ã¯ä»¥äžã®æé ã§ç®¡çããŠããŸãïŒ ãªããžããªã®ãã©ãŒã¯ èªåã®GitHubãªããžããªã«ãã©ãŒã¯ããã«ã¹ã¿ãã€ãºãéçšãè¡ããããããŠããŸãã dotfilesã§ã®ç®¡ç ãã©ãŒã¯ããkickstart.nvimãdotfilesãªããžããªå
ã§submoduleãšããŠç®¡çããŠããŸãã 宿çãªåæ ãã©ãŒã¯å
ã®ãªããžããªããææ°ã®å€æŽã宿çã«ããŒãžãããã³ãã¬ãŒããã¡ã³ããã³ã¹ããŠããŸãã 以äžã¯å
·äœçãªæé ã§ãã GitHub CLI ã䜿çšããæé ã§ããïŒ # æåã«kickstart.nvimããã©ãŒã¯ gh repo fork nvim-lua/kickstart.nvim # dotfilesãªããžããªã«submoduleãšããŠè¿œå cd /path/to/dotfiles git submodule add git@github.com:<ãŠãŒã¶ãŒå>/kickstart.nvim.git ./.config/nvim # ãã©ãŒã¯å
ã®ãªããžããªãšå®æçã«åæ gh repo sync <ãŠãŒã¶ãŒå>/kickstart.nvim ãã©ã°ã€ã³çŽ¹ä» çè
ã¯Neovimã®ãã©ã°ã€ã³ãçŸåš 101 å䜿çšããŠããŸãã æµç³ã«ãã¹ãŠã玹ä»ããããšã¯ã§ããªãã®ã§ãããã§ã¯ã¡ã€ã³ã«äœ¿çšããŠãããã©ã°ã€ã³ãšãã®èšå®ã«ã€ããŠãšãäžéšããããããã©ã°ã€ã³ã玹ä»ããŸãã ããããã«ããŽãªããšã«ç޹ä»ããŸãã ãã©ã°ã€ã³ç®¡ç lazy.nvim ãã©ã°ã€ã³ç®¡çããŒã«ã§ããçŸåšãNeovimã§ã®ãã©ã°ã€ã³ç®¡çã®ããã¡ã¯ãã¹ã¿ã³ããŒããšãªã£ãŠããæããããŸãã äŸãã°ããã©ã°ã€ã³ã®èªã¿èŸŒã¿ãå¿
èŠãªã¿ã€ãã³ã°ã«æé©åããããšã§ãèµ·åé床ãéãä¿ã€ããšãå¯èœã§ããèšå®ãç°¡åã§ãå€ãã®ãŠãŒã¶ãŒã«æ¯æãããŠããŸãã kickstart.nvimã«ãçµã¿èŸŒãŸããŠããã®ã§ãã®ãŸãŸäœ¿çšããŠããŸãã mason.nvim & mason-lspconfig LSPïŒLanguage Server ProtocolïŒãDAPïŒãããã°ïŒãFormatterãLinterã®ããŒã«ãç°¡åã«ç®¡çããããã®ãã©ã°ã€ã³ã§ãã MasonInstall ã³ãã³ãã䜿çšãããšãããŒã«ã ~/.local/share/nvim/mason/bin/ ã«ã€ã³ã¹ããŒã«ãããNeovimå
ã§äœ¿çšå¯èœã«ãªããŸãã 以äžã®ãã©ã°ã€ã³ãšé£æºãããšãããã«äŸ¿å©ã«äœ¿ããŸãã README.md ã«ããå
容ã§ããïŒ LSP : lspconfig & mason-lspconfig.nvim DAP : nvim-dap & nvim-dap-ui Linters : null-ls.nvim or nvim-lint Formatters : null-ls.nvim or formatter.nvim çè
ã®èšå®äŸã§ã¯ãFormatterãšã㊠conform.nvim ã䜿çšããLinterã«ã¯ none-ls.nvim ïŒ null-ls.nvim ã®ãã©ãŒã¯ïŒãæ¡çšããŠããŸãã mason-tool-installer.nvim ãã®ãã©ã°ã€ã³ã䜿çšãããšãæ°ããç°å¢ã§ãåçŸæ§ãæã£ãŠåãããŒã«ã»ãããã€ã³ã¹ããŒã«ã§ããŸãã kickstart.nvimã«ãé圢èšå®ãå«ãŸããŠãããããç°¡åã«å°å
¥ã§ããŸãã 以äžã¯Masonã§ã€ã³ã¹ããŒã«ããŠããããŒã«äžèЧãšããã®èšå®ã³ãŒãã§ãïŒ require ( 'mason' ).setup() -- Masonã§ã€ã³ã¹ããŒã«ããããŒã«ãæå® local ensure_installed = { 'stylua' , -- Luaã®ãã©ãŒããã¿ 'gopls' , -- Golangã®èšèªãµãŒã㌠'prettier' , -- JS/TSã®ãã©ãŒããã¿ 'pyright' , -- Pythonã®èšèªãµãŒã㌠-- çç¥ ... } require ( 'mason-tool-installer' ).setup { ensure_installed = ensure_installed } ã³ãŒãã£ã³ã° nvim-cmp nvim-cmp ã¯ãNeovimã§ã®ã³ãŒãè£å®ãæäŸãããã©ã°ã€ã³ã§ããã³ãŒãè£å®ç³»ã®ãã©ã°ã€ã³ã¯ããã€ããããŸããã nvim-cmp ã¯ãã®æ¡åŒµæ§ãšå®å®æ§ããå€ãã®ãŠãŒã¶ãŒã«æ¯æãããŠããŸãã çè
㯠kickstart.nvim ã®èšå®ã«å«ãŸããŠããããšãããããã®ãŸãŸ nvim-cmp ã䜿çšããŠããŸãã 以äžã¯ãçè
ã䜿çšããŠãã nvim-cmp ã®è£å®ãœãŒã¹äžèЧã§ããç¹ã«çãããã®ã¯ãããŸããããå¿
èŠãªè£å®ãç¶²çŸ
ããŠããŸãïŒ L3MON4D3/LuaSnip saadparwaiz1/cmp_luasnip hrsh7th/cmp-nvim-lsp hrsh7th/cmp-path hrsh7th/cmp-nvim-lsp hrsh7th/cmp-nvim-lsp-signature-help hrsh7th/cmp-buffer hrsh7th/cmp-path hrsh7th/cmp-cmdline hrsh7th/cmp-calc hrsh7th/cmp-emoji onsails/lspkind.nvim petertriho/cmp-git ä»ã«ã nvim-cmp ã®ãœãŒã¹ã¯ããããããã®ã§æ¢ããŠã¿ããšé¢çœãã§ãããã conform ãã©ãŒããã¿ã§ãã kickstart.nvim ã«çµã¿èŸŒãŸããŠãããã®ããã®ãŸãŸäœ¿çšããŠããŸãã ããã©ã«ãèšå®ã§ã¯ä¿åæã«èªåãã©ãŒããããæå¹ã«ãªã£ãŠããŸãããç¡å¹åããå Žåã¯èšå®ã倿Žããå¿
èŠããããŸãã Recipe command-to-toggle-format-on-save ã§ç޹ä»ãããŠããå
容ãåºæ¬ã« kickstartçšã«ã¯äžèšã®ããã«èªã¿æ¿ããŠèšå®ããŸãïŒ -- ãªãã·ã§ã³ opts = { format_on_save = function (bufnr) -- Disable with a global or buffer-local variable if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then return end - çç¥ end , } , -- config颿° config = function (_, opts) vim.api.nvim_create_user_command( 'FormatDisable' , function (args) if args.bang then -- FormatDisable! will disable formatting just for this buffer vim.b.disable_autoformat = true else vim.g.disable_autoformat = true end end , { desc = 'Disable autoformat-on-save' , bang = true , } ) vim.api.nvim_create_user_command( 'FormatEnable' , function () vim.b.disable_autoformat = false vim.g.disable_autoformat = false end , { desc = 'Re-enable autoformat-on-save' , } ) require ( 'conform' ).setup(opts) end none-ls none-ls.nvim 㯠null-ls.nvim ã®ãã©ãŒã¯ã§ã diagnostic, codeaction, formatting, completion, hover ã®èšå®ãå¯èœã§ãã ã§ãããLspã®èšå®ããã©ãŒããã¿ã®èšå®ãšéè€ãããã®ãããã®ã§ãçè
ã¯diagnosticãšcodeactionã®ã¿ã䜿çšããŠããŸãã ãŸããã€ã³ã¹ããŒã«ã«ã€ããŠã¯Masonãšçµ±åãããã©ã°ã€ã³ãããã®ã§ãããŸã掻çšã§ããŠããŸãããåãããŠäœ¿çšããŠããŸãã config = function () local null_ls = require 'null-ls' null_ls.setup { sources = { null_ls.builtins.diagnostics.golangci_lint, null_ls.builtins.diagnostics.hadolint, null_ls.builtins.diagnostics.rstcheck, null_ls.builtins.diagnostics.markdownlint.with { args = { '--stdin' , '-c' , vim.fn.expand '$HOME/.markdownlintrc' } , } , null_ls.builtins.diagnostics.sqlfluff.with { extra_args = { '--dialect' , 'postgres' } , -- change to your dialect } , require 'none-ls.diagnostics.ruff' , null_ls.builtins.code_actions.refactoring, null_ls.builtins.code_actions.gomodifytags, } , } require ( 'mason-null-ls' ).setup {} end ãªãã¡ã¬ã³ã¹ãšããŠã¯ã BUILTINS ããè¯ãåç
§ããã®ã§ç޹ä»ããŠãããŸãã ThePrimeagen/refactoring.nvim refactoring.nvim ã¯ãæ§ã
ãªãªãã¡ã¯ã¿ãªã³ã°æäœããµããŒãããNeovimçšãã©ã°ã€ã³ã§ãã颿°æœåºã倿°ãªããŒã ãšãã£ãäžè¬çãªãªãã¡ã¯ã¿ãªã³ã°ã«å ãããããã°ããªã³ãæ©èœãéåžžã«äŸ¿å©ã§ãã çè
ã¯ãç¹ã«ãããã°ããªã³ãã®æ¿å
¥ãšåé€ãããå©çšããŠããŸããäžèšã®èšå®äŸã§ã¯ãæ¬¡ã®æäœãç°¡åã«è¡ããŸãïŒ <leader>rp ïŒçŸåšè¡ã®äžã«ãããã°ããªã³ããæ¿å
¥ã <leader>rd ïŒéžæãã倿°ã®ãããã°ããªã³ããæ¿å
¥ã <leader>rc ïŒæ¿å
¥æžã¿ã®å
šãŠã®ãããã°ããªã³ããåé€ã 以äžã¯èšå®äŸã§ãïŒ vim.keymap.set( 'n' , '<leader>rp' , function () require ( 'refactoring' ).debug.printf { below = false } end ) vim.keymap.set( { 'x' , 'n' } , '<leader>rd' , function () require ( 'refactoring' ).debug.print_var() end ) vim.keymap.set( 'n' , '<leader>rc' , function () require ( 'refactoring' ).debug.cleanup {} end ) äŸãã°ã以äžã®ãããªã³ãŒãã«å¯Ÿã㊠a ããããã°ããªã³ãããŠã¿ãŸããïŒ func add(a int , b int ) int { return a + b } a ãéžæè¢ <leader>rd ãæŒããšã次ã®ãããªãããã°ããªã³ããæ¿å
¥ãããŸãïŒ func add(a int , b int ) int { // __AUTO_GENERATED_PRINT_VAR_START__ fmt.Println(fmt.Sprintf( "add a: %v" , a)) // __AUTO_GENERATED_PRINT_VAR_END__ return a + b } <leader>rp ã䜿ããšã次ã®ãããªãããã°ããªã³ããæ¿å
¥ãããŸãã func add(a int , b int ) int { // __AUTO_GENERATED_PRINTF_START__ fmt.Println( "add 1" ) // __AUTO_GENERATED_PRINTF_END__ return a + b } Git gitsign gitsign ã¯ãNeovimã§Gitã®å€æŽå
容ãèŠèŠçã«è¡šç€ºããæäœãè£å©ãããã©ã°ã€ã³ã§ãã ãã®ãã©ã°ã€ã³ã¯ kickstart.nvim ã«å«ãŸããŠãããããç¹å¥ãªèšå®ã¯äžèŠã§ãã kickstart.nvim ã§ã¯ ]c ãš [c ã§å€æŽç®æã®è¡ãæ¥ãå¯èœã§ã <Leader>h ã« hunk ãæäœããããŒãã€ã³ããèšå®ãããŠããŸãã çè
ã¯gitã®æäœèªäœã¯åŸè¿°ãã lazygit ã§è¡ãããšãå€ãã®ã§ãã¡ã€ã³ã§äœ¿ã£ãŠããã®ã¯ã倿Žç®æã®ç§»åã§ãã git-blame.nvim git-blame.nvim ã¯ãç¹å®ã®è¡ã誰ã«ãã£ãŠããã€å€æŽãããã®ãã衚瀺ãããã©ã°ã€ã³ã§ãã ãã®ãã©ã°ã€ã³ãæå¹ã«ãããšãçŸåšç·šéäžã®è¡ã«å€æŽå±¥æŽã衚瀺ãããã³ãŒãã¬ãã¥ãŒã倿Žçç±ã®ç¢ºèªã«åœ¹ç«ã¡ãŸãã æå¹ã«ãããšãäžèšã®ããã«Blameãã³ãŒãäžã«è¡šç€ºãããŸãã git-blameãè¡šç€ºäž å
¬åŒãªããžããªã®ã¹ã¯ãªãŒã³ã·ã§ãããåããããããããèå³ã®ããæ¹ã¯ãã¡ããã芧ãã ããïŒ å
¬åŒãªããžã㪠diffview.nvim ãœãŒã¹ã³ãŒãç·šéäžã«ãã®ãã¡ã€ã«ã®å±¥æŽãšããmainãã©ã³ããšã®å·®åãšãèŠãããšããããŸãããã ãããªãšãã«æŽ»èºããã®ããã®ãã©ã°ã€ã³ã§ãã ããŒãžããŒã«ãšããŠã䜿çšã§ããŸãã çè
ã¯ç¹ã«ç¹æ®ãªèšå®ãããŠãããããã©ã«ãã§äœ¿çšããŠããŸãã ããšã¯ããŒãžããŒã«ãšããŠäœ¿ãããšå€ãã®ãšãäžèšã®ã³ãã³ãã¯è¯ãå®è¡ããŸããïŒ :DiffviewOpen <æ¯èŒå
ãã©ã³ããªã©> :DiffviewOpen <æ¯èŒå
ãã©ã³ããªã©> -- % :DiffviewFileHistory ïŒçŸåšã®ãã¡ã€ã«ã®å€æŽå±¥æŽã衚瀺ã lazygit.nvim lazygit.nvim ã¯ãNeovimå
ã§ lazygit ã䜿çšã§ãããã©ã°ã€ã³ã§ãããã®ãã©ã°ã€ã³ãå°å
¥ããããšã§ãã¿ãŒããã«ã«åãæ¿ããããšãªãGitæäœãè¡ãããšãã§ããŸãã çè
ã¯ä»¥åã vim-fugitive ã NeoGit ãªã©ã䜿çšããŠããã®ã§ããããã·ã§ã«äžã§ã®æäœãšçµ±åãåºæ¥ãã ã·ã§ã«äžã§ã¯ lazygit ã䜿ãããããã®ãã©ã°ã€ã³ãéžã³ãŸãããæäœãçµ±äžã§ããç¹ãéåžžã«äŸ¿å©ã§ãã åŸè¿°ããŸãã toggleterm ã䜿çšããŠéãããšãã§ããããã§ããã©ã¡ãã§ããã»ã©å€§ããªå·®ã¯ãªããšæããŸãã lazygit ãããã¡ã€ã«ãç·šéããããã³ãããã¡ãã»ãŒãžãNeovimã§æžãã«ã¯ã以äžã®èšå®ã .bashrc ã«è¿œå ããŸãïŒ #### NVIM REMOTE if [ -n " $NVIM " ]; then alias nvim = nvr -cc split --remote-wait + ' set bufhidden=wipe ' fi if [ -n " $NVIM " ]; then export VISUAL =" nvr -cc split --remote-wait +'set bufhidden=wipe' " export EDITOR =" nvr -cc split --remote-wait +'set bufhidden=wipe' " else export VISUAL =" nvim " export EDITOR =" nvim " fi ãã®èšå®ã«ãããNeovimå
ã§ lazygit ã䜿çšããŠããã¡ã€ã«ç·šéãã³ãããã¡ãã»ãŒãžäœæãã·ãŒã ã¬ã¹ã«è¡ããŸãã lazygit ã®èšå®ã§ã¯ã以äžã远èšããŸãïŒ os : editPreset : "nvim-remote" ãã¡ãã®èšå®ãããã°ããã©ã°ã€ã³ã®READMEã®ãã¡ã€ã«ç·šéèšå®ã倿Žããå¿
èŠã¯ãªãïŒã¯ãïŒã§ãã ãã ããçè
ã®ç°å¢ã ãšäžèšã®äžå
·åã®çŸè±¡ã«ééããŠããŸããåè§ãé åãåºçŸããåé€ãã§ããªããªããŸãã çŸè±¡ã¯ã Blank window overriding code after opening lazygit.nvim on start screen #134 ã ã«è¿ãã§ãã ã³ã¡ã³ãã«ããå
容ãèªãã ã®ã§ããããŸãè§£æ¶ããããæéããããšãã«èª¿æŽããŠã¿ãããšæã£ãŠããŸãã æ€çŽ¢çœ®æ telescope.nvim telescope.nvim ã¯ãNeovimã§å¹ççã«ãã¡ã€ã«ãããã¹ãããããã¡ãGitå±¥æŽãªã©ãæ€çŽ¢ããããã®ãã¡ãžãŒãã¡ã€ã³ããŒãã©ã°ã€ã³ã§ãã çè
ã¯ä»¥å fzf ã®ãã©ã°ã€ã³ã䜿çšããŠããŸãããã telescope.nvim ã¯ä»çµã¿äžæ¡åŒµæ©èœãäœãããããä»ã®ãã©ã°ã€ã³ãšã®é£æºãè±å¯ãªããããã¡ãã«åãæ¿ããŸããã 以äžã¯çè
ã䜿ã£ãŠãã telescope.nvim ã®æ¡åŒµæ©èœã§ãïŒ åå 説æ telescope-all-recent.nvim find_files ã git_files ãªã©éåžžã®éžæãã£ã«ã¿ãŒã«å¯ŸããŠã¹ã³ã¢ãªã³ã°ãããé åºã§éžæã§ããããã«ãªããŸãã telescope-fzf-native.nvim fzfã®è¡šçŸãçµ±åãfzfãŠãŒã¶ãŒã«ã¯ç¹ã«äŸ¿å©ã§ãã telescope-live-grep-args.nvim live_grep ã«å¯ŸããŠãripgrepã®ãªãã·ã§ã³ãæå®ã§ããããã«ãªããŸãã telescope-recent-files æè¿éãããã¡ã€ã«é ã®ãã£ã«ã¿ãŒã§ãã ç¹ã« telescope-all-recent.nvim ã¯ã·ãŒã ã¬ã¹ã«çµ±åã§ããç¡æèã«æ©æµãåããããšãã§ããã®ã§å人çãªææ³ã§ããçãè¯ãããã«æããŸãã ããã¥ã¡ã³ãã«ãæžããŠãããŸãããæ¬¡ã®ããã«Telescopeã®ããŒãã€ã³ãã颿°ã§æå®ããå¿
èŠãããã®ã§ãã®ç¹ã¯æ³šæããŸãããã vim.keymap.set( 'n' , '<leader>sf' , function () require ( 'telescope.builtin' ).find_files() end , { desc = '[S]earch [F]iles' } ) grug-far.nvim æ€çŽ¢çœ®æã®ãã©ã°ã€ã³ã§ããäžæ¬çœ®æã§éå®ããŸãã 䌌ãæäœæã§ nvim-spectre ãšãããã©ã°ã€ã³ããããŸãã 奜ã¿ã§éžã¶ãšè¯ããšæããŸãããçè
ã¯nvim-spectreã®æ€çŽ¢ãã€ã³ã®æäœæã«ã©ãããŠããªããããšãã§ããã grug-far.nvim ã䜿çšããŠããŸãã 以åã¯Quickfixãšã quickfix-reflector.vim ããå©çšããŠçœ®æãè¡ã£ãŠããŸããããææ°ãå€ãããšãå°ãæ°ã«ãªãã ãã®ãã©ã°ã€ã³ã«èœã¡çããŸããã ããã©ã«ãèšå®ã§å¿«é©ã«äœ¿çšã§ããŸããããããã§ãã text-case.nvim text-case.nvim ã¯ãããã¹ããCamelCaseãSnakeCaseãªã©ã«å€æãã€ã€ããŸããããã®è³¢ã眮æãå¯èœã«ãããã©ã°ã€ã³ã§ãã äŸïŒ Subs /abc def/ghi jkl/ ãšã³ãã³ããå®è¡ãããšã AbcDef ãšãã£ãæååã GhiJkL ã«å€æããŸãã é¡äŒŒãã©ã°ã€ã³ãšã㊠tpope/vim-abolish ããããŸãããçè
ã¯çŸåšäž¡æ¹ã詊ããŠããŸãïŒ vim-abolish ã§ã¯è€æ°åœ¢ã®çœ®æãªã©ç¹æã®ã«ãŒã«ãæã£ãŠãããããçœ®ææ©èœãšããŠã¯ vim-abolish ã®ã»ããé«åºŠãªå°è±¡ã§ãã çè
ã¯ç¶æ³ã«å¿ããŠã©ã¡ãã䜿ããéžå®äžã§ãã ãã®ä» overseer.nvim overseer.nvim ã¯å€æ©èœãªã¿ã¹ã¯ã©ã³ããŒã§ããã«ãããã¹ããªã©ã®éçºå
ã®ã¿ã¹ã¯ãNeovimå
ã§ç®¡çã§ããŸãã çè
ã¯ä»¥åã vim-dispatch ã quickrun ãå©çšããŠããŸããããNeovimç°å¢ã«æé©ãªã¿ã¹ã¯ã©ã³ããŒãæ¢ããŠããäžã§ãã®ãã©ã°ã€ã³ãèŠã€ããŸããã ããã€ãã¿ã¹ã¯ãç»é²ããŠã¯ããŸãããããå°ãã«ãžã¥ã¢ã«ã«äœ¿çšã§ããããã«æéããããšãã«æ¡åŒµããããšæã£ãŠããŸãã å
¬åŒããã¥ã¡ã³ããå
å®ããŠããããã¥ãŒããªã¢ã«ãã¬ã·ããæäŸãããŠããŸãïŒ ãã¥ãŒããªã¢ã« ã¬ã·ãäžèЧ çè
㯠vim-dispatch ã® :Make ã¯ãã䜿ã£ãŠããã®ã§ããã®ã¬ã·ãããã£ãã®ã¯ãšãŠãå©ãããŸãããïŒ :Make similar to vim-dispatch toggleterm.nvim toggleterm.nvim ã¯ãNeovimå
ã§ã¿ãŒããã«ãŠã£ã³ããŠãç°¡åã«éããåãæ¿ããããéãããã§ãããã©ã°ã€ã³ã§ãã çè
ã¯æ®æ®µ tmux ã䜿ã£ãŠããŸããããtmuxãéãã»ã©ã§ã¯ãªãã¡ãã£ãšããæäœãã«ã¯ãã®ãã©ã°ã€ã³ãå©çšããŠããŸãã 以äžã¯çè
ã®èšå®äŸã§ããã¿ãŒããã«ã®è¡šç€ºã»é衚瀺ã <C-z> ã§åãæ¿ãã <leader>ld ã§ lazydocker ãèµ·åããŸãïŒ config = function () require ( 'toggleterm' ).setup { open_mapping = [[<C-z>]] , direction = 'horizontal' , size = 20 , } local lazydocker = require ( 'toggleterm.terminal' ).Terminal:new { cmd = 'lazydocker' , hidden = true , direction = 'float' , } function LazydockerToggle() lazydocker:toggle() end ... ä»ã®èšå® vim.api.nvim_set_keymap( 'n' , '<leader>ld' , '<cmd>lua LazydockerToggle()<CR>' , { noremap = true , silent = true } ) end tmux ãšã®æ£²ã¿åãã«ã€ããŠãçè
ã¯ä»¥äžã®ããã«äœ¿ãåããŠããŸãïŒ toggleterm.nvim ïŒåäžãããžã§ã¯ãå
ã§ã·ã§ã«æäœãããéã«äœ¿çšã tmux ïŒå¥ãããžã§ã¯ãã®æäœããé·æéã®ã¿ãŒããã«ã»ãã·ã§ã³ã管çããå Žåã«äœ¿çšã æ®æ®µã¯dockerã䜿ã£ãéçºãããŠããã®ã§ããã€ã§ããã£ãšã³ã³ããã®ç¶æ
ãèŠãããæäœã§ãããšããã®ã¯äœéšãšããŠãšãŠãå¿å°ããã§ãã dashboard-nvim Neovimèµ·åæã«è¡šç€ºãããããã·ã¥ããŒããã«ã¹ã¿ãã€ãºã§ãããã©ã°ã€ã³ã§ããçè
ã¯ãææ¥ããšã«å€ãããããŒãèšå®ããŠããŸãã çè
ã®ããã·ã¥ããŒã 以äžã¯çè
ãç»é²ããŠããã·ã§ãŒãã«ããã®èšå®äŸã§ãïŒ ããã·ã¥ããŒãäžã§åæã®æäœã®ã·ã§ãŒãã«ãããç°¡åã«ã§ãããããç¹ã«ãæåã«ããããšã決ãŸã£ãŠãã人ãã«ããããã§ãã çè
ã¯ã ãããæ±ºãŸã£ãŠããã®ã§äžèšãç»é²ããŠããŸãã config = function () require ( 'dashboard' ).setup { theme = 'hyper' , config = { week_header = { enable = true , } , project = { enable = false , } , shortcut = { { desc = 'Update' , group = '@property' , action = 'Lazy update' , key = 'u' } , { icon = '' , icon_hl = '@variable' , desc = 'Files' , group = 'Label' , action = 'Telescope git_files' , key = 'f' , } , { desc = 'Memo' , action = 'Telekasten' , key = 'm' , } , { desc = 'dotfiles' , action = 'e ~/dotfiles/README.md' , key = 'd' , } , } , } , } end rest.nvim rest.nvim ã¯ãNeovimå
ã§HTTPãªã¯ãšã¹ããå®è¡ã§ãããã©ã°ã€ã³ã§ãã çè
ã¯ä»¥å vim-rest-console ã䜿çšããŠããŸããããåºåãæŽåœ¢ãããªãåé¡ããã£ãããããã¡ãã«ç§»è¡ããŸããã ç¹åŸŽãšããŠã¯æ¬¡ã®ãããªãã®ãäžããããŸãïŒ ç°å¢å€æ°ãç°¡åã«åãæ¿ãå¯èœïŒ Telescope 飿ºïŒã JetBrainsã® HTTP Syntax ããµããŒãã å®å®ããæŽåœ¢ãå¯èœïŒ jq ã䜿çšïŒ ã³ãã³ãã¯ããã€ãçš®é¡ããããŸãããçè
ã¯äžèšã®çšã«ã·ã³ãã«ã«ã <C-o> ã§å®è¡ããããç°å¢å€æ°ã®å€æŽã¯Telescopeã§å®æœãã® ïŒã€ã ãã·ã§ãŒãã«ããèšå®ãããŠããŸããåºæ¬çã«ãã®ïŒã€ã®æ©èœãã䜿ã£ãŠããŸãããååæºè¶³ããŠããŸãã æŽåœ¢ã®ãªãã·ã§ã³ã ããå
¬åŒããå°ã远ãã¥ããã£ãã®ã§ãã¡ããåãããŠäŸãšããŠèšèŒããŠããŸãïŒ config = function () vim.api.nvim_create_autocmd( 'FileType' , { pattern = 'json' , callback = function () vim.bo.formatexpr = '' vim.bo.formatprg = 'jq' end , } ) vim.api.nvim_create_autocmd( 'FileType' , { pattern = 'http' , callback = function () vim.api.nvim_set_keymap( 'n' , '<Leader><C-o>' , ':Rest run<CR>' , { noremap = true , silent = true } ) -- first load extension require ( 'telescope' ).load_extension 'rest' -- then use it, you can also use the `:Telescope rest select_env` command vim.api.nvim_set_keymap( 'n' , '<leader>se' , ':Telescope rest select_env<CR>' , { noremap = true , silent = true , desc = '[S]earch select [E]nv' } ) end , } ) end venn.nvim ãšã³ãžãã¢ã®çããã¯å³ãæžãããšãå€ããšæããŸããããã¡ãã®ãã©ã°ã€ã³ã¯ASCIIã¢ãŒãã§ç°¡åã«å³ãäœæã§ãããã©ã°ã€ã³ã§ãã äžèšã®ããã«ç°¡æçãªããŒã¿ãããŒã衚çŸããéã«åœ¹ç«ã¡ãŸãã âââââââ âââââ âstartââââââââââââââââºâendâ âââââââ âââââ åºæ¬çãªæäœã®æµãã¯æ¬¡ã®ãšããã§ãïŒ :set ve=all ãšãã æåãæžã visualç©åœ¢éžæãªã©ã§éžæã :VBox<CR> å
¬åŒã®README.mdã«èšå®ã¯æžããŠãããããããã®ãŸãŸäœ¿ãããšãåºæ¥ãŸãã çè
ã¯è¥å¹²å€ããŠã¯ããŸããæ¬¡ã®ããã«ããŠããŸãã <CR> ã§ããã¯ã¹ãã§ããããã«ããŠããç¹ãæ°ã«å
¥ã£ãŠããŸããïŒ config = function () -- venn.nvim: enable or disable keymappings function _G .Toggle_venn() local venn_enabled = vim.inspect(vim.b.venn_enabled) if venn_enabled == 'nil' then vim.b.venn_enabled = true vim.cmd [[setlocal ve=all]] -- draw a line on HJKL keystokes vim.api.nvim_buf_set_keymap( 0 , 'n' , 'J' , '<C-v>j:VBox<CR>' , { noremap = true } ) vim.api.nvim_buf_set_keymap( 0 , 'n' , 'K' , '<C-v>k:VBox<CR>' , { noremap = true } ) vim.api.nvim_buf_set_keymap( 0 , 'n' , 'L' , '<C-v>l:VBox<CR>' , { noremap = true } ) vim.api.nvim_buf_set_keymap( 0 , 'n' , 'H' , '<C-v>h:VBox<CR>' , { noremap = true } ) -- draw a box by pressing "f" with visual selection vim.api.nvim_buf_set_keymap( 0 , 'v' , '<CR>' , ':VBox<CR>' , { noremap = true } ) print 'venn on' else vim.cmd [[setlocal ve=]] vim.api.nvim_buf_del_keymap( 0 , 'n' , 'J' ) vim.api.nvim_buf_del_keymap( 0 , 'n' , 'K' ) vim.api.nvim_buf_del_keymap( 0 , 'n' , 'L' ) vim.api.nvim_buf_del_keymap( 0 , 'n' , 'H' ) vim.api.nvim_buf_del_keymap( 0 , 'v' , '<CR>' ) vim.b.venn_enabled = nil print 'venn off' end end vim.api.nvim_set_keymap( 'n' , '<leader>tv' , ':lua Toggle_venn()<CR>' , { noremap = true } ) end vim-table-mode MarkdownãæžããŠãããšããã©ãããŠãèŸãã®ãè¡šãæžããšãã§ãã ãã®ãã©ã°ã€ã³ã䜿çšããããšã§ããŒã¯ããŠã³ã§èŸããªããã¡ãªããŒãã«ç·šéãæ¥œã«ããããšãåºæ¥ãŸãã ããã€ãæ©èœã¯ãããŸããããã©ãŒãããæ©èœã ãã§çè
ã¯ååã§ããã®ä»ã¯äœ¿çšããŠããŸããã | Column1 | Column2 | Column3 | | --------------- | --------------- | --------------- | | Item1.1 | Item2.1 | Item3.1 | | Item1.2 | Item2.2 | Item3.2 | | Item1.3 | Item2.3 | Item3.3 | | Item1.4 | Item2.4 | Item3.4 | :TableModeRealineãå®è¡ãããšäžèšã®ããã«ãªãã | Column1 | Column2 | Column3 | | --------------- | --------------- | --------------- | | Item1.1 | Item2.1 | Item3.1 | | Item1.2 | Item2.2 | Item3.2 | | Item1.3 | Item2.3 | Item3.3 | | Item1.4 | Item2.4 | Item3.4 | ãã©ãŒããããèªåã§é©å®è¡ã£ããããã®ä»ããŒãã«ç·šéã«ç¹åãããããŒãã«ç·šéã¢ãŒãã®åãæ¿ããããã®ã§ããã çè
㯠:TableModeRealine ã³ãã³ããé©å®å®è¡ããŠäœ¿çšããããšãå€ãã§ãã render-markdown.nvim render-markdown.nvim ã¯ãNeovimå
ã§Markdownãã¡ã€ã«ãèŠãããã¬ã³ããªã³ã°ãããã©ã°ã€ã³ã§ãã çè
㯠markdown-preview.nvim ã䜵çšããŠããŸããããNeovimå
ã§å®çµããããå Žé¢ãã§ã¯ãã¡ããäž»ã«äœ¿çšããŠããŸãã æåŸã«ç޹ä»ãã render-markdown.nvim ã¯ãNeovimå
ã§Markdownãã¡ã€ã«ãèŠãããã¬ã³ããªã³ã°ãããã©ã°ã€ã³ã§ãã è¯ã玹ä»ãããŠããã®ã¯ markdown-preview.nvim ããšæãã®ã§ããã çè
ã¯NeovimåŒããããæ°å³ãªã®ã§ãå€éšãã©ãŠã¶ã䜿ããã«ãã¬ãã¥ãŒã§ããªãããšãæ¢ããŠãããšããçºèŠããã®ããã¡ãã®ãã©ã°ã€ã³ã«ãªããŸãã CopilotChatã®ãã©ã°ã€ã³ã®è¡šç€ºã§ãé©çšå¯èœãªã®ãæ°ã«å
¥ã£ãŠããŸãã ãã¡ããããã©ãŠã¶ã§ç¢ºèªããããšããããã®ã§ markdown-preview.nvim ãããŸã«äœ¿ã£ãŠããŸãã ãŸãšã ç°å¢ãã«ã¹ã¿ãã€ãºããããšã§ãçç£æ§ãé£èºçã«åäžãããããšãã§ããŸãã ããããæ¬åœã«å€§äºãªã®ã¯ããå¹çåããŠäœãæãéãããã®ãããšããããšã ãšçè
ã¯æããŸãã äŸãã°ã以äžã®ãããªç®æšããããããããŸããïŒ å®¶æãè¶£å³ã®æéãå¢ããããã ã¯ãªãšã€ãã£ããªäœæ¥ã«ãã£ãšéäžãããã ããå€ãã®ææãçæéã§åºãããã ã©ã®ãããªç®æšã§ãããéçºç°å¢ãæŽç·Žãããããšã§ãæ¥ã
ã®ç¡é§ãªæéãåæžããæ¬åœã«éäžãã¹ãããšã«æéã䜿ãæå©ããšãªããŸãã ãã®èšäºãåèã«ããã²äžã€ã§ã䟿å©ãªããŒã«ãèšå®ãåãå
¥ããŠã¿ãŠãã ããã çè
ã¯å¹Žæ«å¹Žå§ã«ç°å¢ã®æ£åžããããã®ã§ãããã¡ããã©ä»ãè¯ãã¿ã€ãã³ã°ã§ã¯ãªãã§ããããïŒ ãããŠãããå
å®ãããšã³ãžãã¢ã©ã€ããéããããã«é 匵ããŸãããïŒ ç§ãã¡ã®ããŒã ã§ã¯ãNeovim奜ããªãšã³ãžãã¢ãåéäžã§ããèå³ã®ããæ¹ãç§ãã¡ãšäžç·ã«åããŸãããïŒ ãã²ãé£çµ¡ããåŸ
ã¡ããŠããŸãïŒ æ¡çšããŒãž ææ¥ã¯ã¢ããã³ãã«ã¬ã³ããŒæçµæ¥ã§ããæ¯å¹ŽæäŸã®CTO梶ç°ããã®èšäºããæ¥œãã¿ã«ïŒ