Open19

Neovim 設定関連メモ

無名隱者無名隱者
.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,
  },

無名隱者無名隱者

https://github.com/ThePrimeagen/init.lua/blob/master/lua/theprimeagen/set.lua

-- 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フォントの設定(コメントアウトされている)


無名隱者無名隱者

https://github.com/ThePrimeagen/neovimrc/blob/master/lua/theprimeagen/remap.lua

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 })