ITエンジニアによるITエンジニアのためのブログ

Neovimの設定方法

この記事では、デフォルト状態のneovimをluaでカスタマイズする方法を解説します。

nvimのバイナリーをインストールしていることが前提ですので、もし未インストールの場合はsnapなどで先にインストールしておくと実際に動作を確認できるので理解しやすいかと思います。

ディレクトリー設定

まずはnvim用の設定ディレクトリーをホームディレクトリ−の.config下に作成します。

mkdir ~/.config/nvim
cd ~/.config/nvim

次にinit.luaを作成します。これはneovimのエントリーポイントのファイルで、neovimは起動時にこのファイルを探して中に含まれているluaコードを実行します。

touch init.lua

luaコードを整理するため、別途luaディレクトリーを作成し、init.lua以外のluaファイルを全てこの中で管理するようにします。

mkdir lua
cd lua

さらに、別々のプラグインの設定ファイルを格納するためのディレクトリーを作成しておきます。名前は何でも良いですが、ここではuserとします。

mkdir user
cd user

カスタム設定記載ファイルの作成

ディレクトリー設定が整ったので、neovim設定をluaで記述するためのファイルを作成します。

touch options.lua

このファイルが今回の記事の目玉で、このファイルにカスタマイズ設定をluaで記載していきます。以下が記載例です。

-- :help options
vim.opt.backup = false
vim.opt.clipboard = "unnamedplus"
vim.opt.cmdheight = 2
vim.opt.completeopt = { "menuone", "noselect" }
vim.opt.conceallevel = 0
vim.opt.fileencoding = "utf-8"
vim.opt.hlsearch = true
vim.opt.ignorecase = true
vim.opt.mouse = "a"
vim.opt.pumheight = 10
vim.opt.showmode = false
vim.opt.showtabline = 2
vim.opt.smartcase = true
vim.opt.smartindent = true
vim.opt.splitbelow = true
vim.opt.splitright = true
vim.opt.swapfile = false
-- vim.opt.termguicolors = true
vim.opt.timeoutlen = 1000
vim.opt.undofile = true
vim.opt.updatetime = 300
vim.opt.writebackup = false
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.cursorline = true
vim.opt.number = true
vim.opt.relativenumber = false
vim.opt.numberwidth = 4
vim.opt.signcolumn = "yes"
vim.opt.wrap = false
vim.opt.scrolloff = 8
vim.opt.sidescrolloff = 8
vim.opt.guifont = "monospace:h17"

vim.opt.shortmess:append "c"

vim.cmd "set whichwrap+=<,>,[,],h,l"
vim.cmd [[set iskeyword+=-]]
vim.cmd [[set formatoptions-=cro]]
  • どのような設定項目があるかは、neovim内で:help optionsで見ることが出来ます。
  • vimを元々使っていてneovimに移行を検討している方は、まずはvimと同じ設定をすると判断に迷うことなく進めると思います。
  • あえて設定しなくてもneovimで既にデフォルト設定となっているものもありますが、いちいちデフォルト設定を確認するのは大変ですし、将来的に変更することもありますので、明示的に設定しておくことをおすすめします。
  • もし設定をコメントアウトしたい場合は、冒頭に–を付けます。
  • オプションはvim.opt.~の形式で記述します。例えば、tabの代わりにスペースを挿入したい場合、vim.opt.tabstop = 2 となります。
  • このファイルの中にはvimコマンドをvim.cmd “” の形で文字列として記述できます。例えばvim.cmd “set autoindent”と記載すれば、vimスクリプトとして実行されます。これは、vimスクリプトでの設定は知っているが、luaでの設定方法がわからない場合に便利です。

設定ファイルの読み込み

options.luaファイルの存在を、neovimにどのように知らせて読み込ませるかですが、これは前述のinit.luaファイルに記載します。

require “user.options”

上記のように、複数のディレクトリ名をドットで繋ぎ、最後にファイル名を記載します。

もっと明示的に記載するなら、require “lua.user.options.lua”という書き方になりますが、luaディレクトリーと.luaのファイル拡張子は暗示的にあるものとして扱われるので記載は任意です。

将来的に別のプラグインをインストールしてカスタム設定をする場合も同様にこのファイルでrequireを使うことになりますので、init.luaは多数のrequireで構成されることになります。

以上で設定は完了です。

最終的なディレクトリー構成は以下のようになります。

treeコマンドを~/.config/nvim内で実行した場合のアウトプット。

├── init.lua
└── lua
    └── user
        └── options.lua

これでneovimを起動時に、luaで記載されたカスタム設定が読み込まれるようになります。vimscriptではなくluaで設定を記載出来るのはneovimを使う利点の一つなので、ぜひ試してみて下さい。