lua でファイル管理したいなぁ…という気分になったので乗り換えることにしました。今のところそんなに違いは感じてないです
(まだ書き換えてる途中なので以下の記述はミスってるかもしれないです)
migration guide
そもそも、 packer.nvim でインストールする方法が書いてあるプラグインが多いので、まず GitHub リポジトリをみましょう。 dein.vim についてはインストール方法書いてないのに packer.nvim はあるとか結構あります。
次に、Lua-guide - Neovim docs を読みましょう。neovim 公式が lua の書き方を解説していてわかりやすいです。日本語資料もあります。この2つを読めば大体かけます。
それでも足りなかった時用に、以下に tips をまとめます
- hook_add は setup に置き換える
- hook_source は config に置き換える
- nnoremap は
vim.keymap.set('n', 'key', 'command')
に変える let g:hoge =
はvim.g.hoge =
に直す- どうしようもない場合は
vim.cmd [[ let g:hoge = xxx ]]
でいける(他の場合も最悪vim.cmd [[ ]]
で囲めば OK)
- どうしようもない場合は
- nmap は vim.keymap.set の第四引数に
{remap = true}
を渡す以外は nnoremap と同じ - on_cmd は cmd に直す
- on_event は event に直す
たとえば deinlazy.toml にこう書いてあったとする
[[plugins]] repo = 'nvim-telescope/telescope.nvim' on_cmd = ['Telescope'] hook_add = ''' nnoremap <leader>ff <cmd>Telescope find_files<cr> nnoremap <leader>fg <cmd>Telescope live_grep<cr> nnoremap <leader>fb <cmd>Telescope buffers<cr> nnoremap <leader>; <cmd>Telescope resume<cr> ''' lua_source = ''' require'telescope'.setup({ defaults = { mappings = { n = { q = "close", }, }, }, }) '''
これはこうなる
return require('packer').startup(function(use) use { 'nvim-telescope/telescope.nvim', cmd = {'Telescope'}, setup = function() vim.keymap.set('n', '<leader>ff', ':<C-u>Telescope find_files<CR>') vim.keymap.set('n', '<leader>fg', ':<C-u>Telescope live_grep<CR>') vim.keymap.set('n', '<leader>fb', ':<C-u>Telescope buffers<CR>') vim.keymap.set('n', '<leader>;', ':<C-u>Telescope resume<CR>') end, config = function() require'telescope'.setup{ defaults = { mappings = { n = { q = "close", }, }, }, } end, } end)
lua としてそのままシンタックスハイライトとか使えるようになるので便利 (多分 toml の中の lua をシンタックスハイライトつける方法もあると思うんですが、やっぱ lua は lua ファイルに書いたほうが便利だと思う)