[[init.vim]]から[[init.lua]]へ移行する記録。 ## 主な対応 ### setの置き換え | [[init.vim]] | [[init.lua]] | | ------------- | -------------------- | | :set xxx | vim.opt.xxx = true | | :set xxx=hoge | vim.opt.xxx = 'hoge' | | :set xxx=999 | vim.opt.xxx = 999 | `vim.opt`は長いので以下のように束縛した`set`を使うのがオススメ。 ```lua local set = vim.opt ``` `:set xxx`と`set.xxx = true`なので表記も似てて置き換えやすい。 ### keymapの置き換え | [[init.vim]] | [[init.lua]] | | ------------------ | --------------------------------------- | | nmap キー コマンド | vim.keymap.set('n', 'キー', 'コマンド') | | imap キー コマンド | vim.keymap.set('i', 'キー', 'コマンド') | | vmap キー コマンド | vim.keymap.set('v', 'キー', 'コマンド') | 基本はこの置き換え。以下のケースでは`vim.keymap.set`の第4引数にオプションを指定する。 - noremapの場合 ([[(nnoremap,]] [[inoremap]], [[vnoremap]]) - [[silent (Vim)|<silent>]]、[[expr (Vim)|<expr>]]、[[nowait (Vim)|<nowait>]] などがついている 具体的には以下のような感じ。 ```lua vim.keymap.set('n', '<M-s>', ':call CocActionAsync(\'doHover\')<CR>', {silent = true, noremap = true}) vim.keymap.set('n', '<C-j>o', ':<C-u>CocList outline<cr>', {silent = true, nowait = true}) ``` ### グローバル変数?の置き換え | [[init.vim]] | [[init.lua]] | | ----------------------- | ----------------------- | | let g:hogehoge = "huga" | vim.g.hogehoge = "huga" | ### callの置き換え | [[init.vim]] | [[init.lua]] | | ---------------- | --------------------- | | call hoge#huga() | vim.call('hoge#huga') | ### [[vim-plug]]のPlugコマンド置き換え ```lua local Plug = vim.fn['plug#'] ``` と束縛した上で | [[init.vim]] | [[init.lua]] | | ---------------------------------- | ---------------------------------- | | Plug 'hoge/huga' | Plug 'hoge/huga' | | Plug 'hoge/huga', {'key': 'value'} | Plug('hoge/huga', {key = 'value'}) | 第1引数のみなら全く同じ書き方にできる。 ### [[init.vim]]のコマンドをそのまま使う どうしてもそのまま使う必要があったり、代替設定が分からない場合。 | [[init.vim]] | [[init.lua]] | | ------------ | ------------------- | | コマンド | vim.cmd("コマンド") | たとえば `let g:hoge = 'huga'` なら以下のようになる。 ```lua vim.cmd("let g:hoge = 'huga'") ``` [[augroup]]コマンドも[[Lua]]表記に対応していないので以下のようにする。 ```lua -- 最後に開いていた行を開く vim.cmd([[ augroup vimrcEx au BufRead * if line("'\"") > 0 && line("'\"") <= line("quot;) | exe "normal g`\"" | endif augroup END ]]) ``` ## 参考 - [Neovim: using vim\-plug in lua \- DEV Community](https://dev.to/vonheikemen/neovim-using-vim-plug-in-lua-3oom) - [init\.luaでNeovimの設定を書いてみた \- Qiita](https://qiita.com/msattova/items/c38ae4100f5123864a26) - [nvim\-lua\-guide\-ja/README\.ja\.md at master · willelz/nvim\-lua\-guide\-ja · GitHub](https://github.com/willelz/nvim-lua-guide-ja/blob/master/README.ja.md)