Open19
Neovim 設定関連メモ
ファイラー
AstroNvim
mapping
riq0h氏
参考ページ
2023/01/20
Neovimを完全にLuaLuaさせた
2022/10/21
NeovimをもっとLuaLuaさせた
2022/03/15
NeovimをちょっとLuaLuaさせた
インデントの設定
telescope.nvim
スニペット
textobject
.config/nvim_bkup_lazyvim/lua/lazyvim/plugins/editor.lua
-- Fuzzy finder.
-- The default key bindings to find files will use Telescope's
-- `find_files` or `git_files` depending on whether the
-- directory is a git repo.
{
"nvim-telescope/telescope.nvim",
cmd = "Telescope",
version = false, -- telescope did only one release, so use HEAD for now
dependencies = {
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
enabled = vim.fn.executable("make") == 1,
config = function()
Util.on_load("telescope.nvim", function()
require("telescope").load_extension("fzf")
end)
end,
},
},
keys = {
{
"<leader>,",
"<cmd>Telescope buffers sort_mru=true sort_lastused=true<cr>",
desc = "Switch Buffer",
},
{ "<leader>/", Util.telescope("live_grep"), desc = "Grep (root dir)" },
{ "<leader>:", "<cmd>Telescope command_history<cr>", desc = "Command History" },
{ "<leader><space>", Util.telescope("files"), desc = "Find Files (root dir)" },
-- find
{ "<leader>fb", "<cmd>Telescope buffers sort_mru=true sort_lastused=true<cr>", desc = "Buffers" },
{ "<leader>fc", Util.telescope.config_files(), desc = "Find Config File" },
{ "<leader>ff", Util.telescope("files"), desc = "Find Files (root dir)" },
{ "<leader>fF", Util.telescope("files", { cwd = false }), desc = "Find Files (cwd)" },
{ "<leader>fg", "<cmd>Telescope git_files<cr>", desc = "Find Files (git-files)" },
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Recent" },
{ "<leader>fR", Util.telescope("oldfiles", { cwd = vim.loop.cwd() }), desc = "Recent (cwd)" },
-- git
{ "<leader>gc", "<cmd>Telescope git_commits<CR>", desc = "commits" },
{ "<leader>gs", "<cmd>Telescope git_status<CR>", desc = "status" },
-- search
{ '<leader>s"', "<cmd>Telescope registers<cr>", desc = "Registers" },
{ "<leader>sa", "<cmd>Telescope autocommands<cr>", desc = "Auto Commands" },
{ "<leader>sb", "<cmd>Telescope current_buffer_fuzzy_find<cr>", desc = "Buffer" },
{ "<leader>sc", "<cmd>Telescope command_history<cr>", desc = "Command History" },
{ "<leader>sC", "<cmd>Telescope commands<cr>", desc = "Commands" },
{ "<leader>sd", "<cmd>Telescope diagnostics bufnr=0<cr>", desc = "Document diagnostics" },
{ "<leader>sD", "<cmd>Telescope diagnostics<cr>", desc = "Workspace diagnostics" },
{ "<leader>sg", Util.telescope("live_grep"), desc = "Grep (root dir)" },
{ "<leader>sG", Util.telescope("live_grep", { cwd = false }), desc = "Grep (cwd)" },
{ "<leader>sh", "<cmd>Telescope help_tags<cr>", desc = "Help Pages" },
{ "<leader>sH", "<cmd>Telescope highlights<cr>", desc = "Search Highlight Groups" },
{ "<leader>sk", "<cmd>Telescope keymaps<cr>", desc = "Key Maps" },
{ "<leader>sM", "<cmd>Telescope man_pages<cr>", desc = "Man Pages" },
{ "<leader>sm", "<cmd>Telescope marks<cr>", desc = "Jump to Mark" },
{ "<leader>so", "<cmd>Telescope vim_options<cr>", desc = "Options" },
{ "<leader>sR", "<cmd>Telescope resume<cr>", desc = "Resume" },
{ "<leader>sw", Util.telescope("grep_string", { word_match = "-w" }), desc = "Word (root dir)" },
{ "<leader>sW", Util.telescope("grep_string", { cwd = false, word_match = "-w" }), desc = "Word (cwd)" },
{ "<leader>sw", Util.telescope("grep_string"), mode = "v", desc = "Selection (root dir)" },
{ "<leader>sW", Util.telescope("grep_string", { cwd = false }), mode = "v", desc = "Selection (cwd)" },
{ "<leader>uC", Util.telescope("colorscheme", { enable_preview = true }), desc = "Colorscheme with preview" },
{
"<leader>ss",
function()
require("telescope.builtin").lsp_document_symbols({
symbols = require("lazyvim.config").get_kind_filter(),
})
end,
desc = "Goto Symbol",
},
{
"<leader>sS",
function()
require("telescope.builtin").lsp_dynamic_workspace_symbols({
symbols = require("lazyvim.config").get_kind_filter(),
})
end,
desc = "Goto Symbol (Workspace)",
},
},
opts = function()
local actions = require("telescope.actions")
local open_with_trouble = function(...)
return require("trouble.providers.telescope").open_with_trouble(...)
end
local open_selected_with_trouble = function(...)
return require("trouble.providers.telescope").open_selected_with_trouble(...)
end
local find_files_no_ignore = function()
local action_state = require("telescope.actions.state")
local line = action_state.get_current_line()
Util.telescope("find_files", { no_ignore = true, default_text = line })()
end
local find_files_with_hidden = function()
local action_state = require("telescope.actions.state")
local line = action_state.get_current_line()
Util.telescope("find_files", { hidden = true, default_text = line })()
end
return {
defaults = {
prompt_prefix = " ",
selection_caret = " ",
-- open files in the first window that is an actual file.
-- use the current window if no other window is available.
get_selection_window = function()
local wins = vim.api.nvim_list_wins()
table.insert(wins, 1, vim.api.nvim_get_current_win())
for _, win in ipairs(wins) do
local buf = vim.api.nvim_win_get_buf(win)
if vim.bo[buf].buftype == "" then
return win
end
end
return 0
end,
mappings = {
i = {
["<c-t>"] = open_with_trouble,
["<a-t>"] = open_selected_with_trouble,
["<a-i>"] = find_files_no_ignore,
["<a-h>"] = find_files_with_hidden,
["<C-Down>"] = actions.cycle_history_next,
["<C-Up>"] = actions.cycle_history_prev,
["<C-f>"] = actions.preview_scrolling_down,
["<C-b>"] = actions.preview_scrolling_up,
},
n = {
["q"] = actions.close,
},
},
},
}
end,
},
-- vim.opt.guicursor = "" -- カーソルの見た目の設定を変更するが、コメントアウトされている
vim.opt.nu = true -- 行番号を表示する
vim.opt.relativenumber = true -- 相対行番号を表示する
vim.opt.tabstop = 4 -- タブ文字の幅を4スペースに設定する
vim.opt.softtabstop = 4 -- インサートモードでのタブ入力を4スペースに設定する
vim.opt.shiftwidth = 4 -- 自動インデントの幅を4スペースに設定する
vim.opt.expandtab = true -- タブ文字をスペースに変換する
vim.opt.smartindent = true -- スマートインデントを有効にする
-- 画面サイズに応じて自動改行を有効にする設定
vim.opt.wrap = true -- 行の折り返しを有効にする
vim.opt.linebreak = true -- 単語の途中で改行することを防ぐ
vim.opt.swapfile = false -- スワップファイルを作成しない
vim.opt.backup = false -- バックアップファイルを作成しない
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" -- アンドゥファイルの保存場所を設定する
vim.opt.undofile = true -- アンドゥファイルを有効にする
vim.opt.hlsearch = false -- 検索結果をハイライトしない
vim.opt.incsearch = true -- インクリメンタルサーチを有効にする
vim.opt.termguicolors = true -- ターミナルのGUIカラーを有効にする
vim.opt.scrolloff = 8 -- カーソルの上下に最低8行の余裕を持たせる
vim.opt.signcolumn = "yes" -- サインカラムを常に表示する
vim.opt.isfname:append("@-@") -- isfnameオプションに '@-@' を追加してファイル名の扱いを拡張する
vim.opt.updatetime = 50 -- 編集後の更新時間を50msに設定する
vim.opt.colorcolumn = "80" -- 80文字目に色付きの列を表示する
-- カスタム設定
vim.opt.list = true -- 特殊文字の可視化を有効にする
vim.opt.listchars = {tab='»-', trail='-', eol='↲', extends='»', precedes='«', nbsp='・'} -- リスト文字の表示方法を設定する
-- vim.o.guifont = "Source Code Pro:h20" -- GUIフォントの設定(コメントアウトされている)
vim.g.mapleader = " "
-- ノーマルモードで <leader>pv を押すと、Ex(ファイルブラウザ)を開く
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
-- ビジュアルモードで J を押すと、選択した行を1行下に移動し、選択を維持する
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
-- ビジュアルモードで K を押すと、選択した行を1行上に移動し、選択を維持する
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
-- ノーマルモードで J を押して行を結合するときに、カーソル位置を保存して結合後に元の位置に戻る
vim.keymap.set("n", "J", "mzJ`z")
-- ノーマルモードで Ctrl+d を押してスクロールダウンした後に、画面中央にカーソルを配置する
vim.keymap.set("n", "<C-d>", "<C-d>zz")
-- ノーマルモードで Ctrl+u を押してスクロールアップした後に、画面中央にカーソルを配置する
vim.keymap.set("n", "<C-u>", "<C-u>zz")
-- ノーマルモードで n を押して次の検索結果に移動した後に、画面中央にカーソルを配置する
vim.keymap.set("n", "n", "nzzzv")
-- ノーマルモードで N を押して前の検索結果に移動した後に、画面中央にカーソルを配置する
vim.keymap.set("n", "N", "Nzzzv")
vim.keymap.set("n", "<leader>vwm", function()
require("vim-with-me").StartVimWithMe()
end)
vim.keymap.set("n", "<leader>svwm", function()
require("vim-with-me").StopVimWithMe()
end)
-- greatest remap ever
-- ビジュアルモードで <leader>p を押すと、選択範囲を削除せずにペーストする(ヤンクした内容を保持し、削除レジスタを使用)
vim.keymap.set("x", "<leader>p", [["_dP]])
-- next greatest remap ever : asbjornHaland
-- ノーマルモードおよびビジュアルモードで <leader>y を押すと、ヤンク(コピー)した内容をシステムクリップボードに保存する
vim.keymap.set({"n", "v"}, "<leader>y", [["+y]])
-- ノーマルモードで <leader>Y を押すと、行全体をヤンク(コピー)し、システムクリップボードに保存する
vim.keymap.set("n", "<leader>Y", [["+Y]])
-- ノーマルモードおよびビジュアルモードで <leader>d を押すと、削除した内容をレジスタに保存せずに破棄する(ブラックホールレジスタを使用)
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]])
-- This is going to get me cancelled
-- インサートモードで Ctrl+c を押すとノーマルモードに戻る(<Esc> と同様の動作をする)
vim.keymap.set("i", "<C-c>", "<Esc>")
-- ノーマルモードで Q を押しても何もしないようにする(誤操作防止のため無効化)
vim.keymap.set("n", "Q", "<nop>")
-- ノーマルモードで Ctrl+f を押すと、新しい tmux ウィンドウで tmux-sessionizer を起動する
vim.keymap.set("n", "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
-- ノーマルモードで <leader>f を押すと、現在のバッファを LSP のフォーマッタでフォーマットする
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
-- ノーマルモードで Ctrl+k を押すと、次のクイックフィックス項目に移動し、画面を中央に揃える
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz")
-- ノーマルモードで Ctrl+j を押すと、前のクイックフィックス項目に移動し、画面を中央に揃える
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz")
-- ノーマルモードで <leader>k を押すと、次のローカルリスト項目に移動し、画面を中央に揃える
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz")
-- ノーマルモードで <leader>j を押すと、前のローカルリスト項目に移動し、画面を中央に揃える
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
-- ノーマルモードで <leader>s を押すと、現在の単語をインタラクティブに置換する
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
-- ノーマルモードで <leader>x を押すと、現在のファイルに実行権限を付与する(chmod +x)
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
-- ノーマルモードで <leader>ee を押すと、エラーチェックと return err の構文を自動挿入する
vim.keymap.set(
"n",
"<leader>ee",
"oif err != nil {<CR>}<Esc>Oreturn err<Esc>"
)
-- ノーマルモードで <leader>vpp を押すと、Neovim の packer.lua 設定ファイルを開く
vim.keymap.set("n", "<leader>vpp", "<cmd>e ~/.dotfiles/nvim/.config/nvim/lua/theprimeagen/packer.lua<CR>")
-- ノーマルモードで <leader>mr を押すと、CellularAutomaton プラグインの make_it_rain コマンドを実行する
vim.keymap.set("n", "<leader>mr", "<cmd>CellularAutomaton make_it_rain<CR>")
-- ノーマルモードで <leader><leader> を押すと、設定ファイルを再読み込みする
vim.keymap.set("n", "<leader><leader>", function()
vim.cmd("so")
end)
-- custom
-- インサートモード時に、jj でノーマルモードに戻る
vim.api.nvim_set_keymap('i', 'jj', '<ESC>', { noremap = true, silent = true })
-- インサートモード時に、jj でノーマルモードに戻る
vim.api.nvim_set_keymap('i', 'jj', '<ESC>', { noremap = true, silent = true })
-- ノーマルモード時に、<leader>q でneovimを強制終了する
vim.api.nvim_set_keymap('n', '<leader>q', '<cmd>q!<CR>', { noremap = true, silent = true })
ということで、私は <Space>l を選びました。もちろん、人によって正解は様々です。