init.lua を作る
Neovimの設定はinit.vimでも問題なく動くけども、vimscriptではなくluaを使って記載するinit.luaで作成するようになってます。
自分のホーム(windowsではc:\Users[ユーザー名])に.configフォルダを作成し、その中にnvimフォルダ、さらにluaフォルダを作成。
.config └─nvim ├─init.lua └─lua(フォルダ)
それからnvimでinit.luaを作成する。
require('001_core') require('002_keymap') require('plugins')
通常init.luaに大量に書き込むんだけど、役割を分けて管理することに。
init.luaは呼び込むファイルの記載。それぞれinit.luaと同じ階層にあるluaフォルダ内にあるファイルを読み込んでという指示。 luaにある3つのファイルを指定してる。
luaフォルダには設定ファイルを作っていく。
こんな状態
├─lua │ 001_core.lua │ 002_keymap.lua │ plugins.lua
001_core.luaには基本設定
-- 表示 -- -番号表示 vim.opt.number = true -- -特殊文字表示 vim.opt.list = true vim.opt.listchars = {tab='>-', trail='*', nbsp='+'} -- -エラー時の音を画面表示に vim.opt.visualbell = true -- -括弧の連携 vim.opt.showmatch = true vim.opt.matchtime = 1 -- -ヘルプファイル vim.opt.helplang = 'ja', 'en' -- -tabバーの表示 vim.opt.showtabline = 2 -- 入力時 -- -インデントをC言語風に vim.opt.smartindent = true -- -タブ文字 vim.opt.expandtab = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 -- 検索 -- -大文字無視 vim.opt.ignorecase = true -- -大文字で検索したら区別をつける vim.opt.smartcase = true -- -検索が末尾までいったら先頭から検索 vim.opt.wrapscan = true -- カーソル移動 -- - 行を跨いでの移動 vim.opt.whichwrap = 'b', 's', 'h', 'l', '<', '>', '[', ']' -- - 削除時の対象 vim.opt.backspace = 'start', 'eol', 'indent' -- ファイル環境 -- -フォーマット vim.opt.fileformats = 'dos', 'unix', 'mac' -- クリップボード連携 vim.opt.clipboard:append({unnamedeplus = true}) -- マウス有効 vim.opt.mouse = 'a'
002_keymap.luaにはキーマップ関連
-- vim.keymap.set(mode, lhs, rhs, options) -- set s key to Window moving. vim.keymap.set('n', 's', '<NOP>') -- set s+hjkl move to other window vim.keymap.set('n', 'sj', '<C-w>j') vim.keymap.set('n', 'sk', '<C-w>k') vim.keymap.set('n', 'sl', '<C-w>l') vim.keymap.set('n', 'sh', '<C-w>h') -- set s+sv separate window vim.keymap.set('n', 'ss', '<C-w>s') vim.keymap.set('n', 'sv', '<C-w>v') -- set s+nptT move tab vim.keymap.set('n', 'sn', 'gt') vim.keymap.set('n', 'sp', 'gT') vim.keymap.set('n', 'st', ':<C-u>tabnew<CR>') -- set s+qQ kill buffer or close window vim.keymap.set('n', 'sq', ':<C-u>q<CR>') vim.keymap.set('n', 'sb', ':<C-u>bd!<CR>') -- set ESC+ESC Clear Search hilight vim.keymap.set('n', '<ESC><ESC>', ':<C-u>set nohlsearch!<CR>')
調べていると、luaをつかったkeymapの設定には vim.api.nvim_set_keymap を使うパターンと vim.keymap.set を使うパターンがある。
vim.api.nvim_set_keymapはnvimが0.5のころに作られたものでいまはvim.keymap.setを使うとのこと。 ・参考 [noob] vim.keymap.set vs. vim.api.nvim_set_keymap. Key binding questions. Hydra? : neovim
feat(lua): add vim.keymap · neovim/neovim@6d41f65 · GitHub
plugins.luaにはパッケージ管理を記載していく
これは次の記事に。