diff --git a/dot_config/exact_nvim/Readme.md b/dot_config/exact_nvim/Readme.md index 60e4753..8024d12 100644 --- a/dot_config/exact_nvim/Readme.md +++ b/dot_config/exact_nvim/Readme.md @@ -42,6 +42,7 @@ Yuan Neovim 備忘 ## 基本Command * :Neotree float git_status git_base=main +* :verbose map ## 資料夾結構 diff --git a/dot_config/exact_nvim/exact_lua/exact_config/keymaps.lua b/dot_config/exact_nvim/exact_lua/exact_config/keymaps.lua new file mode 100644 index 0000000..1709dec --- /dev/null +++ b/dot_config/exact_nvim/exact_lua/exact_config/keymaps.lua @@ -0,0 +1,69 @@ +-- 處理剪貼簿習慣對應(在Insert模式可使用慣用的快速鍵) +vim.opt.keymodel = "startsel" -- 啟用 Shift + 方向鍵選取功能 +vim.api.nvim_set_keymap('i', '', '"+pa', { noremap = true, silent = true }) -- Insert Mode 下的 Ctrl+V 貼上 +vim.api.nvim_set_keymap('v', '', '"+y', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+C 複製 +vim.api.nvim_set_keymap('v', '', '"+d', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+X 剪下 +vim.api.nvim_set_keymap('v', '', '"+p', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+V 貼上 + +-- 整行移動的快速鍵 +vim.api.nvim_set_keymap('n', '', ':m .+1==', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', ':m .-2==', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', ':m .+1==gi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', ':m .-2==gi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) +-- 使用 Alt+方向鍵 移動整行 +vim.api.nvim_set_keymap('n', '', ':m .+1==', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', ':m .-2==', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', ':m .+1==gi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', ':m .-2==gi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) +-- Ctrl+Alt+Shift+j/k 複製整行並向下/向上貼上 +vim.api.nvim_set_keymap('n', '', 'yyp', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', 'yyP', { noremap = true, silent = true }) +-- Ctrl+Alt+Shift+方向鍵 複製整行並向下/向上貼上 +vim.api.nvim_set_keymap('n', '', 'yyp', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', 'yyP', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', 'yypgi', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', 'yyPgi', { noremap = true, silent = true }) + +-- -- 處理不同終端的行為 +-- -- 在 Insert Mode 下的 Ctrl+Enter 在下一行插入新行並保持 Insert 模式 +-- local term = vim.fn.getenv("TERM") +-- local term_program = vim.fn.getenv("TERM_PROGRAM") +-- if term_program == "iTerm.app" then +-- -- iTerm 的快捷鍵設置 +-- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) +-- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) +-- elseif term == "alacritty" then +-- -- Alacritty 的快捷鍵設置 +-- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) +-- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) +-- elseif term == "xterm-256color" then +-- -- xterm-256color 的快捷鍵設置 +-- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) +-- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) +-- end + +-- 使用Ctrl(Alt)+Enter 在下一行插入新行並保持 Insert 模式 +-- 檢查 $TERM 或 $TERM_PROGRAM 的值 +-- Alacritty, GUI(Neovide, Goneovim) 皆可 +-- xterm-256color採用程式: Konsole, iTerm2, gnome-terminal 會有按鍵吃不到的問題,詳下述註解: +-- 使用Ctrl+Enter 在下一行插入新行並保持 Insert 模式(xterm-256color 吃不到) +vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) +-- 使用Alt+Enter 在下一行插入新行並保持 Insert 模式 +vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) -- xterm-256color 吃不到shift + +-- 啟用 Tab 縮排 +vim.api.nvim_set_keymap('n', '', 'v>', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', 'v<', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', '>gv', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('v', '', '', '', { noremap = true, silent = true }) -- Insert Mode 下的 Shift+Tab 退縮排 + +-- 透過 v 選取整行縮排後,不取消選取整行 +vim.api.nvim_set_keymap('v', '<', '', '>gv', { noremap = true, silent = true }) diff --git a/dot_config/exact_nvim/exact_lua/exact_config/options.lua b/dot_config/exact_nvim/exact_lua/exact_config/options.lua index 0fe4b13..46eaea8 100644 --- a/dot_config/exact_nvim/exact_lua/exact_config/options.lua +++ b/dot_config/exact_nvim/exact_lua/exact_config/options.lua @@ -22,73 +22,3 @@ vim.opt.colorcolumn = "80,120" -- 顯示編輯器建議寬度 vim.opt.scrolloff = 3 -- 捲動時保留 n 行彈性 require("config.listchars") -- 顯示行尾符號 vim.opt.list = true - --- 處理剪貼簿習慣對應(在Insert模式可使用慣用的快速鍵) -vim.opt.keymodel = "startsel" -- 啟用 Shift + 方向鍵選取功能 -vim.api.nvim_set_keymap('i', '', '"+pa', { noremap = true, silent = true }) -- Insert Mode 下的 Ctrl+V 貼上 -vim.api.nvim_set_keymap('v', '', '"+y', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+C 複製 -vim.api.nvim_set_keymap('v', '', '"+d', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+X 剪下 -vim.api.nvim_set_keymap('v', '', '"+p', { noremap = true, silent = true }) -- Visual Mode 下的 Ctrl+V 貼上 - --- 整行移動的快速鍵 -vim.api.nvim_set_keymap('n', '', ':m .+1==', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', '', ':m .-2==', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', ':m .+1==gi', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', ':m .-2==gi', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) --- 使用 Alt+方向鍵 移動整行 -vim.api.nvim_set_keymap('n', '', ':m .+1==', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', '', ':m .-2==', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', ':m .+1==gi', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', ':m .-2==gi', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', ":m '>+1gv=gv", { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', ":m '<-2gv=gv", { noremap = true, silent = true }) --- Ctrl+Alt+Shift+j/k 複製整行並向下/向上貼上 -vim.api.nvim_set_keymap('n', '', 'yyp', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', '', 'yyP', { noremap = true, silent = true }) --- Ctrl+Alt+Shift+方向鍵 複製整行並向下/向上貼上 -vim.api.nvim_set_keymap('n', '', 'yyp', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', '', 'yyP', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', 'yypgi', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', 'yyPgi', { noremap = true, silent = true }) - --- -- 處理不同終端的行為 --- -- 在 Insert Mode 下的 Ctrl+Enter 在下一行插入新行並保持 Insert 模式 --- local term = vim.fn.getenv("TERM") --- local term_program = vim.fn.getenv("TERM_PROGRAM") --- if term_program == "iTerm.app" then --- -- iTerm 的快捷鍵設置 --- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) --- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) --- elseif term == "alacritty" then --- -- Alacritty 的快捷鍵設置 --- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) --- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) --- elseif term == "xterm-256color" then --- -- xterm-256color 的快捷鍵設置 --- vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) --- vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) --- end - --- 使用Ctrl(Alt)+Enter 在下一行插入新行並保持 Insert 模式 --- 檢查 $TERM 或 $TERM_PROGRAM 的值 --- Alacritty, GUI(Neovide, Goneovim) 皆可 --- xterm-256color採用程式: Konsole, iTerm2, gnome-terminal 會有按鍵吃不到的問題,詳下述註解: --- 使用Ctrl+Enter 在下一行插入新行並保持 Insert 模式(xterm-256color 吃不到) -vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) --- 使用Alt+Enter 在下一行插入新行並保持 Insert 模式 -vim.api.nvim_set_keymap('i', '', 'o', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('i', '', 'O', { noremap = true, silent = true }) -- xterm-256color 吃不到shift - --- 啟用 Tab 縮排 -vim.api.nvim_set_keymap('n', '', 'v>', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', '', 'v<', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', '>gv', { noremap = true, silent = true }) -vim.api.nvim_set_keymap('v', '', '', '', { noremap = true, silent = true }) -- Insert Mode 下的 Shift+Tab 退縮排 - --- 透過 v 選取整行縮排後,不取消選取整行 -vim.api.nvim_set_keymap('v', '<', '', '>gv', { noremap = true, silent = true }) diff --git a/dot_config/exact_nvim/exact_lua/init.lua b/dot_config/exact_nvim/exact_lua/init.lua index 9f8d4e0..176f176 100644 --- a/dot_config/exact_nvim/exact_lua/init.lua +++ b/dot_config/exact_nvim/exact_lua/init.lua @@ -1,3 +1,4 @@ require("config.options") +require("config.keymaps") require("config.gui") require("config.lazy")