## 経緯 [[📜2023-03 VimからNeovimに移行してみた]]ついでにプラグイン周りを整理していたら、[[packer.nvim]]使った方が設定が楽そうなので。 ## インストール 公式を参考に[[Windows 11]] x [[PowerShell]]でインストール。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">GitHub - wbthomason/packer.nvim</p> </div> <div class="link-card-description"> A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependenci... </div> </div> <img src="https://opengraph.githubassets.com/a78e3f2c061f4b65f4594cdd51ca7784f191ecb70f6fecd7f8be1afd38e79ac3/wbthomason/packer.nvim" class="link-card-image" /> </div> <a href="https://github.com/wbthomason/packer.nvim"></a> </div> ```console git clone https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA\nvim-data\site\pack\packer\start\packer.nvim" ``` ## [[vim-plug]]の設定をバックアップ ``` -------------------------------------------------------- -- vim-plug -------------------------------------------------------- local Plug = vim.fn['plug#'] vim.call('plug#begin') -- VSCode like Plug('neoclide/coc.nvim', {branch = 'release'}) local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false} -- 定義に移動 key('n', '<C-]>', '<Plug>(coc-definition)', {silent = true}) -- 呼び出し元に移動 key('n', '<C-j>h', '<Plug>(coc-references)', {silent = true}) -- 実装に移動 key('n', '<C-j>i', '<Plug>(coc-implementation)', {silent = true}) -- 配下の定義を表示 key('n', '<M-s>', ':call CocActionAsync(\'doHover\')<CR>', {silent = true, noremap = true}) key('i', '<C-P>', '<C-\\><C-O>:call CocActionAsync(\'showSignatureHelp\')<CR>', {silent = true}) -- 前後のエラーや警告に移動 key('n', '<M-k>', '<Plug>(coc-diagnostic-prev)', {silent = true}) key('n', '<M-j>', '<Plug>(coc-diagnostic-next)', {silent = true}) -- Enterキーで決定 key("i", "<cr>", [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]], opts) -- code action key('n', '<M-CR>', '<Plug>(coc-codeaction-cursor)', {silent = true}) -- Find symbol of current document key('n', '<C-j>o', ':<C-u>CocList outline<cr>', {silent = true, nowait = true}) -- Search workspace symbols key('n', '<C-j>s', ':<C-u>CocList -I symbols<cr>', {silent = true, nowait = true}) -- Rename key('n', '<S-M-r>', '<Plug>(coc-rename)') -- yank範囲のハイライト Plug 'machakann/vim-highlightedyank' vim.g.highlightedyank_highlight_duration = 300 -- ★global -- 囲まれているものの操作 Plug 'machakann/vim-sandwich' -- ブラックホールレジスト+putの省略 Plug 'vim-scripts/ReplaceWithRegister' key('n', '_', '<Plug>ReplaceWithRegisterOperator') -- 全体が範囲のtext-object Plug 'kana/vim-textobj-user' Plug 'kana/vim-textobj-entire' -- コメント化 Plug 'tpope/vim-commentary' -- CamelCaseMotion Plug 'bkad/CamelCaseMotion' vim.g.camelcasemotion_key = ']' -- 画面内瞬間移動 Plug 'easymotion/vim-easymotion' key('n', 's', '<Plug>(easymotion-overwin-f2)') vim.g.EasyMotion_do_mapping = 0 vim.g.EasyMotion_smartcase = 1 -- Theme Plug 'morhetz/gruvbox' -- マルチカーソル Plug 'mg979/vim-visual-multi' vim.api.nvim_command('let g:VM_maps = {}') vim.api.nvim_command("let g:VM_maps['Find Under'] = '<C-k>'") vim.api.nvim_command("let g:VM_maps['Find Subword Under'] = '<C-k>'") -- ステータスLine Plug 'itchyny/lightline.vim' vim.g.lightline = { colorscheme = 'jellybeans' } -- " Fern Plug 'lambdalisue/fern.vim' key('n', '<C-j>w', ':Fern %:h -drawer -width=50<cr>', { noremap = true }) Plug 'lambdalisue/nerdfont.vim' Plug 'lambdalisue/glyph-palette.vim' vim.cmd([[ augroup my-glyph-palette autocmd! * autocmd FileType fern call glyph_palette#apply() autocmd FileType nerdtree,startify call glyph_palette#apply() augroup END ]]) Plug 'lambdalisue/fern-renderer-nerdfont.vim' vim.g['fern#renderer'] = "nerdfont" Plug 'lambdalisue/fern-git-status.vim' -- mark Plug 'kshenoy/vim-signature' -- telescope Plug 'nvim-lua/plenary.nvim' Plug('nvim-telescope/telescope.nvim', { tag = '0.1.1' }) Plug 'kkharji/sqlite.lua' Plug 'nvim-telescope/telescope-frecency.nvim' -- barbar Plug 'nvim-tree/nvim-web-devicons' Plug 'romgrk/barbar.nvim' vim.call('plug#end') ``` ## 設定の移行 - ロードした後の処理は`config`に - ロードする前の処理は`setup`に - keyの設定は[[packer.nvim]]の設定とは別にする - 設定変更したら `:PackerSync` しておけばOK - `:PackerCompile`と`:PackerUpdate`を実行してくれる - 実行前には **[[Neovim]]の再起動** が必要。 ## 新たに導入したプラグイン - [[lualine.nvim]] - [[sidebar.nvim]] - [[gitsigns.nvim]] - [[hop.nvim]] ## ハマったところ - [[📝packer.nvimのコマンドを実行すると『Removing the following directories. OK?』のconfirmが出る]] - [[📝packer.nvimの設定、具体的にはsetupやconfigを変更しても反映されない]]