Neovim設定覚書
Neovim設定あれこれを備忘録的に残すゾ
Plugin Managerを入れる
vim-plugを選択
コマンド実行
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
~/.local/share/nvim/site/autoload/plug.vim
が作られた
後ほど入れる予定のcoc.nvimを追加して:PlugInstall
を実行
一旦init.luaに書いとく(後でdotfilesに移す)
local Plug = vim.fn['plug#']
vim.call('plug#begin', '~/.local/share/nvim/site/autoload/plugged')
Plug('neoclide/coc.nvim', {branch = 'release'})
vim.call('plug#end')
設定をdotfilesで管理する
~/dotfiles/nvim/init.lua
を作成
git管理しつつnvimの設定は今後ここに置いてく
~/.config/nvim/init.lua
の中で↑で作成したファイルを読むようにする
dofile(vim.fn.expand('~/dotfiles/nvim/init.lua'))
最初に入れたcocのプラグインはpluginis.lua
に、cocのextensionをcoc.lua
に置いた
-- coc.lua
vim.g.coc_global_extensions = {
'coc-tsserver',
'coc-eslint',
'coc-prettier',
'coc-git',
'coc-fzf-preview',
'coc-lists',
'coc-copilot'
}
それぞれをdotfileのinit.luaで読み込む
dofile(vim.fn.expand('~/dotfiles/nvim/lua/plugins.lua'))
dofile(vim.fn.expand('~/dotfiles/nvim/lua/coc.lua'))
シンボリックリンクで管理
無理矢理dofile
で読み込んでたけどシンボリックリンク貼る方が一般的っぽいので変更
Goal
AsIs ~/dotfiles/nvim/init.lua
を~/.config/nvim/init.lua
で読み込む
ToBe ~/.config/nvim
に ~/dotfiles/nvim
のシンボリックリンクを貼る
~/.config/nvim
を初期状態に戻す
rm ~/.config/nvim
~/dotifiles/nvim
でdofileからrequireに変える
require('plugins')
require('coc')
require('filer')
require('options')
require('syntax')
シンボリックリンクを設定
ln -f -n -s ~/dotfiles/nvim ~/.config
Filerを入れる
Pluginを導入
ついでにアイコンも入れておく
-- nvim-tree
Plug 'nvim-tree/nvim-tree.lua'
Plug 'nvim-tree/nvim-web-devicons'
アイコンに対応するフォントを導入
アイコンを表示するためにはhack Nerd Fontフォントを入れなくてはいけないのでhomebrew経由で入れる
brew tap homebrew/cask-fonts
brew install --cask font-hack-nerd-font
terminal(Warp)でフォントの設定を変更
syntax系の設定
見た目部分を設定する
GitHub themeのプラグインを入れる
Plug 'projekt0n/github-nvim-theme'
nvimのカラースキーマに設定
if vim.fn.has('termguicolors') == 1 then
vim.o.termguicolors = true
end
vim.cmd('set background=dark')
vim.cmd('colorscheme github_dark_colorblind')
nvim-treesitterを導入
コードを解析してハイライトやインデントをいい感じにしてくれるらしい
Plug ('nvim-treesitter/nvim-treesitter', {['do'] = ':TSUpdate'})
設定
require'nvim-treesitter.configs'.setup ({
ensure_installed = {
"lua",
"bash",
"vim",
"html",
"css",
"scss",
"go",
"json",
"typescript",
"typoscript",
"tsx",
"vue",
},
highlight = {
enable = true,
},
})
cocの設定
extensionsの設定
色々面白そうなのある👀
vim.g.coc_global_extensions = {
'coc-tsserver',
'coc-eslint',
'coc-prettier',
'coc-git',
'coc-fzf-preview',
'coc-lists',
}
補完UIに対するkeyを設定
参考:https://qiita.com/totto2727/items/d0844c79f97ab601f13b
vim.cmd([[
inoremap <silent><expr> <Enter> coc#pum#visible() ? coc#pum#confirm() : "\<Enter>"
inoremap <silent><expr> <C-j> coc#pum#visible() ? coc#pum#next(1) : "\<C-j>"
inoremap <silent><expr> <C-k> coc#pum#visible() ? coc#pum#prev(1) : "\<C-k>"
inoremap <silent><expr> <Enter> coc#pum#visible() ? coc#pum#confirm() : "\<Enter>"
inoremap <silent><expr> <Esc> coc#pum#visible() ? coc#pum#cancel() : "\<Esc>"
]])
Github Copilotの導入
:Copilot setup
でauthしたら完了
git clone https://github.com/github/copilot.vim.git \
~/.config/nvim/pack/github/start/copilot.vim
インサートモードから抜けたタイミングでIMEをオフにする
インサートモードで日本語入力した後、ノーマルモードに戻って何かしらしようとした時に、全角入力のままだとちゃんと動かないので自動で戻るようにしたい
im-selectの導入
コマンドラインからIMEを操作できるようにする
brew tap daipeihust/tap && brew install im-select
動作確認
コマンド実行で現在の状態がわかる
im-select
com.apple.keylayout.ABC
vim-im-selectの導入
im-selectをnvimから操作するプラグイン
プラグイン追加
Plug 'keaising/im-select.nvim'
設定ファイル
デフォルト値と、デフォルト値に更新するタイミングを指定
require('im_select').setup({
default_im_select = "com.apple.keylayout.ABC",
set_default_events = {"InsertLeave"},
})
NeovimでGitを扱いやすくする
toggletermの導入
vim上でTerminalを動かせるようにする
Lazygitの導入
brew経由で導入
brew install jesseduffield/lazygit/lazygit
lazygit.nvimの導入
Lazygitをコマンドモードから実装させるためのプラグイン
Plug 'kdheepak/lazygit.nvim'
キーマップの設定
vim.keymap.set('n', '<Space>g', ':LazyGit<cr>', {silent = true, noremap = true})
Flogの導入
treeをいい感じに表示させるプラグイン
プラグイン設定
Plug 'tpope/vim-fugitive'
Plug 'rbong/vim-flog'
キーマップの設定
vim.keymap.set('n', '<Space>gg', ':Flog<cr>', {silent = true, noremap = true})
Lazygitでdiffを見やすくする
brew経由でDeltaを入れる
brew install git-delta
.gitconfigに設定追加
[pager]
diff = delta
log = delta
reflog = delta
show = delta
[delta]
plus-style = "syntax #005CB1"
minus-style = "syntax #914E00"
syntax-theme = Monokai Extended
navigate = true
side-by-side = true
[interactive]
diffFilter = delta --color-only
Lazygitのconfigファイルに追記
git:
paging:
colorArg: always
pager: delta --dark --paging=never
aicommitsの導入
OpenAIを使ってステージングの内容からコミットメッセージを生成したい
npmで導入
brewなかった...
npm install -g aicommits
APIキーを設定
aicommits config set OPENAI_KEY=<your token>
Lazygitのカスタムコマンドに設定
- key: "C"
context: "files"
description: 'commit files with aicommits'
subprocess: true
command: "aicommits --type conventional --generate 3"
(本当はaicommitsの中でaicommitsで生成したコミットメッセージを編集できるみたいにしたかったが分からなかった)
Tmuxを導入する
brew install tmux
設定ファイルを作成
touch ~/dotfiles/tmux/tmux.conf
設定を書く
# prefix keyを設定
set -g prefix C-q
unbind C-b
....
~/.tmux.confにシンボリックリンクを貼る
ln -s ~/dotfiles/tmux/tmux.config ~/.tmux.conf
tuxの設定を更新する
tmux source ~/.tmux.conf
クリップボード連携
brew install reattach-to-user-namespace
zshで入力補完を行う
参考 https://zenn.dev/sprout2000/articles/bd1fac2f3f83bc
zsh-completionsとzsh-autosuggestionsを導入
brew install zsh-completions
chmod -R go-w /opt/homebrew/share
brew install zsh-autosuggestions
zsh設定を追記
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
autoload -Uz compinit && compinit
fi
Textlintの導入
aleを使用しvimで使えるように
dotfilesの.textlintrcをシンボリックリンクで貼る
ln -f -n -s ~/dotfiles/textlint/.textlintrc ~/.textlintrc