概要
Neovimを試してみたので
備忘録として設定ファイルやプラグインについて記載いたします。
環境
windows:Windows11Pro 23H2
メモ
◆packerコマンドを用いてインストールする
:PackerInstall
◆windowsのneovimのTelescopeのインストール準備
ripgrep と fd のインストール
winget install BurntSushi.ripgrep
winget install fd
◆windowsのneovimのTelescopeの使用コマンド
-- カスタムキーマッピング設定例
vim.api.nvim_set_keymap('n', '<Leader>ff', "<cmd>Telescope find_files<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fg', "<cmd>Telescope live_grep<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fb', "<cmd>Telescope buffers<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fh', "<cmd>Telescope help_tags<CR>", { noremap = true, silent = true })
◆Comment.nvimはNeovimでコードのコメント操作を簡単にする非常に便利なプラグイン
gcc: カーソル行をコメント
gc: ビジュアルモードで、コメントアウトを解除
◆Neovimのインストール方法
winget install Neovim.Neovim
ディレクトリ構成
root -> C:\Users\ユーザ名\AppData\Local\nvim
┣ lua
┃ ┣ options.lua
┃ ┣ plugins.lua
┣ plugin
┃ ┣ packer_compiled.lua
┣ init.lua
init.lua
init.lua
require("options")
require("plugins")
require("lualine").setup()
vim.cmd[[colorscheme tokyonight-night]]
packer_compiled.lua
packerコマンドによりコンパイルされる
options.lua
options.lua
-- lang
-- vim.cmd('language en_US.UTF-8') -- 表示言語を英語にする
vim.cmd("language ja_JP.UTF-8") -- 表示言語を日本語にする
-- ファイル
vim.opt.fileencoding = "utf-8" -- エンコーディングをUTF-8に設定
vim.opt.swapfile = false -- スワップファイルを作成しない
-- vim.opt.helplang = "ja" -- ヘルプファイルの言語は日本語
vim.opt.hidden = true -- バッファを切り替えるときにファイルを保存しなくてもOKに
-- クリップボード共有
vim.opt.clipboard:append({ "unnamedplus" }) -- レジスタとクリップボードを共有
vim.api.nvim_set_keymap("v", "<C-c>", '"+y', { noremap = true, silent = true }) -- コピー
vim.api.nvim_set_keymap("n", "<C-v>", '"+p', { noremap = true, silent = true }) -- 貼り付け
vim.api.nvim_set_keymap("i", "<C-v>", '<C-r>+', { noremap = true, silent = true }) -- インサートモードの貼り付け
-- メニューとコマンド
vim.opt.wildmenu = true -- コマンドラインで補完
vim.opt.cmdheight = 1 -- コマンドラインの表示行数
vim.opt.laststatus = 3 -- 常に下部にステータスラインを表示
vim.opt.showcmd = true -- コマンドラインに入力されたコマンドを表示
-- 検索・置換え
vim.opt.hlsearch = true -- ハイライト検索を有効
vim.opt.incsearch = true -- インクリメンタルサーチを有効
vim.opt.matchtime = 1 -- 入力された文字列がマッチするまでにかかる時間
-- カラースキーム
vim.opt.termguicolors = true -- 24 ビットカラーを使用
vim.opt.background = "dark" -- ダークカラーを使用する
-- インデント
vim.opt.shiftwidth = 4 -- シフト幅を4に設定する
vim.opt.tabstop = 4 -- タブ幅を4に設定する
vim.opt.expandtab = true -- タブ文字をスペースに置き換える
vim.opt.autoindent = true -- 自動インデントを有効にする
vim.opt.smartindent = true -- インデントをスマートに調整する
-- 表示
vim.opt.number = true -- 行番号を表示
vim.opt.relativenumber = true -- 相対行番号を表示
vim.opt.wrap = true -- テキストの自動折り返しを無効に
vim.opt.showtabline = 2 -- タブラインを表示
-- (1:常に表示、2:タブが開かれたときに表示)
vim.opt.visualbell = true -- ビープ音を表示する代わりに画面をフラッシュ
vim.opt.showmatch = true -- 対応する括弧をハイライト表示
-- タブと半角スペースの表示を有効化
vim.o.list = true
vim.o.listchars = "tab:»-,space:·"
-- インタフェース
vim.opt.winblend = 0 -- ウィンドウの不透明度
vim.opt.pumblend = 0 -- ポップアップメニューの不透明度
vim.opt.showtabline = 2 -- タブラインを表示する設定
vim.opt.signcolumn = "yes" -- サインカラムを表示
---- 行番号の色を変更(色は適宜変更してください)
vim.cmd("highlight LineNr guifg=#8a70ac")
-- カーソルの形状
vim.o.guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20"
-- signcolumnの優先順位(エラー/警告/ヒントの表示順)
vim.diagnostic.config({ severity_sort = true })
-- Telescopeにおけるカスタムキーマッピング設定例
vim.api.nvim_set_keymap('n', '<Leader>ff', "<cmd>Telescope find_files<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fg', "<cmd>Telescope live_grep<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fb', "<cmd>Telescope buffers<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<Leader>fh', "<cmd>Telescope help_tags<CR>", { noremap = true, silent = true })
-- その他
vim.api.nvim_set_keymap('n', '<CR>', 'o<Esc>', { noremap = true, silent = true })
-- <leader>e でファイルエクスプローラーを開く
vim.api.nvim_set_keymap('n', '<leader>e', ':Ex<CR>', { noremap = true, silent = true })
-- <leader>o でノーマルモードで改行する
vim.api.nvim_set_keymap('n', '<leader>o', 'i<CR><ESC>', { noremap = true, silent = true })
plugins.lua
plugins.lua
local ensure_packer = function()
local fn = vim.fn
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
vim.cmd [[packadd packer.nvim]]
return true
end
return false
end
local packer_bootstrap = ensure_packer()
local cmp = require('cmp')
cmp.setup({
snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body)
end,
},
mapping = {
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
},
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
}, {
{ name = 'buffer' },
{ name = 'path' },
})
})
-- vim.cmd([[packadd packer.nvim]])
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
--
-- この下にインストールするプラグインを記載します。
use 'folke/tokyonight.nvim'
use {
"nvim-lualine/lualine.nvim",
requires = { "nvim-tree/nvim-web-devicons", opt = true }
}
use("nvim-tree/nvim-web-devicons")
-- Telescope.nvim のインストール
use {
'nvim-telescope/telescope.nvim',
requires = { 'nvim-lua/plenary.nvim' }
}
use {
'numToStr/Comment.nvim',
config = function()
require('Comment').setup({
padding = true, -- コメントとコードの間にスペースを追加
sticky = true, -- コメント後にカーソル位置を保持
mappings = {
basic = true, -- 基本のキーマッピング
extra = true, -- 追加機能のキーマッピング
},
toggler = {
line = 'gcc', -- 行コメントのトグル
block = 'gbc', -- ブロックコメントのトグル
},
opleader = {
line = 'gc', -- 行コメントの操作
block = 'gb', -- ブロックコメントの操作
},
})
end,
}
use {
'hrsh7th/nvim-cmp',
requires = {
'hrsh7th/cmp-nvim-lsp', -- LSPソース
'hrsh7th/cmp-buffer', -- バッファソース
'hrsh7th/cmp-path', -- パスソース
'saadparwaiz1/cmp_luasnip', -- LuaSnipサポート
'L3MON4D3/LuaSnip', -- スニペットエンジン
}
}
use {
"shellRaining/hlchunk.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
require("hlchunk").setup({
chunk = { enable = true },
indent = { enable = true },
line_num = { enable = false },
blank = { enable = false },
})
end
}
use {
'koralle/winresizer.nvim',
config = function()
require('winresizer').setup({
start_key = '<C-K>', -- リサイズモードを開始するキー
start_mode = 'resize', -- デフォルトモード:'resize', 'move', 'focus'
resize_count = 3, -- リサイズの増減量
keycode_left = 104, -- 'h' キーコード
keycode_down = 106, -- 'j' キーコード
keycode_up = 107, -- 'k' キーコード
keycode_right = 108, -- 'l' キーコード
keycode_finish = 13, -- Enterキーコード
keycode_cancel = 113, -- 'q' キーコード
})
end
}
use {
"windwp/nvim-autopairs",
config = function()
require("nvim-autopairs").setup {}
end
}
use {
"akinsho/toggleterm.nvim",
tag = '*',
config = function()
require("toggleterm").setup{
size = 20,
open_mapping = [[<C-\>]],
direction = "horizontal",
start_in_insert = true,
insert_mappings = true,
persist_size = true,
close_on_exit = true,
shell = vim.o.shell,
}
end
}
end)
背景の透過
1)wingetコマンドを使用
winget install --id Alacritty.Alacritty
exeファイルのインストール先は環境によって異なる
C:\Program Files\Alacritty\alacritty.exe
2)Alacrittyがシステム環境設定のPATHに含まれていることを確認する
3)コマンドプロンプトからAlacrittyと入力してAlacrittyが起動することを確認する
4)alacrittyの設定ファイル(tomlファイル)を下記の内容で新規作成する
ディレクトリ:C:\Users{ユーザ名}\AppData\Roaming\alacritty
ファイル名:alacritty.toml
内容:
[window]
opacity = 0.9 # 背景の透過度 (0.0が完全透過、1.0が透過なし)
5)init.Luaに下記を追記する
vim.cmd([[
highlight Normal guibg=none
highlight NonText guibg=none
]])