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にはパッケージ管理を記載していく

これは次の記事に。