From 818053f6f6c04bff72f6ea9ab3cd3185dcb41057 Mon Sep 17 00:00:00 2001 From: Yuan Chiu Date: Wed, 30 Apr 2025 22:05:20 +0800 Subject: [PATCH] =?UTF-8?q?nvim:=20=E5=9C=A8=20Insert=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=EF=BC=8CCtrl=20+=20Shift=20+=20=E6=96=B9=E5=90=91?= =?UTF-8?q?=E9=8D=B5=E7=A7=BB=E5=8B=95=E4=B8=A6=E9=81=B8=E5=8F=96=E5=96=AE?= =?UTF-8?q?=E8=A9=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nvim/exact_lua/exact_config/keymaps.lua | 91 ++++++++++--------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/dot_config/nvim/exact_lua/exact_config/keymaps.lua b/dot_config/nvim/exact_lua/exact_config/keymaps.lua index 8eb4c85..14333f6 100644 --- a/dot_config/nvim/exact_lua/exact_config/keymaps.lua +++ b/dot_config/nvim/exact_lua/exact_config/keymaps.lua @@ -1,43 +1,46 @@ -- 這個檔案是依據自己之前在vscode的編輯習慣,用來設定editor的鍵盤快捷鍵 local map = vim.keymap.set -local nmap = vim.api.nvim_set_keymap +local neomap = vim.api.nvim_set_keymap -- 處理剪貼簿習慣對應(在Insert模式可使用慣用的快速鍵) vim.opt.keymodel = "startsel" -- 啟用 Shift + 方向鍵選取功能 -nmap('i', '', '"+pa', { noremap = true, silent = true }) -- Insert Mode 下的 Ctrl+V 貼上 -nmap('v', '', '"+y', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+C 複製 -nmap('v', '', '"+d', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+X 剪下 -nmap('v', '', '"+p', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+V 貼上 +neomap('i', '', '"+pa', { noremap = true, silent = true }) -- Insert Mode 下的 Ctrl+V 貼上 +neomap('v', '', '"+y', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+C 複製 +neomap('v', '', '"+d', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+X 剪下 +neomap('v', '', '"+p', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+V 貼上 -- 單字的左右移動 -nmap('n', '', 'w', { noremap = true, silent = true }) -nmap('n', '', 'b', { noremap = true, silent = true }) -nmap('n', '', 'W', { noremap = true, silent = true }) -nmap('n', '', 'B', { noremap = true, silent = true }) +neomap('n', '', 'w', { noremap = true, silent = true }) +neomap('n', '', 'b', { noremap = true, silent = true }) +neomap('n', '', 'W', { noremap = true, silent = true }) +neomap('n', '', 'B', { noremap = true, silent = true }) +-- 在 Insert 模式下,Ctrl + Shift + 方向鍵移動並選取單詞 +vim.api.nvim_set_keymap('i', '', 'vwi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', 'vbi', { noremap = true, silent = true }) -- 整行移動的快速鍵 -nmap('n', '', ':m .+1==', { noremap = true, silent = true }) -nmap('n', '', ':m .-2==', { noremap = true, silent = true }) -nmap('i', '', ':m .+1==gi', { noremap = true, silent = true }) -nmap('i', '', ':m .-2==gi', { noremap = true, silent = true }) -nmap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) -nmap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) +neomap('n', '', ':m .+1==', { noremap = true, silent = true }) +neomap('n', '', ':m .-2==', { noremap = true, silent = true }) +neomap('i', '', ':m .+1==gi', { noremap = true, silent = true }) +neomap('i', '', ':m .-2==gi', { noremap = true, silent = true }) +neomap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) +neomap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) -- 使用 Alt+方向鍵 移動整行 -nmap('n', '', ':m .+1==', { noremap = true, silent = true }) -nmap('n', '', ':m .-2==', { noremap = true, silent = true }) -nmap('i', '', ':m .+1==gi', { noremap = true, silent = true }) -nmap('i', '', ':m .-2==gi', { noremap = true, silent = true }) -nmap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) -nmap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) +neomap('n', '', ':m .+1==', { noremap = true, silent = true }) +neomap('n', '', ':m .-2==', { noremap = true, silent = true }) +neomap('i', '', ':m .+1==gi', { noremap = true, silent = true }) +neomap('i', '', ':m .-2==gi', { noremap = true, silent = true }) +neomap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) +neomap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) -- Ctrl+Alt+Shift+j/k 複製整行並向下/向上貼上 -nmap('n', '', 'yyp', { noremap = true, silent = true }) -nmap('n', '', 'yyP', { noremap = true, silent = true }) +neomap('n', '', 'yyp', { noremap = true, silent = true }) +neomap('n', '', 'yyP', { noremap = true, silent = true }) -- Ctrl+Alt+Shift+方向鍵 複製整行並向下/向上貼上 -nmap('n', '', 'yyp', { noremap = true, silent = true }) -nmap('n', '', 'yyP', { noremap = true, silent = true }) -nmap('i', '', 'yypgi', { noremap = true, silent = true }) -nmap('i', '', 'yyPgi', { noremap = true, silent = true }) +neomap('n', '', 'yyp', { noremap = true, silent = true }) +neomap('n', '', 'yyP', { noremap = true, silent = true }) +neomap('i', '', 'yypgi', { noremap = true, silent = true }) +neomap('i', '', 'yyPgi', { noremap = true, silent = true }) -- -- 處理不同終端的行為 -- -- 在 Insert Mode 下的 Ctrl+Enter 在下一行插入新行並保持 Insert 模式 @@ -45,16 +48,16 @@ nmap('i', '', 'yyPgi', { noremap = true, silent = true }) -- local term_program = vim.fn.getenv("TERM_PROGRAM") -- if term_program == "iTerm.app" then -- -- iTerm 的快捷鍵設置 --- nmap('i', '', 'o', { noremap = true, silent = true }) --- nmap('i', '', 'O', { noremap = true, silent = true }) +-- neomap('i', '', 'o', { noremap = true, silent = true }) +-- neomap('i', '', 'O', { noremap = true, silent = true }) -- elseif term == "alacritty" then -- -- Alacritty 的快捷鍵設置 --- nmap('i', '', 'o', { noremap = true, silent = true }) --- nmap('i', '', 'O', { noremap = true, silent = true }) +-- neomap('i', '', 'o', { noremap = true, silent = true }) +-- neomap('i', '', 'O', { noremap = true, silent = true }) -- elseif term == "xterm-256color" then -- -- xterm-256color 的快捷鍵設置 --- nmap('i', '', 'o', { noremap = true, silent = true }) --- nmap('i', '', 'O', { noremap = true, silent = true }) +-- neomap('i', '', 'o', { noremap = true, silent = true }) +-- neomap('i', '', 'O', { noremap = true, silent = true }) -- end -- 使用Ctrl(Alt)+Enter 在下一行插入新行並保持 Insert 模式 @@ -62,19 +65,19 @@ nmap('i', '', 'yyPgi', { noremap = true, silent = true }) -- Alacritty, GUI(Neovide, Goneovim) 皆可 -- xterm-256color採用程式: Konsole, iTerm2, gnome-terminal 會有按鍵吃不到的問題,詳下述註解: -- 使用Ctrl+Enter 在下一行插入新行並保持 Insert 模式(xterm-256color 吃不到) -nmap('i', '', 'o', { noremap = true, silent = true }) -nmap('i', '', 'O', { noremap = true, silent = true }) +neomap('i', '', 'o', { noremap = true, silent = true }) +neomap('i', '', 'O', { noremap = true, silent = true }) -- 使用Alt+Enter 在下一行插入新行並保持 Insert 模式 -nmap('i', '', 'o', { noremap = true, silent = true }) -nmap('i', '', 'O', { noremap = true, silent = true }) -- xterm-256color 吃不到shift +neomap('i', '', 'o', { noremap = true, silent = true }) +neomap('i', '', 'O', { noremap = true, silent = true }) -- xterm-256color 吃不到shift -- 啟用 Tab 縮排 -nmap('n', '', 'v>', { noremap = true, silent = true }) -nmap('n', '', 'v<', { noremap = true, silent = true }) -nmap('v', '', '>gv', { noremap = true, silent = true }) -nmap('v', '', '', '', { noremap = true, silent = true }) -- Insert Mode 下的 Shift+Tab 退縮排 +neomap('n', '', 'v>', { noremap = true, silent = true }) +neomap('n', '', 'v<', { noremap = true, silent = true }) +neomap('v', '', '>gv', { noremap = true, silent = true }) +neomap('v', '', '', '', { noremap = true, silent = true }) -- Insert Mode 下的 Shift+Tab 退縮排 -- 透過 v 選取整行縮排後,不取消選取整行 -nmap('v', '<', '', '>gv', { noremap = true, silent = true }) +neomap('v', '<', '', '>gv', { noremap = true, silent = true })