rafi-vim-config
vimというよりはneovimの話になる。
rafi/vim-config vim用のconfigのレポジトリ
個人というよりContributorsが多数いる非常に多機能なneovimの設定を目指したレポジトリ。
rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim.
- エラーメッセージが出ている状態だと非常にもっさりする
- 初回インストール時に大量のプラグインがインストールされる(好みが分かれそうなポイント)
インストール
~/.config/nvim 配下になるようにgit cloneすれば良い。 私はghqを使っているので
ghq get https://github.com/rafi/vim-config.git
cd ~/.config/
ln -s ~/workspace/git/github.com/rafi/vim-config ./nvim
コンテナ上での注意点
初回起動時、大量のプラグインのインストールが発生する。 またmacOS上のdocker環境のnvimでrafi/vim-configを使った場合、画面表示が非常に崩れた。それもあって動作がもっさりしている。 Linux上で検証した場合には発生しなかった。何かdocker環境上で使う場合、CUIの表示に難ありかもしれない。
超強力なmacOS(M2 32GBメモリ)上のコンテナより、ラズパイ4ベアメタルでの表示の方がスムーズだし、プラグインのインストールもスムーズに終了する。
設定用ディレクトリ
設定の追加は rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim. を参考にした。
オフィシャルのStructureのディレクトリ構成の説明が参考になる。
| 2023/12時点では下記の構成になる。 | |
|---|---|
| lua/config | ユーザーの設定 |
| lua/plugins | ユーザーのプラグイン設定 |
| snippets | 個人的なsnippets |
config配下には更に下記のファイルを置ける。
| ————————- | – | | lua/config/autocmds.lua | auto comand | | lua/config/options.lua | カスタムオプション | | lua/config/keymaps.lua | キーマップ | | lua/config/setup.lua | 設定のオーバーライド |
プラグインの追加
オフィシャルの情報を見ると、 ~/.config/nvim/lua/plugins/配下にファイルを設置するらしい。 rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim.
例えば ~/.config/nvim/lua/plugins/add.lua に下記内容を置くと、次回起動時、自動的にインストールされる。
return {
{
'mattn/vim-maketable',
lazy = false,
},
{
'dhruvasagar/vim-table-mode',
lazy = false,
}
}
記述方法は folke/lazy.nvim: 💤 A modern plugin manager for Neovim に書いてある。
私が追加しているプラグイン
- mattn/vim-maketable
- CSV形式で書いて範囲選択。:を押して MakeTable と入力。いきなりテーブルになる、素敵
- dhruvasagar/vim-table-mode: VIM Table Mode for instant table creation.
- :TableModeToggle で有効化。テーブルを編集
- rafi.plugins.extras.coding.copilot
- rafi/vim-config: Lean mean Neovim machine, carefully crafted with Use with latest Neovim. にリストアップされていた中でcopilotのプラグインがあったため追加した。
nvim-treesitter/nvim-treesitter の設定を追加しているのは、phpのsyntaxが一時的にだと思うがインストールできなかったため外している。
またmacのhammerspoonのEmmyLuaの設定を追加している。 このEmmyLuaはLuaのLSP向けの設定で、hammerspoonの補完を行ってくれる。 例えば一枚のluaのファイルを開いた時、「Undefined global …」と表示されるが、 この設定とSpoons/EmmyLua.spoon/annotationsの設定を追加すると、そのエラーが消える。 ファイルを上記URLからダウンロード、展開したディレクトリを~/.config/hammerspoon/Spoons/EmmyLua.spoon/に配置する。 その上で下記の設定を行う。
更にterraform-lsの設定を追加している。terraform-lsはterraformのLSPで、nvim-lspconfigで設定を追加することで、terraformのファイルを開いた時にLSPが有効になる。
LSPが有効になっているかの確認は :LspInfo で確認できる。
return {
-- テーブル関連のプラグイン
{ 'mattn/vim-maketable', lazy = false, },
{ 'dhruvasagar/vim-table-mode', lazy = false, },
-- GitHub's Copilot を有効に
{ import = 'rafi.plugins.extras.coding.copilot' },
-- Change built-in plugins' options
{
'nvim-treesitter/nvim-treesitter',
opts = {
ensure_installed = {
'bash', 'comment', 'css', 'diff', 'dockerfile', 'fennel', 'fish',
'gitcommit', 'gitignore', 'gitattributes', 'git_rebase', 'go', 'gomod',
'gosum', 'gowork', 'graphql', 'hcl', 'html', 'javascript', 'jsdoc',
'json', 'json5', 'jsonc', 'jsonnet', 'lua', 'make', 'markdown',
'markdown_inline', 'nix', 'perl', 'pug', 'python', 'regex',
'rst', 'ruby', 'rust', 'scss', 'sql', 'svelte', 'terraform', 'toml',
'tsx', 'typescript', 'vim', 'vimdoc', 'vue', 'yaml', 'zig',
},
},
},
-- Lua の LSPの設定を変更
{
'neovim/nvim-lspconfig',
opts = {
servers = {
lua_ls = {
settings = {
Lua = {
workspace = {
checkThirdParty = false,
library = {"~/.config/hammerspoon/Spoons/EmmyLua.spoon/annotations"}
},
completion = { callSnippet = 'Replace' },
},
},
},
terraformls = { -- Terraform LSP の設定を追加
filetypes = { "terraform", "tf" },
cmd = { "terraform-ls", "serve" },
flags = {
debounce_text_changes = 150,
},
},
},
}
}
}
個人の設定の追加
lua/config/options.lua にカスタムオプションを設定する。
折返しの設定幅を短くする設定を追加した。
vim.opt.textwidth = 160 -- 折返し幅を160文字にした
vim.o.clipboard = vim.o.clipboard:gsub(",?unnamedplus", "") -- macでクリップボード連携をオフにした
vim.opt.termguicolors = true -- 24ビットカラーをサポート
カラースキームの設定
neovimを起動し :echo g:colors_name で現在のカラースキームを確認できる。
デフォルトの設定は ./rafi/plugins/colorscheme.lua で neohybrid に設定されていた。
ターミナルの半透明の設定を有効にしてもneovimの時だけ透過しなかった。 テーマの設定を上書きたいので下記の設定を追加した。
~/.config/nvim/lua/config/autocmds.lua <- ファイル名は autocmds.lua である必要がある
-- 新しく MyGroup という名前の自動コマンドグループを作成しています。
-- { clear = true } は、このグループに既存の自動コマンドがあった場合はクリア(削除)して再作成します。
-- 重複や意図しない動作を防ぐため、毎回グループをクリアしてきれいな状態にするための設定です。
vim.api.nvim_create_augroup('MyGroup', { clear = true })
-- イベント:ColorScheme
-- カラースキームが読み込まれるたびに自動で実行されます。
-- グループ:先ほど作成した MyGroup にこの自動コマンドを属させます。
-- パターン:'*'
-- すべてのカラースキームに対して有効です(特定のカラースキーム名を指定することも可能)。
vim.api.nvim_create_autocmd('ColorScheme', {
group = 'MyGroup',
pattern = '*',
-- Normalグループ(Neovim上のテキスト部分全体)の背景色を完全に透明に設定します。
-- ctermbg=NONE はターミナル上の背景色を削除します。
-- guibg=NONE はGUI(Neovim GUIや端末の真の色設定が可能な環境)の背景色を削除します。
command = 'highlight Normal ctermbg=NONE guibg=NONE',
})
別のカラースキーマを使う( cyberdream )
rafi/vim-configのExtra Pluginsでいくつかのカラースキームがサポートされている そのうち cyberdream は
Transparency-first design - all design decisions are made with transparency in mind. とあり透過に向いているらしいのでこれを使ってみる neovim起動後、
:LazyExtrasで cyberdreamを検索、xで選択、neovim再起動する。
カラースキームのインストール後、カラースキームが使われるようにするのが
- rafi/vim-config はカラースキームの設定を vim-config/lua/rafi/plugins/colorscheme.lua で行っている
- デフォルトは neohybrid
- vim-config/lua/rafi配下のディレクトリはrafi管理なので、別ファイルで設定を変更したいね…
別の設定ファイルを書いてみる
~/.config/nvim/lua/plugins/colorscheme-cyberdream.lua に書きを書いてみた。が、上手く反映できない
return {
{
'scottmckendry/cyberdream.nvim',
lazy = false,
priority = 1000,
config = function()
require('theme-loader').setup({
initial_colorscheme = 'cyberdream',
fallback_colorscheme = 'cyberdream',
})
end,
},
}
下記を行ってみてもNG
rm -rf ~/.local/share/nvim ; rm -rf ~/.local/state/nvim ; rm -rf ~/.cache/nvim
上記で使用されている theme-loader は last-used 、最後に使ったカラースキームを記憶してくれるらしい。 ただ私の環境では上手く動作してくれなかった。
こちらのコードを見ると、最後に使用したカラースキームは ~/.local/share/nvim/theme.txt に保存される。このファイルを確認するとデフォルトのものが記載されており、下記のようにカラースキームを指定して反映してもファイルが変更されなかった
:colorscheme cyberdream
下記で現在のカラースキームが変わっている事を確認した
:echo g:colors_name
デフォルトのまま
cat ~/.local/share/nvim/theme.txt
neohybrid⏎
逆に保存されるファイル側を書き換えてみる
echo cyberdream > ~/.local/share/nvim/theme.txt
この方法で目的のカラースキームを起動時に読み込ませる事ができた
次はカラースキームをカスタマイズしたい
neovimを起動してからLazyExtrasでプラグインを追加できる
https://github.com/rafi/vim-config?tab=readme-ov-file#extend-plugins
:LazyExtras を打ってから現れるダイアログで x を押すと追加できる(反映にneovimを再起動する必要がある)
LazyExtrasについて参考になった
何かプラグイン関連で反映されない時はキャッシュを削除してみる
rm -rf ~/.local/share/nvim ; rm -rf ~/.local/state/nvim ; rm -rf ~/.cache/nvim