[[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)
Not found
This page does not exist