From 2aee2088c4e5ab20ecd0d75b83931ef859fb2581 Mon Sep 17 00:00:00 2001 From: js0ny Date: Wed, 15 Jan 2025 15:13:02 +0000 Subject: [PATCH] implements multiple todos --- .gitignore | 4 - bootstrap/set_symlink_win.ps1 | 41 ++++--- bootstrap/sh/load_plugins.zsh | 12 ++ common/remote.bashrc | 4 +- platforms/linux/zshrc | 2 +- tools/fish/conf.d/0init.fish | 2 + tools/fish/conf.d/alias.fish | 3 + tools/fish/conf.d/keymap.fish | 2 +- tools/nvim/init.lua | 17 --- tools/nvim/lazy-lock.json | 4 +- tools/nvim/lua/keymaps/buffer.lua | 55 +++++++++ tools/nvim/lua/keymaps/init.lua | 50 ++++---- tools/nvim/lua/keymaps/language.lua | 23 ---- tools/nvim/lua/keymaps/leaders.lua | 4 +- tools/nvim/lua/keymaps/utils.lua | 33 ++++++ tools/powershell/Prompt.ps1 | 88 --------------- tools/vscode/keybindings.json | 38 +++---- tools/vscode/vscode.former.vimrc | 169 ++++++++++++++++++++++++++++ tools/vscode/vscode.vimrc | 122 +------------------- tools/wezterm/wezterm.lua | 1 - tools/zsh/mod/alias.zsh | 2 +- tools/zsh/mod/config.zsh | 6 +- tools/zsh/mod/keymap.zsh | 2 - tools/zsh/zshenv | 2 +- 24 files changed, 355 insertions(+), 331 deletions(-) create mode 100644 bootstrap/sh/load_plugins.zsh create mode 100644 tools/nvim/lua/keymaps/buffer.lua create mode 100644 tools/nvim/lua/keymaps/utils.lua create mode 100644 tools/vscode/vscode.former.vimrc diff --git a/.gitignore b/.gitignore index 09a3366..cbaaf90 100644 --- a/.gitignore +++ b/.gitignore @@ -31,10 +31,6 @@ common/fzfrc .venv/ -platforms/win/komorebi/applications.json - gitconfig -*.exe - spacemacs/ diff --git a/bootstrap/set_symlink_win.ps1 b/bootstrap/set_symlink_win.ps1 index cc19bde..2919e93 100644 --- a/bootstrap/set_symlink_win.ps1 +++ b/bootstrap/set_symlink_win.ps1 @@ -9,29 +9,34 @@ $BASE_COMMON = Join-Path $DOTFILES "common" $BASE_TOOLS = Join-Path $DOTFILES "tools" $BASE_WIN = Join-Path $DOTFILES "platforms" "win" $linkDots = @{ - "$BASE_WIN\wslconfig" = "$Env:UserProfile\.wslconfig" - "$BASE_WIN\neovide.toml" = "$Env:AppData\neovide\config.toml" - "$BASE_WIN\vsvimrc" = "$Env:Vim\.vsvimrc" - "$BASE_WIN\komorebi" = "$Env:KOMOREBI_CONFIG_HOME" - "$BASE_COMMON\condarc.yaml" = "$Env:XDG_CONFIG_HOME\conda\.condarc" - "$BASE_COMMON\gitconfig" = "$Env:UserProfile\.gitconfig" - "$BASE_COMMON\glow.yaml" = "$Env:AppData\glow\glow.yml" - "$BASE_COMMON\haskeline" = "$Env:UserProfile\.haskeline" - "$BASE_COMMON\ideavimrc" = "$Env:XDG_CONFIG_HOME\ideavim\ideavimrc" - "$BASE_COMMON\lesskey" = "$Env:LessKeyIn" - "$BASE_COMMON\npmrc" = "$Env:NPM_CONFIG_USERCONFIG" - "$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config" - "$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc" - "$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini" - "$BASE_COMMON\vimrc" = "$Env:Vim\_vimrc" - "$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR" - "$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim" + "$BASE_WIN\wslconfig" = "$Env:UserProfile\.wslconfig" + "$BASE_WIN\neovide.toml" = "$Env:AppData\neovide\config.toml" + "$BASE_WIN\vsvimrc" = "$Env:Vim\.vsvimrc" + "$BASE_WIN\komorebi" = "$Env:KOMOREBI_CONFIG_HOME" + "$BASE_COMMON\condarc.yaml" = "$Env:XDG_CONFIG_HOME\conda\.condarc" + "$BASE_COMMON\gitconfig" = "$Env:UserProfile\.gitconfig" + "$BASE_COMMON\glow.yaml" = "$Env:AppData\glow\glow.yml" + "$BASE_COMMON\haskeline" = "$Env:UserProfile\.haskeline" + "$BASE_COMMON\ideavimrc" = "$Env:XDG_CONFIG_HOME\ideavim\ideavimrc" + "$BASE_COMMON\lesskey" = "$Env:LessKeyIn" + "$BASE_COMMON\npmrc" = "$Env:NPM_CONFIG_USERCONFIG" + "$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config" + "$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc" + "$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini" + "$BASE_COMMON\vimrc" = "$Env:Vim\_vimrc" + "$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR" + "$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim" } -# TODO: Auto create directories + foreach ($target in $linkDots.Keys) { $path = $linkDots[$target] + # Auto create directories (Untested) + $dir = Split-Path $path + if (!(Test-Path $dir)) { + New-Item -ItemType Directory -Path $dir -Force + } New-Item -ItemType SymbolicLink -Target $target -Path $path -Force } diff --git a/bootstrap/sh/load_plugins.zsh b/bootstrap/sh/load_plugins.zsh new file mode 100644 index 0000000..9ccafcb --- /dev/null +++ b/bootstrap/sh/load_plugins.zsh @@ -0,0 +1,12 @@ +set -e +ZDOTDIR="${ZDOTDIR:-$XDG_CONFIG_HOME/zsh}" +mkdir -p $ZDOTDIR/plugins + +#plugins=( +# "zsh-autosuggestions" +# "zsh-syntax-highlighting" +# "zsh-history-substring-search" +#) +git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git $ZDOTDIR/plugins/zsh-autosuggestions +git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git $ZDOTDIR/plugins/zsh-syntax-highlighting +git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git $ZDOTDIR/plugins/zsh-history-substring-search diff --git a/common/remote.bashrc b/common/remote.bashrc index 0811d77..ba05799 100644 --- a/common/remote.bashrc +++ b/common/remote.bashrc @@ -134,9 +134,7 @@ alias netl="netstat -tulnp" alias apt="sudo apt" alias apts="apt search" alias apti="sudo apt install" -aptr() { - sudo apt remove $1 || sudo apt autoremove -} +alias aptr="sudo apt remove" alias aptu="sudo apt upgrade && sudo apt update" alias l="ls -lah" diff --git a/platforms/linux/zshrc b/platforms/linux/zshrc index 5fa6f30..c846ac1 100644 --- a/platforms/linux/zshrc +++ b/platforms/linux/zshrc @@ -8,6 +8,6 @@ if [ -n "$WAYLAND_DISPLAY" ]; then alias clip="wl-copy" alias paste="wl-paste" -else [ -n "$DISPLAY" ]; then +elif [ -n "$DISPLAY" ]; then alias clip="xclip" fi diff --git a/tools/fish/conf.d/0init.fish b/tools/fish/conf.d/0init.fish index df4fc0d..1b7a47f 100644 --- a/tools/fish/conf.d/0init.fish +++ b/tools/fish/conf.d/0init.fish @@ -152,3 +152,5 @@ end # pnpm end test -d /opt/miniconda3 && source /opt/miniconda3/etc/fish/conf.d/conda.fish + +test -f /opt/miniconda3/etc/fish/conf.d/conda.fish && source /opt/miniconda3/etc/fish/conf.d/conda.fish diff --git a/tools/fish/conf.d/alias.fish b/tools/fish/conf.d/alias.fish index b685b89..96840bf 100644 --- a/tools/fish/conf.d/alias.fish +++ b/tools/fish/conf.d/alias.fish @@ -66,8 +66,11 @@ if command -v pacman > /dev/null abbr --add paci "sudo pacman -S" abbr --add pacr "sudo pacman -R" abbr --add pacu "sudo pacman -Syu" + abbr --add pacs "sudo pacman -Ss" end if test "$TERM" = "xterm-ghostty" -o "$TERM" = "xterm-kitty" abbr --add icat "kitten icat" +else if test "$TERM_PROGRAM" = "WezTerm" + abbr --add icat "wezterm imgcat" end diff --git a/tools/fish/conf.d/keymap.fish b/tools/fish/conf.d/keymap.fish index 2969ffe..3a9c09e 100644 --- a/tools/fish/conf.d/keymap.fish +++ b/tools/fish/conf.d/keymap.fish @@ -25,4 +25,4 @@ bind -M default 'i' forward-char bind -M default -m insert l repaint-mode bind -M default -m insert L beginning-of-line repaint-mode -# TODO: Add more key bindings here +fzf --fish | source diff --git a/tools/nvim/init.lua b/tools/nvim/init.lua index cb00770..820a3f2 100644 --- a/tools/nvim/init.lua +++ b/tools/nvim/init.lua @@ -5,25 +5,8 @@ @Date 2024-11-27 @Description neovim 配置文件 ]] --- 针对特定文件类型设置快捷键 -vim.api.nvim_create_autocmd("FileType", { - pattern = "markdown", -- 指定文件类型 - callback = function() - vim.api.nvim_buf_set_keymap( - 0, - "v", - "`", - 'c`"`', - { noremap = true, silent = true, desc = "Wrap selection with backticks" } - ) - end, -}) --- 加载配置 require("config.options") --- 加载插件 require("config.plugins") --- 加载主题 require("config.colorscheme") --- 加载键位映射 require("config.keymaps") diff --git a/tools/nvim/lazy-lock.json b/tools/nvim/lazy-lock.json index c8e732e..23c4ad7 100644 --- a/tools/nvim/lazy-lock.json +++ b/tools/nvim/lazy-lock.json @@ -26,7 +26,7 @@ "nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" }, "nvim-lspconfig": { "branch": "master", "commit": "339ccc81e08793c3af9b83882a6ebd90c9cc0d3b" }, "nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" }, - "nvim-treesitter": { "branch": "master", "commit": "984214ef8e4ca18d77639663319aabdfba89632f" }, + "nvim-treesitter": { "branch": "master", "commit": "f0c928dbe93533b7e35894a8f957f40150d1f663" }, "nvim-treesitter-context": { "branch": "master", "commit": "d0dd7ce5a9d0be1f28086e818e52fdc5c78975df" }, "nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" }, "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, @@ -34,7 +34,7 @@ "orgmode": { "branch": "master", "commit": "4e4a14a7dd613953eddacbc0f0ff1583817d7de1" }, "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, - "render-markdown.nvim": { "branch": "main", "commit": "d7b646f2e6136d963e1bd3abbb9e2ac3fa90837a" }, + "render-markdown.nvim": { "branch": "main", "commit": "f0eb5893556200e9f945c0f0ea3c83bbd20dd963" }, "telescope.nvim": { "branch": "master", "commit": "415af52339215926d705cccc08145f3782c4d132" }, "vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, diff --git a/tools/nvim/lua/keymaps/buffer.lua b/tools/nvim/lua/keymaps/buffer.lua new file mode 100644 index 0000000..709e3f8 --- /dev/null +++ b/tools/nvim/lua/keymaps/buffer.lua @@ -0,0 +1,55 @@ +local M = {} + +--- buffer that doesn't act as an editor or common buffer. +--- Use `q` to close the buffer. +local tmp_buf = { + "qf", -- quickfix + "crunner", -- code runner +} + +local term_buf = { + "floaterm", + "term", +} + +local term_mode = { + "n", + "i", + "t", +} + +local term_keymaps = { + { mode = term_mode, keys = "", cmd = ":FloatermToggle", desc = "Exit terminal mode" }, +} + +M.tmp_buf_keymaps = { + { mode = "n", keys = "q", cmd = "q", desc = "Close buffer" }, +} + +for _, buf in ipairs(tmp_buf) do + vim.api.nvim_create_autocmd("FileType", { + pattern = buf, + callback = function() + for _, map in ipairs(M.tmp_buf_keymaps) do + local opts = vim.tbl_extend("force", { buffer = 0 }, map.opts or {}) + vim.keymap.set(map.mode, map.keys, map.cmd, opts) + end + end, + }) +end + +vim.api.nvim_create_autocmd("BufEnter", { + pattern = "*", + callback = function() + -- 检查当前 buffer 的 buftype + local buftype = vim.bo.buftype + if buftype == "terminal" then + for _, map in ipairs(term_keymaps) do + local opts = vim.tbl_extend("force", { buffer = 0 }, map.opts or {}) + vim.keymap.set(map.mode, map.keys, map.cmd, opts) + end + end + end, +}) + +return M diff --git a/tools/nvim/lua/keymaps/init.lua b/tools/nvim/lua/keymaps/init.lua index 9c076cc..d6546bb 100644 --- a/tools/nvim/lua/keymaps/init.lua +++ b/tools/nvim/lua/keymaps/init.lua @@ -1,26 +1,20 @@ local M = {} local keymaps_user_command = require("keymaps.user-command") -local global_default_opts = { noremap = true, silent = true } -local global_default_mode = { "n" } --- local mode_arrow = { "n", "v", "o", "s", "x" } +local utils = require("keymaps.utils") -local function set_keymaps(maps, default_opts, default_mode) - for _, map in ipairs(maps) do - local opts = vim.tbl_extend("force", default_opts, map.opts or {}) - local mode = map.mode or default_mode - vim.keymap.set(mode, map.keys, map.cmd, opts) - end -end - -local keymaps_basic = require("keymaps.basic") local keymaps_nvim_tree_general = require("keymaps.nvim-tree").global -local keymaps_leader = require("keymaps.leaders") -local keymaps_lsp = require("keymaps.lspkeys") -set_keymaps(keymaps_basic, global_default_opts, global_default_mode) -set_keymaps(keymaps_nvim_tree_general, global_default_opts, global_default_mode) -set_keymaps(keymaps_leader, global_default_opts, global_default_mode) -set_keymaps(keymaps_lsp, global_default_opts, global_default_mode) +local keymaps_general = vim.tbl_extend("force", {}, require("keymaps.leaders"), require("keymaps.lspkeys")) +-- Tables cannot be merged since `mode` are set in some keymaps of `keymaps_basic` +local keymaps_basic = require("keymaps.basic") +local keymaps_buffer = require("keymaps.buffer") +-- local keymaps_leader = require("keymaps.leaders") +-- local keymaps_lsp = require("keymaps.lspkeys") + +utils.set_keymaps(keymaps_general) +utils.set_keymaps(keymaps_basic) +utils.set_keymaps(keymaps_nvim_tree_general) +utils.set_keymaps(keymaps_buffer) M.nvim_tree_keymaps = require("keymaps.nvim-tree").plugin @@ -36,17 +30,17 @@ function M.cmp_nvim_keymaps(map) } end -local function set_markdown_keymaps(bufnr) - local opts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set("v", "`", 'c`"`', opts) -end +-- local function set_markdown_keymaps(bufnr) +-- local opts = { noremap = true, silent = true, buffer = bufnr } +-- vim.keymap.set("v", "`", 'c`"`', opts) +-- end -vim.api.nvim_create_autocmd("FileType", { - pattern = "markdown", - callback = function() - set_markdown_keymaps(0) - end, -}) +-- vim.api.nvim_create_autocmd("FileType", { +-- pattern = "markdown", +-- callback = function() +-- set_markdown_keymaps(0) +-- end, +-- }) -- which-key.nvim require("keymaps.which") diff --git a/tools/nvim/lua/keymaps/language.lua b/tools/nvim/lua/keymaps/language.lua index 562a315..a2093b1 100644 --- a/tools/nvim/lua/keymaps/language.lua +++ b/tools/nvim/lua/keymaps/language.lua @@ -25,27 +25,4 @@ vim.api.nvim_create_autocmd("FileType", { end, }) ---- buffer that doesn't act as an editor or common buffer. ---- Use `q` to close the buffer. -local tmp_buf = { - "qf", -- quickfix - "crunner", -- code runner -} - -M.tmp_buf_keymaps = { - { mode = "n", keys = "q", cmd = "q", desc = "Close buffer" }, -} - -for _, buf in ipairs(tmp_buf) do - vim.api.nvim_create_autocmd("FileType", { - pattern = buf, - callback = function() - for _, map in ipairs(M.tmp_buf_keymaps) do - local opts = vim.tbl_extend("force", { buffer = 0 }, map.opts or {}) - vim.keymap.set(map.mode, map.keys, map.cmd, opts) - end - end, - }) -end - return M diff --git a/tools/nvim/lua/keymaps/leaders.lua b/tools/nvim/lua/keymaps/leaders.lua index 719eea9..89823ff 100644 --- a/tools/nvim/lua/keymaps/leaders.lua +++ b/tools/nvim/lua/keymaps/leaders.lua @@ -42,7 +42,7 @@ vim.api.nvim_create_user_command("Rename", renameCurrentBuffer, {}) local leader_mappings = { general = { - { keys = "", cmd = ":Telescope find_files", opts = { desc = "Find Files" } }, + { keys = "", cmd = ":Telescope find_files", opts = { desc = "Find Files" } }, { keys = "/", cmd = ":Telescope live_grep", opts = { desc = "Grep Files" } }, { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, { keys = "\\", cmd = ":vsplit", opts = { desc = "Split to right" } }, @@ -51,6 +51,8 @@ local leader_mappings = { { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, + { keys = "", cmd = "b#", opts = { desc = "Switch to last buffer" } }, + { keys = "!", cmd = ":FloatermToggle", opts = { desc = "" } }, }, b = { -- +buffer { keys = "a", cmd = ":Alpha", opts = { desc = "Dashboard" } }, diff --git a/tools/nvim/lua/keymaps/utils.lua b/tools/nvim/lua/keymaps/utils.lua new file mode 100644 index 0000000..66bb98e --- /dev/null +++ b/tools/nvim/lua/keymaps/utils.lua @@ -0,0 +1,33 @@ +local M = {} +-- local mode_arrow = { "n", "v", "o", "s", "x" } + +local default_opts = { noremap = true, silent = true } +local default_mode = { "n" } + +M.set_keymaps = function(maps) + for _, map in ipairs(maps) do + local opts = vim.tbl_extend("force", default_opts, map.opts or {}) + local mode = map.mode or default_mode + vim.keymap.set(mode, map.keys, map.cmd, opts) + end +end + +M.set_lang_keymaps = function(maps) + vim.api.create_autocmd("FileType", { + pattern = maps.filetype, + callback = function() + M.set_keymaps(maps.keymaps) + end, + }) +end + +M.set_buf_keymaps = function(maps) + vim.api.create_autocmd("BufEnter", { + pattern = maps.filetype, + callback = function() + M.set_keymaps(maps.keymaps) + end, + }) +end + +return M diff --git a/tools/powershell/Prompt.ps1 b/tools/powershell/Prompt.ps1 index da645ef..0fe1e0a 100644 --- a/tools/powershell/Prompt.ps1 +++ b/tools/powershell/Prompt.ps1 @@ -5,91 +5,3 @@ $ENV:STARSHIP_CONFIG = Join-Path $DOTFILES "tools" "starship" "starship_pwsh.toml" Invoke-Expression (&starship init powershell) - -# Below is the backup of original prompt function -# $promptTime = $true -# # $promptWeather = $false - -# function prompt { -# $prompt = "`e[35m" -# # Time -# if ($promptTime) { -# $promptTime = Get-Date -Format HH:mm -# $prompt += "`[$promptTime]" -# } -# # UserInfo -# $prompt += " $Env:Username @ $Env:Userdomain" -# # Directory -# $promptCurrentDirectory = $(PWD).Path -# $promptCurrentDirectory = $promptCurrentDirectory.Replace("$HOME", "~") -# $prompt += "`e[0m in `e[33m$promptCurrentDirectory " -# # Git -# if ($(git rev-parse --is-inside-work-tree 2> $null) -eq "true") { -# $prompt += "`e[32m`u{e702} $(git branch --show-current)" -# } -# # Conda -# if ( $Env:CONDA_PROMPT_MODIFIER ) { -# $promptConda = $Env:CONDA_PROMPT_MODIFIER.Replace("`(","").Replace(")","") -# $pythonVersion = $(python --version).Split(" ")[1] -# $prompt += " `e[33m`u{e73c} $promptConda $pythonVersion" -# } -# # Programming Language (by Get-ChildItem) -# ## Python -# if (Test-Path -Path "$PWD\pyproject.toml") { -# $pythonVersion = $(python --version).Split(" ")[1] -# $prompt += " `e[33m`u{e73c} $pythonVersion" -# } -# ## Node.js -# if (Test-Path -Path "$PWD\package.json") { -# $nodeVersion = $(node --version) -# $prompt += " `e[32m`u{e3a0} $nodeVersion" -# # Locked -# if (Test-Path -Path "$PWD\yarn.lock" || Test-Path -Path "$PWD\package-lock.json") { -# $prompt += "`u{f023}" -# } -# } -# ## .NET -# ### C Sharp -# if (Test-Path -Path "$PWD\*.csproj") { -# $dotnetVersion = $(dotnet --version) -# $prompt += " `e[34m`u{e648} $dotnetVersion" -# } -# ### F Sharp -# if (Test-Path -Path "$PWD\*.fsproj") { -# $dotnetVersion = $(dotnet --version) -# $prompt += " `e[35m`u{e65a} $dotnetVersion" -# } -# ## Rust -# if (Test-Path -Path "$PWD\Cargo.toml") { -# $rustVersion = $(cargo --version).Split(" ")[1] -# $prompt += " `e[31m`u{e7a8} $rustVersion" -# } -# ## Java -# if (Test-Path -Path "$PWD\pom.xml" || Test-Path -Path "$PWD\build.gradle") { -# $javaVersion = $(java --version).Split(" ")[1] -# $prompt += " `e[31m`u{e738} $javaVersion" -# } -# ## Makefile -# if (Test-Path -Path "$PWD\Makefile") { -# $prompt += " `e[32m`u{e673}" -# } -# if (Test-Path -Path "$PWD\CMakeLists.txt") { -# $prompt += " `e[32m `u{e61d}" -# } -# # Docker -# if (Test-Path -Path "$PWD\Dockerfile" || Test-Path -Path "$PWD\docker-compose.yml") { -# $prompt += " `e[33m`u{f21f}" -# } -# # Weather -# # if ( $global:promptWeather ) { -# # $prompt += $(Write-WeatherCurrent -City "Edinburgh" -Country "UK" -Unit "metric" -Inline -Apikey $Env:WEATHER_API_KEY) -# # } -# # Error on last command -# ## TODO: Seems does not work -# if ($?) { -# $prompt += "`n`e[32m PS > `e[0m" -# } else { -# $prompt += "`n`e[31m PS > `e[0m" -# } -# return $prompt -# } diff --git a/tools/vscode/keybindings.json b/tools/vscode/keybindings.json index 77fd805..6eb5571 100644 --- a/tools/vscode/keybindings.json +++ b/tools/vscode/keybindings.json @@ -380,37 +380,37 @@ // #region Terminal Control, use ^a as prefix / leader key // tmux-like terminal control { // prefix + x : kill terminal - "key": "ctrl+a x", + "key": "ctrl+q x", "command": "workbench.action.terminal.kill", "when": "terminalFocus" }, { // prefix + c : create new terminal - "key": "ctrl+a c", + "key": "ctrl+q c", "command": "workbench.action.terminal.new", "when": "terminalFocus" }, { // prefix + | : split terminal vertically - "key": "ctrl+a shift+\\", + "key": "ctrl+q shift+\\", "command": "workbench.action.terminal.split", "when": "terminalFocus" }, { // prefix + \ : split terminal vertically - "key": "ctrl+a \\", + "key": "ctrl+q \\", "command": "workbench.action.terminal.split", "when": "terminalFocus" }, { // prefix + / : search - "key": "ctrl+a /", + "key": "ctrl+q /", "command": "workbench.action.terminal.focusFind", "when": "terminalFocus" }, { // prefix + t : toggle terminal - "key": "ctrl+a t", + "key": "ctrl+q t", "command": "workbench.action.terminal.toggleTerminal", "when": "terminalFocus" }, { // prefix + ^a: show information - "key": "ctrl+a ctrl+a", + "key": "ctrl+q ctrl+q", "command": "workbench.action.terminal.focusHover", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, @@ -420,22 +420,22 @@ "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 1 : focus terminal 1 - "key": "ctrl+a 1", + "key": "ctrl+q 1", "command": "workbench.action.terminal.focusAtIndex1", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 2 : focus terminal 2 - "key": "ctrl+a 2", + "key": "ctrl+q 2", "command": "workbench.action.terminal.focusAtIndex2", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 3 : focus terminal 3 - "key": "ctrl+a 3", + "key": "ctrl+q 3", "command": "workbench.action.terminal.focusAtIndex3", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + g : Go to recent directory - "key": "ctrl+a g", + "key": "ctrl+q g", "command": "workbench.action.terminal.goToRecentDirectory", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, @@ -445,42 +445,42 @@ "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { // prefix + d : detach terminal - "key": "ctrl+a d", + "key": "ctrl+q d", "command": "workbench.action.terminal.detachSession", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { // prefix + a : attach to session - "key": "ctrl+a a", + "key": "ctrl+q a", "command": "workbench.action.terminal.attachToSession", "when": "terminalFocus" }, { - "key": "ctrl+a h", + "key": "ctrl+q h", "command": "workbench.action.terminal.focusPreviousPane", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { - "key": "ctrl+a i", + "key": "ctrl+q i", "command": "workbench.action.terminal.focusNextPane", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { - "key": "ctrl+a shift+H", + "key": "ctrl+q shift+H", "command": "workbench.action.terminal.resizePaneLeft", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { - "key": "ctrl+a shift+N", + "key": "ctrl+q shift+N", "command": "workbench.action.terminal.resizePaneDown", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { - "key": "ctrl+a shift+E", + "key": "ctrl+q shift+E", "command": "workbench.action.terminal.resizePaneUp", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { - "key": "ctrl+a shift+I", + "key": "ctrl+q shift+I", "command": "workbench.action.terminal.resizePaneRight", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" } diff --git a/tools/vscode/vscode.former.vimrc b/tools/vscode/vscode.former.vimrc new file mode 100644 index 0000000..16eb0d2 --- /dev/null +++ b/tools/vscode/vscode.former.vimrc @@ -0,0 +1,169 @@ +" ~/.config/vscode/vscode.vimrc +" New-Item -ItemType SymbolicLink -Path ~\.config\vscode\vscode.vimrc -Target ~\.dotfiles\vscode\vscode.vimrc +" ln -sf $DOTFILES/vscode/vscode.vimrc $XDG_CONFIG_HOME/vscode/vscode.vimrc +" And go to vscode vim setting: +"vim.vimrc.path": "$HOME/.config/vscode/vscode.vimrc", + + +" Arrow remap +noremap n j +noremap e k +noremap i l + +" Switch between tabs +noremap H :bprevious +noremap I :bnext + +noremap N 5j +noremap E 5k + +" Similar position to i +" The `noremap` implements text-object-like behavior in VSCodeVim +noremap l i +noremap L I +" ne[k]st +noremap k n +noremap K N +" [j]ump +noremap j e +noremap J E + +" Y to yank to end of line +noremap Y y$ + +" Define in settings.json, since this will remap under visual mode +" noremap :nohlsearch + +" 分词版本的w和b,支持中文,需要插件 +" 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap` +" Comment if you don't use cjk or the plugin +nmap w cjkWordHandler.cursorWordEndRight +nmap b cjkWordHandler.cursorWordStartLeft + +" keep selection after indent (define in settings.json) +" voremap < >gv + +" lsp +noremap gi editor.action.goToImplementation +noremap gpi editor.action.peekImplementation +noremap gd editor.action.goToDefinition +noremap gpd editor.action.peekDefinition +noremap gt editor.action.goToTypeDefinition +noremap gpt editor.action.peekTypeDefinition +noremap gh editor.action.showDefinitionPreviewHover + +noremap workbench.action.quickOpen +noremap / workbench.action.quickTextSearch +noremap : workbench.action.showCommands +noremap E workbench.view.explorer +noremap - workbench.action.splitEditorDown +noremap | workbench.action.splitEditorRight +noremap \ workbench.action.splitEditorRight + +" a : +ai/action +noremap aa inlineChat.start +noremap aA workbench.panel.chat +noremap ae workbench.action.chat.openEditSession + +" b : +buffer +noremap bb workbench.action.showAllEditors +noremap bd :bdelete +noremap bh :bprevious +noremap bi :bnext +noremap bp :bprevious +noremap bn :bnext + +" c : +code/compile +noremap cr code-runner.run +noremap cf editor.action.formatDocument +noremap c editor.action.trimTrailingWhitespace +noremap cs workbench.action.gotoSymbol +noremap cS workbench.action.showAllSymbols +noremap ce editor.action.marker.next +noremap cE editor.action.marker.prev +noremap cg editor.action.dirtydiff.next +noremap cG editor.action.dirtydiff.previous +noremap cR editor.action.rename + +" d : +debug + +" f : +file +noremap ff workbench.action.quickOpen +noremap fF workbench.view.search +noremap fc workbench.action.openSettings +noremap fC workbench.action.openFolderSettingsFile +noremap fe workbench.view.explorer +noremap fo openInExternalApp.open +noremap fr workbench.action.showAllEditorsByMostRecentlyUsed +" Can only rename tracked files +noremap fR git.rename +" noremap fs workbench.action.search.toggleQueryDetails +noremap ft workbench.action.terminal.toggleTerminal +noremap fx workbench.view.extensions + +" g : +git +noremap gg workbench.view.scm +noremap gS git.stageAll + +" h : +help + +" j : +jump +noremap jj workbench.action.gotoLine + +" l : +language (define in settings.json) + +" p : +project (requires Project Manager extension) +noremap pp projectManager.listProjects +noremap pP projectManager.listAnyProjects#sideBarAny +noremap pc projectManager.openSettings#sideBarAny +noremap pe projectManager.editProjects +noremap pf projectManager.addToFavorites +noremap pF projectManager.filterProjectsByTag +noremap pg projectManager.listGitProjects#sideBarGit +noremap pr workbench.action.openRecent +noremap ps projectManager.saveProject + +" q : +quit +noremap qq :quit +noremap qQ :qall +noremap Q :quit + +" r : +refactor + +" s : +search + +" t : +test +noremap tt testing.runAll +noremap tT testing.debugAll +noremap ta testing.runAll +noremap tA testing.debugAll +noremap tf testing.reRunFailedTests +noremap tF testing.debugFailedTests +noremap tl testing.reRunLastRun +noremap tL testing.debugLastRun +noremap tc testing.runCurrentTest +noremap tC testing.debugCurrentTest +noremap tx testing.cancelTestRun + +" u : +ui +noremap ui workbench.action.selectTheme +noremap uw editor.action.toggleWordWrap +noremap uz workbench.action.toggleZenMode + +" w : +write/window +noremap ww :write +noremap wa :wall +noremap wq :wq +noremap W :write +noremap wh workbench.action.focusLeftGroup +noremap wH workbench.action.splitEditorLeft +noremap wn workbench.action.focusBelowGroup +noremap wN workbench.action.splitEditorDown +noremap we workbench.action.focusAboveGroup +noremap wE workbench.action.splitEditorUp +noremap wi workbench.action.focusRightGroup +noremap wI workbench.action.splitEditorRight +noremap w- workbench.action.splitEditorDown +noremap w| workbench.action.splitEditorRight +noremap w\ workbench.action.splitEditorRight diff --git a/tools/vscode/vscode.vimrc b/tools/vscode/vscode.vimrc index ea2e0d2..2011909 100644 --- a/tools/vscode/vscode.vimrc +++ b/tools/vscode/vscode.vimrc @@ -4,6 +4,10 @@ " And go to vscode vim setting: "vim.vimrc.path": "$HOME/.config/vscode/vscode.vimrc", + +" Use VSpaceCode instead of +noremap vspacecode.space + " Arrow remap noremap n j noremap e k @@ -30,7 +34,8 @@ noremap J E " Y to yank to end of line noremap Y y$ -noremap :nohlsearch +" Define in settings.json, since this will remap under visual mode +" noremap :nohlsearch " 分词版本的w和b,支持中文,需要插件 " 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap` @@ -50,118 +55,3 @@ noremap gpd editor.action.peekDefinition noremap gt editor.action.goToTypeDefinition noremap gpt editor.action.peekTypeDefinition noremap gh editor.action.showDefinitionPreviewHover - -noremap workbench.action.quickOpen -noremap / workbench.action.quickTextSearch -noremap : workbench.action.showCommands -noremap E workbench.view.explorer -noremap - workbench.action.splitEditorDown -noremap | workbench.action.splitEditorRight -noremap \ workbench.action.splitEditorRight - -" a : +ai/action -noremap aa inlineChat.start -noremap aA workbench.panel.chat -noremap ae workbench.action.chat.openEditSession - -" b : +buffer -noremap bb workbench.action.showAllEditors -noremap bd :bdelete -noremap bh :bprevious -noremap bi :bnext -noremap bp :bprevious -noremap bn :bnext - -" c : +code/compile -noremap cr code-runner.run -noremap cf editor.action.formatDocument -noremap c editor.action.trimTrailingWhitespace -noremap cs workbench.action.gotoSymbol -noremap cS workbench.action.showAllSymbols -noremap ce editor.action.marker.next -noremap cE editor.action.marker.prev -noremap cg editor.action.dirtydiff.next -noremap cG editor.action.dirtydiff.previous -noremap cR editor.action.rename - -" d : +debug - -" f : +file -noremap ff workbench.action.quickOpen -noremap fF workbench.view.search -noremap fc workbench.action.openSettings -noremap fC workbench.action.openFolderSettingsFile -noremap fe workbench.view.explorer -noremap fo openInExternalApp.open -noremap fr workbench.action.showAllEditorsByMostRecentlyUsed -" Can only rename tracked files -noremap fR git.rename -" noremap fs workbench.action.search.toggleQueryDetails -noremap ft workbench.action.terminal.toggleTerminal -noremap fx workbench.view.extensions - -" g : +git -noremap gg workbench.view.scm -noremap gS git.stageAll - -" h : +help - -" j : +jump -noremap jj workbench.action.gotoLine - -" l : +language (define in settings.json) - -" p : +project (requires Project Manager extension) -noremap pp projectManager.listProjects -noremap pP projectManager.listAnyProjects#sideBarAny -noremap pc projectManager.openSettings#sideBarAny -noremap pe projectManager.editProjects -noremap pf projectManager.addToFavorites -noremap pF projectManager.filterProjectsByTag -noremap pg projectManager.listGitProjects#sideBarGit -noremap pr workbench.action.openRecent -noremap ps projectManager.saveProject - -" q : +quit -noremap qq :quit -noremap qQ :qall -noremap Q :quit - -" r : +refactor - -" s : +search - -" t : +test -noremap tt testing.runAll -noremap tT testing.debugAll -noremap ta testing.runAll -noremap tA testing.debugAll -noremap tf testing.reRunFailedTests -noremap tF testing.debugFailedTests -noremap tl testing.reRunLastRun -noremap tL testing.debugLastRun -noremap tc testing.runCurrentTest -noremap tC testing.debugCurrentTest -noremap tx testing.cancelTestRun - -" u : +ui -noremap ui workbench.action.selectTheme -noremap uw editor.action.toggleWordWrap -noremap uz workbench.action.toggleZenMode - -" w : +write/window -noremap ww :write -noremap wa :wall -noremap wq :wq -noremap W :write -noremap wh workbench.action.focusLeftGroup -noremap wH workbench.action.splitEditorLeft -noremap wn workbench.action.focusBelowGroup -noremap wN workbench.action.splitEditorDown -noremap we workbench.action.focusAboveGroup -noremap wE workbench.action.splitEditorUp -noremap wi workbench.action.focusRightGroup -noremap wI workbench.action.splitEditorRight -noremap w- workbench.action.splitEditorDown -noremap w| workbench.action.splitEditorRight -noremap w\ workbench.action.splitEditorRight diff --git a/tools/wezterm/wezterm.lua b/tools/wezterm/wezterm.lua index 8d47973..61c6e22 100644 --- a/tools/wezterm/wezterm.lua +++ b/tools/wezterm/wezterm.lua @@ -210,7 +210,6 @@ config.mouse_bindings = { --#region Environment config.set_environment_variables = { - WEZTERM = "true", -- for `icat` } --#endregion diff --git a/tools/zsh/mod/alias.zsh b/tools/zsh/mod/alias.zsh index 46d9786..25c12fc 100644 --- a/tools/zsh/mod/alias.zsh +++ b/tools/zsh/mod/alias.zsh @@ -83,7 +83,7 @@ if command -v apt > /dev/null; then alias apt="sudo apt" alias apti="sudo apt install" alias aptu="sudo apt update && sudo apt upgrade" - alias aptr="sudo apt autoremove && sudo apt remove" + alias aptr="sudo apt remove" fi if command -v brew > /dev/null; then diff --git a/tools/zsh/mod/config.zsh b/tools/zsh/mod/config.zsh index 77e710f..c62f4b5 100644 --- a/tools/zsh/mod/config.zsh +++ b/tools/zsh/mod/config.zsh @@ -38,8 +38,4 @@ done # Use `set -k` to mark leading `#` as a comment character set -k -# # TODO: Below should be reorganized -# export PATH=$HOME/.local/bin:$PATH - -# export NVM_DIR="$HOME/.config/nvm" -# [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +source <(fzf --zsh) diff --git a/tools/zsh/mod/keymap.zsh b/tools/zsh/mod/keymap.zsh index e1fbbd5..c0b6a80 100644 --- a/tools/zsh/mod/keymap.zsh +++ b/tools/zsh/mod/keymap.zsh @@ -37,9 +37,7 @@ bindkey '^B' backward-char bindkey '^P' up-line-or-history bindkey '^N' down-line-or-history bindkey '^R' history-incremental-search-backward -# TODO: did not test bindkey '^K' kill-line -bindkey '^X^E' edit-command-line # LEADER CONVENTION # ^X defines as a prefix key in shell diff --git a/tools/zsh/zshenv b/tools/zsh/zshenv index 7411ed5..f587e94 100644 --- a/tools/zsh/zshenv +++ b/tools/zsh/zshenv @@ -158,7 +158,7 @@ if command -v z > /dev/null; then fi # zsh .zcompdump # compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION" -# Vcpkg TODO: Move vcpkg path +# Vcpkg if command -v vcpkg > /dev/null; then export VCPKG_ROOT="$XDG_DATA_HOME"/vcpkg fi