local env = require('core.env') local function setup() -- キーマップのユーティリティ関数 local function map(mode, lhs, rhs, opts) opts = opts or {} opts.silent = opts.silent ~= false vim.keymap.set(mode, lhs, rhs, opts) end -- ESC mappings map('i', 'jj', '') map('i', 'っj', '') -- 日本語入力対応 -- 編集操作 map('i', '', '') -- ウィンドウ操作: vim-kitty-navigatorプラグインが担当 -- はkittyペインとのシームレス移動に使用 -- コマンドライン map('n', ';', ':', { silent = false }) -- ターミナル操作 map('t', '', 'quit') map('t', '', '') -- パス関連 map('n', '', function() local path = vim.fn.expand('%:p') vim.fn.setreg('*', path) vim.fn.setreg('+', path) vim.notify('Copied: ' .. path) end) -- ファイル操作 map('n', '%', function() vim.cmd.source('%') vim.notify('Source % done.') end) -- copy/paste map('i', 'v', '+') -- バッファ操作 map('n', '', function() vim.cmd.bnext() end) map('n', '', function() vim.cmd.bprevious() end) -- インデント時の選択維持 map('v', '<', function() vim.cmd('normal! <') vim.cmd('normal! gv') end) map('v', '>', function() vim.cmd('normal! >') vim.cmd('normal! gv') end) -- 行移動 map('v', 'J', function() vim.cmd.move('">+1"') vim.cmd.normal('gv=gv') end) map('v', 'K', function() vim.cmd.move('"<-2"') vim.cmd.normal('gv=gv') end) -- 検索 map('n', '', function() vim.cmd.nohlsearch() end) map('n', 'n', 'nzzzv') map('n', 'N', 'Nzzzv') -- 便利な操作 map('n', 'J', function() vim.cmd.normal('mzJ`z') end) -- ターミナルモード: vim-kitty-navigatorコマンドでシームレス移動 map('t', '', 'KittyNavigateLeft') map('t', '', 'KittyNavigateDown') map('t', '', 'KittyNavigateUp') map('t', '', 'KittyNavigateRight') map('t', '', '') -- 環境固有のマッピング if env.is_vscode() then -- VSCode Neovim固有のキーマップ map('n', 'f', function() vim.fn.VSCodeNotify("workbench.action.quickOpen") end) map('n', 'e', function() vim.fn.VSCodeNotify("workbench.action.toggleSidebarVisibility") end) end -- OS固有のマッピング if env.is_mac() then map('n', '', function() vim.cmd.write() end) end -- 無効化するキーマップ map('n', 'Q', '') map('n', '', '') end setup() return { setup = setup }