From 40e939bfb497d7e677d8b003e5fe3d2eb7f0e197 Mon Sep 17 00:00:00 2001 From: js0ny Date: Fri, 19 Jul 2024 19:49:26 +0800 Subject: [PATCH] Initial Commit --- .gitconfig | 10 + .gitignore | 10 + .ideavimrc | 120 +++ .npmrc | 2 + LICENSE | 21 + desktop.ini | 6 + install_nvim.sh | 3 + linux/.bashrc | 168 +++++ linux/.zshrc | 139 ++++ linux/readme.md | 6 + mac/.zshrc | 139 ++++ mac/Microsoft.PowerShell_profile.ps1 | 95 +++ nvim/.gitignore | 8 + nvim/.neoconf.json | 15 + nvim/LICENSE | 201 +++++ nvim/README.md | 4 + nvim/init.lua | 2 + nvim/lazy-lock.json | 55 ++ nvim/lazyvim.json | 20 + nvim/lua/config/autocmds.lua | 3 + nvim/lua/config/keymaps.lua | 3 + nvim/lua/config/lazy.lua | 43 ++ nvim/lua/config/options.lua | 3 + nvim/lua/plugins/example.lua | 193 +++++ nvim/lua/plugins/fzf.lua | 228 ++++++ nvim/lua/plugins/wakatime.lua | 3 + nvim/stylua.toml | 3 + pip.conf | 2 + readme.md | 23 + set_mirror.ps1 | 6 + set_mirror.sh | 6 + vscode/hsnips/c.hsnips | 15 + vscode/hsnips/latex.hsnips | 1038 ++++++++++++++++++++++++++ vscode/hsnips/markdown.hsnips | 1009 +++++++++++++++++++++++++ vscode/hsnips/readme.md | 8 + vscode/hsnips/typst.hsnips | 133 ++++ vscode/readme.md | 5 + win/.wslconfig | 10 + win/Microsoft.PowerShell_profile.ps1 | 99 +++ win/WindowsTerminal.json | 468 ++++++++++++ win/neovide.toml | 16 + win/readme.md | 8 + 42 files changed, 4349 insertions(+) create mode 100644 .gitconfig create mode 100644 .gitignore create mode 100644 .ideavimrc create mode 100644 .npmrc create mode 100644 LICENSE create mode 100644 desktop.ini create mode 100644 install_nvim.sh create mode 100644 linux/.bashrc create mode 100644 linux/.zshrc create mode 100644 linux/readme.md create mode 100644 mac/.zshrc create mode 100644 mac/Microsoft.PowerShell_profile.ps1 create mode 100644 nvim/.gitignore create mode 100644 nvim/.neoconf.json create mode 100644 nvim/LICENSE create mode 100644 nvim/README.md create mode 100644 nvim/init.lua create mode 100644 nvim/lazy-lock.json create mode 100644 nvim/lazyvim.json create mode 100644 nvim/lua/config/autocmds.lua create mode 100644 nvim/lua/config/keymaps.lua create mode 100644 nvim/lua/config/lazy.lua create mode 100644 nvim/lua/config/options.lua create mode 100644 nvim/lua/plugins/example.lua create mode 100644 nvim/lua/plugins/fzf.lua create mode 100644 nvim/lua/plugins/wakatime.lua create mode 100644 nvim/stylua.toml create mode 100644 pip.conf create mode 100644 readme.md create mode 100644 set_mirror.ps1 create mode 100644 set_mirror.sh create mode 100644 vscode/hsnips/c.hsnips create mode 100644 vscode/hsnips/latex.hsnips create mode 100644 vscode/hsnips/markdown.hsnips create mode 100644 vscode/hsnips/readme.md create mode 100644 vscode/hsnips/typst.hsnips create mode 100644 vscode/readme.md create mode 100644 win/.wslconfig create mode 100644 win/Microsoft.PowerShell_profile.ps1 create mode 100644 win/WindowsTerminal.json create mode 100644 win/neovide.toml create mode 100644 win/readme.md diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..462426c --- /dev/null +++ b/.gitconfig @@ -0,0 +1,10 @@ +[user] + name = js0ny + email = json.y@outlook.com +[core] + editor = vim +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e339fd --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.private.env.sh +.private.env.ps1 +nvim/tt.* +nvim/.tests +nvim/doc/tags +nvim/debug +nvim/.repro +nvim/foo.* +nvim/*.log +nvim/data diff --git a/.ideavimrc b/.ideavimrc new file mode 100644 index 0000000..9a59316 --- /dev/null +++ b/.ideavimrc @@ -0,0 +1,120 @@ +""" Basic Configs """ +let mapleader = " " " set to + +""" Options """ +" search for actions: :actionlist + +"" Vim Compat "" +set clipboard=unnamedplus,unnamed,ideaput " integrate with system clipboard +set gdefault " substitute all occurrences in line per default +set history=4096 " keep x lines of command line history +set hlsearch +set ignorecase +set incsearch +set keymodel=startsel,stopsel +set matchpairs+=<:> +set showcmd +set smartcase " no ignore case when pattern is uppercase +set wrapscan " searches wrap around the end of the file + +"" IDE Settings "" +set scrolloff=5 +set sidescrolloff=10 + +"" IDE Features "" +set relativenumber " Hybrid Line Number shown + +"" IdeaVim Only "" +set ideajoin +set ideastatusicon=enabled + +""" Plugins """ + +Plug 'justinmk/vim-sneak' +Plug 'preservim/nerdtree' +Plug 'tpope/vim-surround' +Plug 'tpope/vim-commentary' +Plug 'terryma/vim-multiple-cursors' +Plug 'machakann/vim-highlightedyank' + +""" Keybindings """ + +"" edit ideavim config v + "" +nnoremap vv :e ~/.ideavimrc +nnoremap vr :source ~/.ideavimrc + +"" NERDTree "" +nnoremap e :NERDTreeToggle + +"" Miscs "" +nnoremap : :action GotoAction + +"" AI Related a + "" +nnoremap ac :action copilot.chat.show +nnoremap ad :action copilot.disabelCopilot +nnoremap ae :action copilot.enabelCopilot +nnoremap ai :action copilot.openCopilot + +"" Codes Action c + "" +nnoremap cf :action ReformatCode +nnoremap cs :action GotoSymbol + +"" Project Action p + "" +nnoremap pr :action Run +nnoremap pd :action Debug +nnoremap pb :action Build + +"" Files Action f + "" +nnoremap fe :NERDTreeToggle +nnoremap ft :action ActivateTerminalToolWindow + +"" Tab Actions + "" +nnoremap :action Switcher + +"" Collapse and Expand z + "" +nnoremap zi :action ExpandCollapseToggleAction +nnoremap zc :action CollapseRegion +nnoremap zC :action CollapseRegionRecursively +nnoremap zM :action CollapseAll +nnoremap zo :action ExpandRegion +nnoremap zO :action ExpandRegionRecursively +nnoremap zR :action ExpandAll + +"" don't lose selection when indenting "" +vnoremap < >gv +vnoremap = =gv + + +nnoremap a :action FindInPath +nnoremap gd :action GotoDeclaration +nnoremap gtd :action GotoTypeDeclaration +nnoremap gtD :action QuickTypeDefinition +nnoremap gr :action ShowUsages +nnoremap gi :action GotoImplementation +nnoremap gpi :action QuickImplementations +nnoremap gs :action GotoSuperMethod +nnoremap ga :action +nnoremap gq :action ShowIntentionActions +nnoremap ge :action GotoNextError + +nnoremap :action ParameterInfo +inoremap :action ParameterInfo + +"" Refractor r + "" + +nnoremap ri :action Inline +nnoremap rr :action RenameElement +nnoremap rev :action IntroduceVariable +vnoremap rev :action IntroduceVariable +nnoremap rem :action ExtractMethod +vnoremap rem :action ExtractMethod +nnoremap rm :action Move +nnoremap ro :action OptimizeImports +nnoremap rG :action Generate + +""" Handling Ctrls """ + +sethandler n-v:vim i:ide +sethandler a:ide +sethandler > a:ide \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..1cf6c9c --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +proxy=http://127.0.0.1:7890 +https-proxy=http://127.0.0.1:7890 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c6acddc --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 js0ny + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..ba370e8 --- /dev/null +++ b/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=C:\Windows\System32\SHELL32.dll,137 +[ViewState] +Mode= +Vid= +FolderType=Documents diff --git a/install_nvim.sh b/install_nvim.sh new file mode 100644 index 0000000..62d5514 --- /dev/null +++ b/install_nvim.sh @@ -0,0 +1,3 @@ +curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz +sudo rm -rf /opt/nvim +sudo tar -C /opt -xzf nvim-linux64.tar.gz \ No newline at end of file diff --git a/linux/.bashrc b/linux/.bashrc new file mode 100644 index 0000000..d2560c5 --- /dev/null +++ b/linux/.bashrc @@ -0,0 +1,168 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in +*i*) ;; +*) return ;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in +xterm-color | *-256color) color_prompt=yes ;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm* | rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +. "$HOME/.cargo/env" + +export PATH="/opt/nvim-linux64/bin:$PATH" + +set -o vi + +date + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('/home/citoyen/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "/home/citoyen/miniconda3/etc/profile.d/conda.sh" ]; then + . "/home/citoyen/miniconda3/etc/profile.d/conda.sh" + else + export PATH="/home/citoyen/miniconda3/bin:$PATH" + fi +fi +unset __conda_setup +# <<< conda initialize <<< + + +alias g++='g++ -std=c++2b' +alias nvim=/opt/nvim-linux64/bin/nvim +alias python=python3 +alias v=nvim +alias c=code +alias bashcfg="nvim ~/.bashrc" +alias zshcfg="nvim ~/.zshrc" +alias nvimrc="nvim ~/.config/nvim/" + +set -o vi + +mcd () +{ + mkdir -p -- "$1" && cd -P -- "$1" +} +cdls(){ + cd $1 + ls +} +wsp(){ + cd /home/citoyen/WSLFdr/ + ls +} +doku() { + cd ~/doku/ && ls +} +source ~/.private.env \ No newline at end of file diff --git a/linux/.zshrc b/linux/.zshrc new file mode 100644 index 0000000..83843a3 --- /dev/null +++ b/linux/.zshrc @@ -0,0 +1,139 @@ +### Variables ### + +export DOTFILES="$HOME/.dotfiles" + +### ZSH Config ### +set -o vi +export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH +export ZSH="$HOME/.oh-my-zsh" +ZSH_THEME="avit" +# DISABLE_MAGIC_FUNCTIONS="true" +# DISABLE_LS_COLORS="true" +# DISABLE_AUTO_TITLE="true" +# ENABLE_CORRECTION="true" +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" +HIST_STAMPS="yyyy-mm-dd" +plugins=(git web-search jsontools z vi-mode zsh-syntax-highlighting zsh-autosuggestions) +source $ZSH/oh-my-zsh.sh + +# export MANPATH="/usr/local/man:$MANPATH" +# export LANG= "en_US.UTF-8" +export ARCHFLAGS="-arch x86_64" + +### Navigation ### + +# Relative navigation + +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../.." +alias .....="cd ../../../.." +alias ......="cd ../../../../.." + +# Absolute navigation + +alias doku="cd ~/doku && ls" +alias dotfiles="cd $DOTFILES && ls" + +### Aliases ### + +# `alias` to list all aliases + +# PowerShell Equivalent # + +alias ni=touch +alias cls=clear + +# Dev # + +alias g++='g++ -std=c++2b' # Set the default C++ standard to C++20 +alias gcc='gcc -std=c99' # Set the default C standard to C99 +alias cl='clang' +alias cl++='clang++' +alias python=python3 # Set the default Python version to Python 3 +alias py=python # Alias for Python +alias bashcfg="nvim ~/.bashrc" +alias zshcfg="nvim ~/.zshrc" +alias shcfg=zshcfg +alias nvimrc="nvim ~/.config/nvim/" +alias ohmyzsh="code ~/.oh-my-zsh" + +# Editors # + +alias v=nvim +alias gvi=neovide +alias c=code + +# Misc # + +alias cf=cfiles + +### Functions ### + +mcd() { + mkdir -p -- "$1" && cd -P -- "$1" +} +cdls(){ + cd $1 && ls +} +tc(){ + touch $1 && code $1 +} +tv(){ + touch $1 && nvim $1 +} + +source ~/.private.env.sh + +### WSL Options ### + +# WSL open +open() { + local target=$1 + + if command -v explorer.exe > /dev/null; then + explorer.exe "$target" + else + command open "$target" + fi +} + +# WSL Neovide +neovide() { + local target=$1 + + if command -v neovide.exe > /dev/null; then + neovide.exe "$target" + else + if command -v neovide > /dev/null; then + neovide "$target" + else + echo "neovide is not installed" + fi + fi +} + +### Misc ### + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('$HOME/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then + . "$HOME/miniconda3/etc/profile.d/conda.sh" + else + export PATH="$HOME/miniconda3/bin:$PATH" + fi +fi +unset __conda_setup +# <<< conda initialize <<< diff --git a/linux/readme.md b/linux/readme.md new file mode 100644 index 0000000..d7768a6 --- /dev/null +++ b/linux/readme.md @@ -0,0 +1,6 @@ +# Configs for Linux + +## Navigator + +- [Bash Config](./.bashrc) +- [Zsh Config](./.zshrc) \ No newline at end of file diff --git a/mac/.zshrc b/mac/.zshrc new file mode 100644 index 0000000..84a6375 --- /dev/null +++ b/mac/.zshrc @@ -0,0 +1,139 @@ +### Variables ### + +export DOTFILES="$HOME/.dotfiles" + +### ZSH Config ### +set -o vi +export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH +export ZSH="$HOME/.oh-my-zsh" +ZSH_THEME="avit" +# DISABLE_MAGIC_FUNCTIONS="true" +# DISABLE_LS_COLORS="true" +# DISABLE_AUTO_TITLE="true" +# ENABLE_CORRECTION="true" +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" +HIST_STAMPS="yyyy-mm-dd" +plugins=(git web-search jsontools z vi-mode zsh-syntax-highlighting zsh-autosuggestions) +source $ZSH/oh-my-zsh.sh + +# export MANPATH="/usr/local/man:$MANPATH" +# export LANG= "en_US.UTF-8" +export ARCHFLAGS="-arch arm64" + +### Navigation ### + +# Relative navigation + +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../.." +alias .....="cd ../../../.." +alias ......="cd ../../../../.." + +# Absolute navigation + +alias doku="cd ~/doku && ls" +alias dotfiles="cd $DOTFILES && ls" + +### Aliases ### + +# `alias` to list all aliases + +# PowerShell Equivalent # + +alias ni=touch +alias cls=clear + +# Dev # + +alias g++='g++ -std=c++2b' # Set the default C++ standard to C++20 +alias gcc='gcc -std=c99' # Set the default C standard to C99 +alias cl='clang' +alias cl++='clang++' +alias python=python3 # Set the default Python version to Python 3 +alias py=python # Alias for Python +alias bashcfg="nvim ~/.bashrc" +alias zshcfg="nvim ~/.zshrc" +alias shcfg=zshcfg +alias nvimrc="nvim ~/.config/nvim/" +alias ohmyzsh="code ~/.oh-my-zsh" + +# Editors # + +alias v=nvim +alias gvi=neovide +alias c=code + +# Misc # + +alias cf=cfiles + +### Functions ### + +mcd() { + mkdir -p -- "$1" && cd -P -- "$1" +} +cdls(){ + cd $1 && ls +} +tc(){ + touch $1 && code $1 +} +tv(){ + touch $1 && nvim $1 +} + +source ~/.private.env.sh + +### WSL Options ### + +# WSL open +open() { + local target=$1 + + if command -v explorer.exe > /dev/null; then + explorer.exe "$target" + else + command open "$target" + fi +} + +# WSL Neovide +neovide() { + local target=$1 + + if command -v neovide.exe > /dev/null; then + neovide.exe "$target" + else + if command -v neovide > /dev/null; then + neovide "$target" + else + echo "neovide is not installed" + fi + fi +} + +### Misc ### + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('$HOME/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then + . "$HOME/miniconda3/etc/profile.d/conda.sh" + else + export PATH="$HOME/miniconda3/bin:$PATH" + fi +fi +unset __conda_setup +# <<< conda initialize <<< diff --git a/mac/Microsoft.PowerShell_profile.ps1 b/mac/Microsoft.PowerShell_profile.ps1 new file mode 100644 index 0000000..766a9b5 --- /dev/null +++ b/mac/Microsoft.PowerShell_profile.ps1 @@ -0,0 +1,95 @@ +### Variables ### + +$DOTFILES = "$HOME\.dotfiles" + +### PSReadLine ### + +Set-PSReadLineOption -EditMode vi # Vi Keybindings +Set-PSReadLineOption -PredictionViewStyle ListView # Prediction View Style +Set-PSReadLineOption -PredictionSource HistoryAndPlugin # Prediction Source +Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > " # Continuation Prompt + +### Keybindings ### + +Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord + +### Navigator ### + +# Relative navigation # + +# ${function:~} = { Set-Location -Path ~ } cd is better +${function:...} = { Set-Location -Path ..\.. } +${function:....} = { Set-Location -Path ..\..\.. } +${function:.....} = { Set-Location -Path ..\..\..\.. } +${function:......} = { Set-Location -Path ..\..\..\..\.. } + +# Absolute navigation # + +${function:docs} = { Set-Location -Path ~\Documents } +${function:down} = { Set-Location -Path ~\Downloads } +${function:dt} = { Set-Location -Path ~\Desktop } +${function:mytmp} = { Set-Location -Path ~\Temp } +${function:one} = { Set-Location -Path ~\OneDrive } +${function:doku} = { Set-Location -Path ~\doku && Get-ChildItem } + +### Aliases ### + +# PowerShell Equivalents # + +Set-Alias "touch" "New-Item" +Set-Alias "ll" "Get-ChildItem" +Set-Alias "curl" "Invoke-WebRequest" +Set-Alias "cd" "Set-Location" +Set-Alias "man" "Get-Help" +Set-Alias "kill" "Stop-Process" + +# Dev # + +${function:shcfg} = { code $PROFILE } +${function:zshcfg} = { nvim ~/.zshrc } +${function:bashcfg} = { nvim ~/.bashrc } +${function:reload} = { Invoke-Expression $PROFILE } +${function:csi} = { dotnet script } +${function:pulldots} = { Set-Location -Path $DOTFILES && git pull } +Set-Alias "pwshcfg" "shcfg" +Set-Alias "python3" "python" +Set-Alias "pip3" "pip" +Set-Alias "py" "python" +Set-Alias "cl" "clang" +Set-Alias "cl++" "clang++" +Set-Alias "clang" "clang -std=c99" +Set-Alias "clang++" "clang++ -std=c++2b" + +# Editors # + +Set-Alias "v" "nvim" +Set-Alias "c" "code" +Set-Alias "gvi" "neovide" + +# Miscs # + +Set-Alias mcd CreateAndSet-Directory + +### Functions ### + +function tc { param ( [string] $filename) + New-Item $filename && code $filename +} + +function tv { param ( [string] $filename) + New-Item $filename && nvim $filename +} + +function cdls { param( [string] $dirname) + Set-Location $dirname && Get-ChildItem +} + + + +### Modules ### + +Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58 + +Import-Module CompletionPredictor + +### Misc ### \ No newline at end of file diff --git a/nvim/.gitignore b/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/nvim/.neoconf.json b/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/nvim/LICENSE b/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,4 @@ +# πŸ’€ LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..2514f9e --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,2 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json new file mode 100644 index 0000000..afb862b --- /dev/null +++ b/nvim/lazy-lock.json @@ -0,0 +1,55 @@ +{ + "CopilotChat.nvim": { "branch": "canary", "commit": "6f143f210efd1f16d97c077b945c76b7d5fd0f8b" }, + "LazyVim": { "branch": "main", "commit": "9eefc6a3aaeb1a0742e676ba32c6963d649d3ca9" }, + "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, + "bufferline.nvim": { "branch": "main", "commit": "aa16dafdc642594c7ade7e88d31a6119feb189d6" }, + "catppuccin": { "branch": "main", "commit": "7946d1a195c66fed38b3e34f9fa8e0c5a2da0700" }, + "clangd_extensions.nvim": { "branch": "main", "commit": "a8500531c4ed3a207e744a374ea038744a0f93eb" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "conform.nvim": { "branch": "master", "commit": "1d1362b0261d06a0b91872e916c172320bbb988a" }, + "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, + "copilot.lua": { "branch": "master", "commit": "86537b286f18783f8b67bccd78a4ef4345679625" }, + "dashboard-nvim": { "branch": "master", "commit": "fabf5feec96185817c732d47d363f34034212685" }, + "flash.nvim": { "branch": "main", "commit": "25ba3f4d1e0b080213b39518ebcfbb693a23c957" }, + "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" }, + "fzf-lua": { "branch": "main", "commit": "eb63a4bbfd203942737f76d4cf5424f6fb016a9d" }, + "gitsigns.nvim": { "branch": "main", "commit": "d9f997dba757be01434ed3538d202f88286df476" }, + "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" }, + "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, + "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" }, + "lazydev.nvim": { "branch": "main", "commit": "02f1055a777264d4b65896051ec28d0f322f7932" }, + "lualine.nvim": { "branch": "master", "commit": "544dd1583f9bb27b393f598475c89809c4d5e86b" }, + "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, + "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, + "mini.ai": { "branch": "main", "commit": "45587078f323eaf41b9f701bbc04f8d1ab008979" }, + "mini.icons": { "branch": "main", "commit": "9d9d21868841ce0a26fb2b8ef0eba7021055145c" }, + "mini.pairs": { "branch": "main", "commit": "927d19cbdd0e752ab1c7eed87072e71d2cd6ff51" }, + "neo-tree.nvim": { "branch": "main", "commit": "206241e451c12f78969ff5ae53af45616ffc9b72" }, + "noice.nvim": { "branch": "main", "commit": "3b5ea551448bd769976428458c11ae3f5849b7ba" }, + "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, + "nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" }, + "nvim-jdtls": { "branch": "master", "commit": "6bfd1591583b02e742fc3a2f43393c4ea3b6d3c7" }, + "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, + "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, + "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" }, + "nvim-spectre": { "branch": "master", "commit": "9a28f926d3371b7ef02243cbbb653a0478d06e31" }, + "nvim-treesitter": { "branch": "master", "commit": "a6b2f4ecc8a47011868632142a9b687d7e0f9aaf" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, + "nvim-ts-autotag": { "branch": "main", "commit": "26c365cc7d58d0da17b13e747855d331eb26fcf0" }, + "omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "aad7bf06b4ca0de816b919d475a75b30f5f62b61" }, + "persistence.nvim": { "branch": "main", "commit": "40a137dd9240c9c6760c53df48d2b155f52c252b" }, + "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, + "todo-comments.nvim": { "branch": "main", "commit": "96fee098a90e7c09c9811aa7df71d773ba8b9b53" }, + "tokyonight.nvim": { "branch": "main", "commit": "6adfcde66e8af2f22dd5d76060980abd8daa0df8" }, + "trouble.nvim": { "branch": "main", "commit": "bf99ea71a39e322336b7f8be965f86dbf5c65540" }, + "ts-comments.nvim": { "branch": "main", "commit": "80eec3b9663ac3c4743b584f361099b061d0a9e5" }, + "vim-wakatime": { "branch": "master", "commit": "3cb40867cb5a3120f9bef76eff88edc7f1dc1a23" }, + "vimtex": { "branch": "master", "commit": "80c9bc179784c30192d482741a43f176c859daa1" }, + "which-key.nvim": { "branch": "main", "commit": "b55a568ae69724e334aec3ef291ea4e1768ba47a" }, + "yanky.nvim": { "branch": "main", "commit": "73215b77d22ebb179cef98e7e1235825431d10e4" } +} \ No newline at end of file diff --git a/nvim/lazyvim.json b/nvim/lazyvim.json new file mode 100644 index 0000000..c4ee670 --- /dev/null +++ b/nvim/lazyvim.json @@ -0,0 +1,20 @@ +{ + "extras": [ + "lazyvim.plugins.extras.coding.copilot", + "lazyvim.plugins.extras.coding.copilot-chat", + "lazyvim.plugins.extras.coding.luasnip", + "lazyvim.plugins.extras.coding.yanky", + "lazyvim.plugins.extras.editor.fzf", + "lazyvim.plugins.extras.lang.clangd", + "lazyvim.plugins.extras.lang.java", + "lazyvim.plugins.extras.lang.markdown", + "lazyvim.plugins.extras.lang.omnisharp", + "lazyvim.plugins.extras.lang.python", + "lazyvim.plugins.extras.lang.tex", + "lazyvim.plugins.extras.util.dot" + ], + "news": { + "NEWS.md": "6077" + }, + "version": 6 +} \ No newline at end of file diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..27e9e06 --- /dev/null +++ b/nvim/lua/config/autocmds.lua @@ -0,0 +1,3 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- Add any additional autocmds here diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..2c134f7 --- /dev/null +++ b/nvim/lua/config/keymaps.lua @@ -0,0 +1,3 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..4aeb4bd --- /dev/null +++ b/nvim/lua/config/lazy.lua @@ -0,0 +1,43 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + +if not (vim.uv or vim.loop).fs_stat(lazypath) then + -- bootstrap lazy.nvim + -- stylua: ignore + vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { enabled = true }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/nvim/lua/config/options.lua b/nvim/lua/config/options.lua new file mode 100644 index 0000000..3ea1454 --- /dev/null +++ b/nvim/lua/config/options.lua @@ -0,0 +1,3 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here diff --git a/nvim/lua/plugins/example.lua b/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..4ad9825 --- /dev/null +++ b/nvim/lua/plugins/example.lua @@ -0,0 +1,193 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, "πŸ˜„") + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/nvim/lua/plugins/fzf.lua b/nvim/lua/plugins/fzf.lua new file mode 100644 index 0000000..4b56440 --- /dev/null +++ b/nvim/lua/plugins/fzf.lua @@ -0,0 +1,228 @@ +return { + { + "ibhagwan/fzf-lua", + cmd = "FzfLua", + opts = function(_, opts) + local config = require("fzf-lua.config") + local actions = require("fzf-lua.actions") + + -- Quickfix + config.defaults.keymap.fzf["ctrl-q"] = "select-all+accept" + config.defaults.keymap.fzf["ctrl-u"] = "half-page-up" + config.defaults.keymap.fzf["ctrl-d"] = "half-page-down" + config.defaults.keymap.fzf["ctrl-x"] = "jump" + config.defaults.keymap.fzf["ctrl-f"] = "preview-page-down" + config.defaults.keymap.fzf["ctrl-b"] = "preview-page-up" + config.defaults.keymap.builtin[""] = "preview-page-down" + config.defaults.keymap.builtin[""] = "preview-page-up" + + -- Trouble + if LazyVim.has("trouble.nvim") then + config.defaults.actions.files["ctrl-t"] = require("trouble.sources.fzf").actions.open + end + + -- Toggle root dir / cwd + config.defaults.actions.files["ctrl-r"] = function(_, ctx) + local o = vim.deepcopy(ctx.__call_opts) + o.root = o.root == false + o.cwd = nil + o.buf = ctx.__CTX.bufnr + LazyVim.pick.open(ctx.__INFO.cmd, o) + end + config.defaults.actions.files["alt-c"] = config.defaults.actions.files["ctrl-r"] + config.set_action_helpstr(config.defaults.actions.files["ctrl-r"], "toggle-root-dir") + + -- use the same prompt for all + local defaults = require("fzf-lua.profiles.default-title") + local function fix(t) + t.prompt = t.prompt ~= nil and "ο„… " or nil + for _, v in pairs(t) do + if type(v) == "table" then + fix(v) + end + end + end + fix(defaults) + + local img_previewer ---@type string[]? + for _, v in ipairs({ + { cmd = "ueberzug", args = {} }, + { cmd = "chafa", args = { "{file}", "--format=symbols" } }, + { cmd = "viu", args = { "-b" } }, + }) do + if vim.fn.executable(v.cmd) == 1 then + img_previewer = vim.list_extend({ v.cmd }, v.args) + break + end + end + + return vim.tbl_deep_extend("force", defaults, { + fzf_colors = true, + fzf_opts = { + ["--no-scrollbar"] = false, + }, + defaults = { + -- formatter = "path.filename_first", + formatter = "path.dirname_first", + }, + previewers = { + builtin = { + extensions = { + ["png"] = img_previewer, + ["jpg"] = img_previewer, + ["jpeg"] = img_previewer, + ["gif"] = img_previewer, + ["webp"] = img_previewer, + }, + ueberzug_scaler = "fit_contain", + }, + }, + -- Custom LazyVim option to configure vim.ui.select + ui_select = function(fzf_opts, items) + return vim.tbl_deep_extend("force", fzf_opts, { + prompt = "ο„… ", + winopts = { + title = " " .. vim.trim((fzf_opts.prompt or "Select"):gsub("%s*:%s*$", "")) .. " ", + title_pos = "center", + }, + }, fzf_opts.kind == "codeaction" and { + winopts = { + layout = "vertical", + -- height is number of items minus 15 lines for the preview, with a max of 80% screen height + height = math.floor(math.min(vim.o.lines * 0.8 - 16, #items + 2) + 0.5) + 16, + width = 0.5, + preview = not vim.tbl_isempty(LazyVim.lsp.get_clients({ bufnr = 0, name = "vtsls" })) and { + layout = "vertical", + vertical = "down:15,border-top", + hidden = "hidden", + } or { + layout = "vertical", + vertical = "down:15,border-top", + }, + }, + } or { + winopts = { + width = 0.5, + -- height is number of items, with a max of 80% screen height + height = math.floor(math.min(vim.o.lines * 0.8, #items + 2) + 0.5), + }, + }) + end, + winopts = { + width = 0.8, + height = 0.8, + row = 0.5, + col = 0.5, + preview = { + scrollchars = { "┃", "" }, + }, + }, + files = { + cwd_prompt = false, + actions = { + ["alt-i"] = { actions.toggle_ignore }, + ["alt-h"] = { actions.toggle_hidden }, + }, + }, + grep = { + actions = { + ["alt-i"] = { actions.toggle_ignore }, + ["alt-h"] = { actions.toggle_hidden }, + }, + }, + lsp = { + symbols = { + symbol_hl = function(s) + return "TroubleIcon" .. s + end, + symbol_fmt = function(s) + return s:lower() .. "\t" + end, + child_prefix = false, + }, + code_actions = { + previewer = vim.fn.executable("delta") == 1 and "codeaction_native" or nil, + }, + }, + }) + end, + config = function(_, opts) + require("fzf-lua").setup(opts) + end, + init = function() + LazyVim.on_very_lazy(function() + vim.ui.select = function(...) + require("lazy").load({ plugins = { "fzf-lua" } }) + local opts = LazyVim.opts("fzf-lua") or {} + require("fzf-lua").register_ui_select(opts.ui_select or nil) + return vim.ui.select(...) + end + end) + end, + keys = { + { "", "", ft = "fzf", mode = "t", nowait = true }, + { "", "", ft = "fzf", mode = "t", nowait = true }, + { + ",", + "FzfLua buffers sort_mru=true sort_lastused=true", + desc = "Switch Buffer", + }, + { "/", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, + { ":", "FzfLua command_history", desc = "Command History" }, + { "", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, + -- find + { "fb", "FzfLua buffers sort_mru=true sort_lastused=true", desc = "Buffers" }, + { "fc", LazyVim.pick.config_files(), desc = "Find Config File" }, + { "ff", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, + { "fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, + { "fg", "FzfLua git_files", desc = "Find Files (git-files)" }, + { "fr", "FzfLua oldfiles", desc = "Recent" }, + { "fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" }, + -- git + { "gc", "FzfLua git_commits", desc = "Commits" }, + { "gs", "FzfLua git_status", desc = "Status" }, + -- search + { 's"', "FzfLua registers", desc = "Registers" }, + { "sa", "FzfLua autocmds", desc = "Auto Commands" }, + { "sb", "FzfLua grep_curbuf", desc = "Buffer" }, + { "sc", "FzfLua command_history", desc = "Command History" }, + { "sC", "FzfLua commands", desc = "Commands" }, + { "sd", "FzfLua diagnostics_document", desc = "Document Diagnostics" }, + { "sD", "FzfLua diagnostics_workspace", desc = "Workspace Diagnostics" }, + { "sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, + { "sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, + { "sh", "FzfLua help_tags", desc = "Help Pages" }, + { "sH", "FzfLua highlights", desc = "Search Highlight Groups" }, + { "sj", "FzfLua jumps", desc = "Jumplist" }, + { "sk", "FzfLua keymaps", desc = "Key Maps" }, + { "sl", "FzfLua loclist", desc = "Location List" }, + { "sM", "FzfLua man_pages", desc = "Man Pages" }, + { "sm", "FzfLua marks", desc = "Jump to Mark" }, + { "sR", "FzfLua resume", desc = "Resume" }, + { "sq", "FzfLua quickfix", desc = "Quickfix List" }, + { "sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" }, + { "sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" }, + { "sw", LazyVim.pick("grep_visual"), mode = "v", desc = "Selection (Root Dir)" }, + { "sW", LazyVim.pick("grep_visual", { root = false }), mode = "v", desc = "Selection (cwd)" }, + { "uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" }, + { + "ss", + function() + require("fzf-lua").lsp_document_symbols({ + regex_filter = symbols_filter, + }) + end, + desc = "Goto Symbol", + }, + { + "sS", + function() + require("fzf-lua").lsp_live_workspace_symbols({ + regex_filter = symbols_filter, + }) + end, + desc = "Goto Symbol (Workspace)", + }, + }, + }, +} diff --git a/nvim/lua/plugins/wakatime.lua b/nvim/lua/plugins/wakatime.lua new file mode 100644 index 0000000..83b5793 --- /dev/null +++ b/nvim/lua/plugins/wakatime.lua @@ -0,0 +1,3 @@ +return { + { "wakatime/vim-wakatime", lazy = false }, +} diff --git a/nvim/stylua.toml b/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/pip.conf b/pip.conf new file mode 100644 index 0000000..883b782 --- /dev/null +++ b/pip.conf @@ -0,0 +1,2 @@ +[global] +index-url = https://pypi.tuna.tsinghua.edu.cn/simple \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..ea90b33 --- /dev/null +++ b/readme.md @@ -0,0 +1,23 @@ +# .DOTFILES js0ny + +## Navigator + +- [Windows](./win/readme.md) +- [Linux](./linux/readme.md) + +- [Neovim](./nvim/readme.md) +- [VSCode](./vscode/readme.md) + +- [IdeaVim](./.ideavimrc) + +- [Git](./.gitconfig) + +- [pip](./pip.conf) +- [npm](./.npmrc) + + +### Scripts + +- [Install Neovim *nix](./install_nvim.sh) +- [Set Mirror *nix](./set_mirror.sh) +- [Set Mirror PowerShell](./set_mirror.ps1) \ No newline at end of file diff --git a/set_mirror.ps1 b/set_mirror.ps1 new file mode 100644 index 0000000..adcee55 --- /dev/null +++ b/set_mirror.ps1 @@ -0,0 +1,6 @@ +# pip +Set-Alias pip pip3 +Set-Alias python python3 +python -m pip install --upgrade pip +pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple +# npm diff --git a/set_mirror.sh b/set_mirror.sh new file mode 100644 index 0000000..ba8ccf4 --- /dev/null +++ b/set_mirror.sh @@ -0,0 +1,6 @@ +# pip +alias pip=pip3 +alias python=python3 +python -m pip install --upgrade pip +pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple +# npm diff --git a/vscode/hsnips/c.hsnips b/vscode/hsnips/c.hsnips new file mode 100644 index 0000000..92652ae --- /dev/null +++ b/vscode/hsnips/c.hsnips @@ -0,0 +1,15 @@ +snippet hio "include stdio.h" iA +#include +endsnippet + +snippet hlib "include stdlib.h" iA +#include +endsnippet + +snippet hmath "include math.h" iA +#include +endsnippet + +snippet hstr "include string.h" iA +#include +endsnippet \ No newline at end of file diff --git a/vscode/hsnips/latex.hsnips b/vscode/hsnips/latex.hsnips new file mode 100644 index 0000000..d610c84 --- /dev/null +++ b/vscode/hsnips/latex.hsnips @@ -0,0 +1,1038 @@ +global +// JavaScript code +function gen_matrix(nrow, ncol) { + let results = ""; + let order = 1; + for (var i=0; i < nrow; i++){ + results += ' '; + for(var j = 0; j < ncol - 1; j++){ + results += "$" + (order).toString() + " & "; + order ++; + } + results += "$" + (order).toString() + " \\\\" + "\\"; + order ++; + } + return results; +} + +function gen_matrix_transposed(nrow, ncol) { + let results = ""; + for (var i = 0; i < nrow; i++){ + results += ' '; + var j = 0; + for(; j < ncol - 1;j++){ + results += "$" + (i + j * ncol + 1).toString() + " & "; + } + results += "$" + (i + j * ncol + 1).toString() + " \\\\" + "\\"; + } + return results; +} + +function tes_matrix(nrow, ncol,t) { + let results = ""; + let order = 1; + for (var i=0; i 1 ){ + results += "${" +(order ).toString() + ":" + t[order-2] + "}\t & "; + } + else{ + results += "$" +(order ).toString() + " & "; + } + order ++; + } + results += "$"+(order).toString() +" \\\\" + "\\ "; + order ++; + } + return results; +} + +// θΎ“ε‡ΊδΈ€δΈͺ葨格 +function createTable(rows, cols) { + let ret = ""; + let order = 1; + for (let i = 0; i < parseInt(rows) + 2; i++) { + for (let j = 0; j < parseInt(cols); j++) { + if (i === 1) { + ret += "|---"; + } else { + ret += "| $" + (order).toString() + " "; + order++; + } + } + ret += "|\n" + } + return ret; +} + +endglobal + +snippet example "Example" i +\documentclass{article} +\usepackage{amsmath} +\usepackage{amssymb} + +\begin{document} +\title{${1:title}} +\author{Peikun Yang} +\date{\today} +\maketitle +$0 +\end{document} +endsnippet + +# == Fraction Match == + + +snippet // "Fraction" iAm +\\frac{${1:${VISUAL}}}{$2}$0 +endsnippet + +snippet `((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/` "Fraction no ()" iAm +\frac{``rv = m[1]``}{$1}$0 +endsnippet + +priority 200 +snippet `(?<=\s)(\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega|[A-Za-z]{1,2})?(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?(\([^)]+\))(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?\/` "Fraction with ()" iAm +``rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2"`` +endsnippet + +# == Hat Operation == + +# ==== Auto Capture Hat Operation ==== +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hbar|BAR)` "Bar" iAm +\overline{``rv = m[1] + m[2] + m[3]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(htd|TD)` "tilde" iAm +\tilde{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)bar` "bar" iAm +\bar{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hat|HAT)` "hat" iAm +\hat{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hvec)` "Vector postfix" iAm +\vec{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(rta)` "Vector postfix" iAm +\overrightarrow{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(dot)` "dot" iAm +\dot{``rv = m[1]``} +endsnippet + +priority 1000 +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hdd)` "ddot" iAm +\ddot{``rv = m[1]``} +endsnippet + +# ===== Static Hat Operation ==== + +snippet hbar "bar" iAm +\overline{$1}$0 +endsnippet + +snippet hat "hat" iAm +\hat{$1}$0 +endsnippet + +snippet sq "\sqrt{}" iAm +\sqrt{${1}}$0 +endsnippet + +priority 10000 +snippet psq "\sqrt[]{}" iAm +\sqrt[${2}]{${1}} +endsnippet + +# == Superscript Operation == + +snippet invs "inverse" iAm +^{-1} +endsnippet + +snippet dig "digree" iAm +^{\circ} +endsnippet + +priority 10000 +snippet TR "inverse" iAm +^{\mathsf{T}} +endsnippet + +snippet CL "complement" iAm +^{c} +endsnippet + +snippet R+ "R0+" iAm +R_0^+ +endsnippet + +snippet pow "power" iAm +^{${1:n}} +endsnippet + +snippet tp "to the ... power" iAm +^{${1:2}}$0 +endsnippet + +snippet sr "square" iAm +^{2}$0 +endsnippet + +snippet cb "cube" iAm +^{3}$0 +endsnippet + +# == Subscript Operation == + +snippet td "subscript" iAm +_{${1}}$0 +endsnippet + +snippet sb "subscript" iAm +_{${0}} +endsnippet + +snippet `(})(\d)\2` "auto subscript" iAm +`` rv = m[1] + "_" + m[2]`` +endsnippet + +snippet `([A-Za-z])(\d)` "auto subscript" iAm +`` rv = m[1] + "_" + m[2]`` +endsnippet + +priority 100 +snippet `([A-Za-z])_(\d{2})` "auto subscript" iAm +`` rv = m[1] + "_{" + m[2] + "}$0" `` +endsnippet + +priority 100 +snippet `([A-Za-z])S(\d)` "auto subscript" iAm +`` rv = m[1] + "_{" + m[2] + "$1}$2"`` +endsnippet + +snippet `\b(? "${1:_}" + d + "${2:, }").join('');``\cdots${3:${2:, }${1:_}n} +endsnippet + +snippet `(\d\d+),` "0, 1, 2" iAm +``rv = m[1].split('').map((d) => "${1:_}" + d).join("${2:, }");`` +endsnippet + +snippet <> "hokje" iA +\diamond +endsnippet + +# +... -> , \cdots +# - ... -> , \cdots +# add a space if there already is one. +priority 101 +snippet `(?<=[-+])\s*\.\.\.` "smart cdots" imA + \cdots +endsnippet + +# It seems that \ldots is only used when , ..., +# ,... -> , \ldots +# , ... -> , \ldots +priority 101 +snippet `(?<=,)(\s*)\.\.\.` "smart ldots" imA + \ldots +endsnippet + +snippet ** "dot multiply" iAm +\cdot +endsnippet + +snippet +- "pm" iAm +\pm +endsnippet + +snippet -+ "mp" iAm +\mp +endsnippet + +snippet odot "odot" iAm +\odot +endsnippet + +priority 101 +snippet xx "cross" iAm +\times +endsnippet + +snippet eps "epsilon" iAm +\epsilon +endsnippet + +priority 100 +snippet veps "varepsilon" iAm +\varepsilon +endsnippet + +priority 100 +snippet ell "ell" iAm +\ell +endsnippet + +priority 100 +snippet log "log" iAm +\log +endsnippet + +snippet bin "binom" iAm +\binom{$1}{$2} +endsnippet + +snippet oth "otherwise" iAm +\text{otherwise} +endsnippet + +snippet star "star" iAm +^{*} +endsnippet + +snippet `(? "to" iAm +\to +endsnippet + +snippet !> "mapsto" iAm +\mapsto +endsnippet + +snippet => "implies" iAm +\implies +endsnippet + +snippet =< "implied by" iAm +\impliedby +endsnippet + +priority 200 +snippet iff "if and only if" iAm +\iff +endsnippet + +snippet EE "exist" iAm +\exists +endsnippet + +snippet AA "forall" iAm +\forall +endsnippet + +snippet bec "because" iAm +\because +endsnippet + +snippet thr "therefore" iAm +\therefore +endsnippet + + +# ==== Possibility Symbol ==== + +snippet Pr "Pr" iAm +\operatorname{Pr} +endsnippet + +snippet Var "Var" iAm +\operatorname{Var} +endsnippet + +snippet Cov "Cov" iAm +\operatorname{Cov} +endsnippet + +snippet Exp "Expected" iAm +\mathbb{E} +endsnippet + + +# ==== Compare Symbol ==== + +snippet -- "setminus" iAm +\setminus +endsnippet + +snippet >= "greater than" iAm +\ge $0 +endsnippet + +snippet dis "displaystyle" iAm +\displaystyle +endsnippet + +snippet <= "less than" iAm +\le $0 +endsnippet + +snippet != "no equals" iAm +\neq +endsnippet + +snippet == " constan equals" iAm +\equiv +endsnippet + +snippet sim "sim" iAm +\sim +endsnippet + +snippet `\\sim eq` "simeq" iAm +\simeq +endsnippet + +snippet ~~ " Amppro equals" iAm +\approx +endsnippet + +snippet ~= " Amppro equals2" iAm +\cong +endsnippet + +snippet >> ">>" iAm +\gg +endsnippet + + +snippet << "<<" iAm +\ll +endsnippet + + +# == Auto Environment == + +# ==== Auto Math Mode ==== + +snippet mk "inline Math" wA +\(${1}\)$0 +endsnippet + +snippet dm "display Math" w +\[ +${1} +\] +endsnippet + +snippet dmi "display Math" wA +\[$1\]$0 +endsnippet + +snippet eqt "equation" wA +\begin{equation} + ${1} +\end{equation} +endsnippet + +snippet eqs "equation*" wA +\begin{equation*} + ${1} +\end{equation*} +endsnippet + +# ==== Common Environment ==== + +# snippet case "cases" iAm +# \begin{cases} $1, & $2 \\\\ $3, & $4 \end{cases} +# endsnippet + +snippet ali "aligned" iAm +\begin{aligned} +$1 \\\\ +\end{aligned} +endsnippet + +# == Auto Adaptive Close == + +snippet ceil "ceil" iAm +\left\lceil $1 \right\rceil $0 +endsnippet + +snippet floor "floor" iAm +\left\lfloor $1 \right\rfloor$0 +endsnippet + +priority 100 +snippet @) "left( right)" Aim +\left( ${1} \right) $0 +endsnippet + +priority 100 +snippet @| "left| right|" Aim +\left| ${1} \right| $0 +endsnippet + +priority 100 +snippet @\ "left. right|" Aim +\left. ${1} \right|_{${2}}$0 +endsnippet + +priority 100 +snippet @} "left\{ right\}" Aim +\left\\{ ${1} \right\\} $0 +endsnippet + +priority 100 +snippet set "\{ \}" Aim +\\{ ${1} \\}$0 +endsnippet + +priority 100 +snippet @] "left[ right]" Aim +\left[ ${1} \right] $0 +endsnippet + +priority 100 +snippet @> "leftangle rightangle" iAm +\left<${1} \right>$0 +endsnippet + +priority 200 + +# == Snippet == + +# ==== General Snippet ==== + +# ====== Lite Snippet ====== + +snippet tag "tag" iAm +\tag{$1} +endsnippet + +snippet xyb "Auto (x, y)" iAm +(x, y) +endsnippet + +snippet xyzb "Auto (x, y ,z)" iAm +(x, y, z) +endsnippet + +priority 100 +snippet `\b([a-zA-Z])n(\d)` "x[n+1]" iAm +``rv = m[1]``_{${1:n}+``rv = m[2]``}$0 +endsnippet + +# Unkown +snippet rij "mrij" iAm +(${1:x}_${2:n})_{${3:$2} \\in ${4:N}}$0 +endsnippet + +priority 200 +snippet abs "absolute value" iAm +\left\vert ${1} \right\vert $0 +endsnippet + +snippet beg "begin{} / end{}" bA +\\begin{$1} + $0 +\\end{$1} +endsnippet + +# ======== N Series ======== + +priority 100 +snippet comma "comma" iAm +${1:\\alpha}_1,${1:\\alpha}_2,\\cdots,${1:\\alpha}_${2:n} +endsnippet + +priority 100 +snippet plus "plus" iAm +${1:k}_1${2:\\alpha}_1+${1:k}_2${2:\\alpha}_2+\\cdots+${1:k}_${3:n}${2:\\alpha}_${3:n} +endsnippet + +snippet `\b([ijk])=n` "i=1,2,\cdots,n" iAm +``rv = m[1]``=1,2,\cdots,n +endsnippet + +# ======== Common Operator Snippet ======== + +snippet taylor "taylor" iAm +\sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0 +endsnippet + +snippet `(?= 2) || (b != 1 && !isO && isL)) ? "\\limits" : ""; +let r = (b == 3) ? "E" : (b == 1 && (isL || isO)) ? "C" : "R"; +final += ((b >= 2) || isO || (b == 1 && isL)) ? "_{${1:" + r + "}}" : "_{${1:-\\infty}}^{${2:\\infty}}"; +let x = (b == 2) ? "A" : (b == 3) ? "V" : (b == 1 && isL) ? "s" : "x"; +final += " ${3} \\mathrm{d}${4:" + x + "}$0"; +rv = final; +`` +endsnippet + +# Custom: Can add more defined operator +priority 100 +snippet `(? 0} \\\\ +\end{aligned} +endsnippet + +priority 300 +snippet Argmax "Optimization problem" iAm +\begin{aligned} +\argmax_{${1:\beta}} +&\quad ${2:f(x)} \\\\ +\text{s.t.} +&\quad ${3:g(x) > 0} \\\\ +\end{aligned} +endsnippet + +snippet deff "Definition of function" iAm +$1\colon ${2:\\mathbb{R\}} \to ${3:\\mathbb{R\}}, ${4:x} \mapsto $0 +endsnippet + + +snippet iid "independent and identical distribution" iAm +\overset{\text{i.i.d.}}{\sim} +endsnippet + +snippet defe "define equal" iAm +\overset{\underset{\mathrm{def}}{}}{=} +endsnippet + +snippet deft "define triangleq" iAm +\triangleq +endsnippet + + +# == Matrix == + +# ==== Static Matrix ==== + +snippet pmat "pmat" wm +\begin{pmatrix} + ${1: } +\end{pmatrix} $0 +endsnippet + +snippet bmat "pmat" wm +\begin{bmatrix} + $1 +\end{bmatrix} $0 +endsnippet + +snippet vecC "column vector" iAm +\begin{bmatrix} ${1:x}_1 \\\\ ${1:x}_2 \\\\ \vdots \\\\ ${1:x}_${2:n} \end{bmatrix} +endsnippet + +snippet vecR "row vector" iAm +\begin{bmatrix} ${1:x}_1, ${1:x}_2, \cdots, ${1:x}_${2:n} \end{bmatrix}$0 +endsnippet + +priority 300 +snippet omis "omission" iAm +\\begin{bmatrix}${1:1}&${2:1}&\\cdots&${4:1}\\\\${5:1}&${6:1}&\\cdots&${8:1}\\\\\\vdots&\\vdots&\\ddots&\\vdots\\\\${13:1}&${14:1}&\\cdots&${16:1}\\end{bmatrix} +endsnippet + +priority 300 +snippet submat "omission" iAm +\\begin{bmatrix} + ${1:a}_{11} & ${1:a}_{12} & \\cdots & ${1:a}_{1n} \\\\ + ${1:a}_{21} & ${1:a}_{22} & \\cdots & ${1:a}_{2n} \\\\ + \\vdots & \\vdots & \\ddots & \\vdots \\\\ + ${1:a}_{n1} & ${1:a}_{n2} & \\cdots & ${1:a}_{nn} +\\end{bmatrix} +endsnippet + +priority 300 +snippet subplusmat "omission" iAm +\\begin{bmatrix} + ${1:a}_{11}+${2:b}_{11} & ${1:a}_{12}+${2:b}_{12} & \\cdots & ${1:a}_{1n}+${2:b}_{1n} \\\\ + ${1:a}_{21}+${2:b}_{21} & ${1:a}_{22}+${2:b}_{22} & \\cdots & ${1:a}_{2n}+${2:b}_{2n} \\\\ + \\vdots & \\vdots & \\ddots & \\vdots \\\\ + ${1:a}_{n1}+${2:b}_{n1} & ${1:a}_{n2}+${2:b}_{n2} & \\cdots & ${1:a}_{nn}+${2:b}_{nn} +\\end{bmatrix} +endsnippet + +snippet jacobi "jacobi" iAm +\\begin{bmatrix}\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_${3:n}}\\\\\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_${3:n}}\\\\\\vdots&\\vdots&\\ddots&\\vdots\\\\\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_${3:n}}\\end{bmatrix} +endsnippet + +# ==== Dynamic Matrix ==== + +priority 300 +snippet `(b|p|v)mata([1-9])` "bmatrix" iiAm +\\begin{``rv = m[1]``matrix}`` + let len = m[2]; + let results = ""; + for (var i=0; i 1 ){ + results += "${" +(order ).toString() + ":" + t[order-2] + "}\t & "; + } + else{ + results += "$" +(order ).toString() + " & "; + } + order ++; + } + results += "$"+(order).toString() +" \\\\" + "\\ "; + order ++; + } + return results; +} + +// θΎ“ε‡ΊδΈ€δΈͺ葨格 +function createTable(rows, cols) { + let ret = ""; + let order = 1; + for (let i = 0; i < parseInt(rows) + 2; i++) { + for (let j = 0; j < parseInt(cols); j++) { + if (i === 1) { + ret += "|---"; + } else { + ret += "| $" + (order).toString() + " "; + order++; + } + } + ret += "|\n" + } + return ret; +} + +endglobal + + +# == Fraction Match == + +snippet // "Fraction" iAm +\\frac{${1:${VISUAL}}}{$2}$0 +endsnippet + +snippet `((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/` "Fraction no ()" iAm +\frac{``rv = m[1]``}{$1}$0 +endsnippet + +priority 200 +snippet `(?<=\s)(\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega|[A-Za-z]{1,2})?(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?(\([^)]+\))(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?\/` "Fraction with ()" iAm +``rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2"`` +endsnippet + +# == Hat Operation == + +# ==== Auto Capture Hat Operation ==== +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hbar|BAR)` "Bar" iAm +\overline{``rv = m[1] + m[2] + m[3]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(htd|TD)` "tilde" iAm +\tilde{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)bar` "bar" iAm +\bar{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hat|HAT)` "hat" iAm +\hat{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hvec)` "Vector postfix" iAm +\vec{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(rta)` "Vector postfix" iAm +\overrightarrow{``rv = m[1]``} +endsnippet + +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(dot)` "dot" iAm +\dot{``rv = m[1]``} +endsnippet + +priority 1000 +snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hdd)` "ddot" iAm +\ddot{``rv = m[1]``} +endsnippet + +# ===== Static Hat Operation ==== + +snippet hbar "bar" iAm +\overline{$1}$0 +endsnippet + +snippet hat "hat" iAm +\hat{$1}$0 +endsnippet + +snippet hsq "\sqrt{}" iAm +\sqrt{${1}}$0 +endsnippet + +# == Superscript Operation == + +snippet invs "inverse" iAm +^{-1} +endsnippet + +snippet dig "digree" iAm +^{\circ} +endsnippet + +priority 10000 +snippet TR "inverse" iAm +^{\mathsf{T}} +endsnippet + +snippet CL "complement" iAm +\complement +endsnippet + +snippet R+ "R0+" iAm +R_0^+ +endsnippet + +snippet pow "power" iAm +^{${1:2}}$0 +endsnippet + +snippet tp "to the ... power" iAm +^{${1:2}}$0 +endsnippet + +snippet sr "square" iAm +^{2}$0 +endsnippet + +# == Subscript Operation == + +snippet td "subscript" iAm +_{${1}}$0 +endsnippet + +snippet sb "subscript" iAm +_{${1:2}}$0 +endsnippet + +snippet `(})(\d)\2` "auto subscript" iAm +`` rv = m[1] + "_" + m[2]`` +endsnippet + +snippet `([A-Za-z])(\d)` "auto subscript" iAm +`` rv = m[1] + "_" + m[2]`` +endsnippet + +priority 100 +snippet `([A-Za-z])_(\d{2})` "auto subscript" iAm +`` rv = m[1] + "_{" + m[2] + "}$0" `` +endsnippet + +priority 100 +snippet `([A-Za-z])S(\d)` "auto subscript" iAm +`` rv = m[1] + "_{" + m[2] + "$1}$2"`` +endsnippet + +snippet `\b(? "${1:_}" + d + "${2:, }").join('');``\cdots${3:${2:, }${1:_}n} +endsnippet + +snippet `(\d\d+),` "0, 1, 2" iAm +``rv = m[1].split('').map((d) => "${1:_}" + d).join("${2:, }");`` +endsnippet + +snippet <> "hokje" imA +\diamond +endsnippet + +# +... -> , \cdots +# - ... -> , \cdots +# add a space if there already is one. +priority 101 +snippet `(?<=[-+])\s*\.\.\.` "smart cdots" imA + \cdots +endsnippet + +# It seems that \ldots is only used when , ..., +# ,... -> , \ldots +# , ... -> , \ldots +priority 101 +snippet `(?<=,)(\s*)\.\.\.` "smart ldots" imA + \ldots +endsnippet + +snippet ** "dot multiply" iAm +\cdot +endsnippet + +snippet +- "pm" iAm +\pm +endsnippet + +snippet -+ "mp" iAm +\mp +endsnippet + +snippet odot "odot" iAm +\odot +endsnippet + +priority 101 +snippet xx "cross" iAm +\times +endsnippet + +snippet eps "epsilon" iAm +\epsilon +endsnippet + +priority 100 +snippet veps "varepsilon" iAm +\varepsilon +endsnippet + +priority 100 +snippet ell "ell" iAm +\ell +endsnippet + +priority 100 +snippet log "log" iAm +\log +endsnippet + +snippet bin "binom" iAm +\binom{$1}{$2} +endsnippet + +snippet oth "otherwise" iAm +\text{otherwise} +endsnippet + +snippet star "star" iAm +\star +endsnippet + +priority 100 +snippet pstar "star" iAm +^{*}$1 +endsnippet + +priority 100 +snippet `(? "to" iAm +\to +endsnippet + +snippet !> "mapsto" iAm +\mapsto +endsnippet + +snippet => "implies" iAm +\implies +endsnippet + +snippet =< "implied by" iAm +\impliedby +endsnippet + +priority 200 +snippet iff "if and only if" iAm +\iff +endsnippet + +snippet EE "exist" iAm +\exists +endsnippet + +snippet AA "forall" iAm +\forall +endsnippet + +snippet bec "because" iAm +\because +endsnippet + +snippet thr "therefore" iAm +\therefore +endsnippet + + +# ==== Possibility Symbol ==== + +snippet Pr "Pr" iAm +\operatorname{Pr} +endsnippet + +snippet Var "Var" iAm +\operatorname{Var} +endsnippet + +snippet Cov "Cov" iAm +\operatorname{Cov} +endsnippet + +snippet Exp "Expected" iAm +\mathbb{E} +endsnippet + + +# ==== Compare Symbol ==== + +snippet -- "setminus" iAm +\setminus +endsnippet + +snippet >= "greater than" iAm +\ge $0 +endsnippet + +snippet dis "displaystyle" iAm +\displaystyle +endsnippet + +snippet <= "less than" iAm +\le $0 +endsnippet + +snippet != "no equals" iAm +\neq +endsnippet + +snippet == " constan equals" iAm +\equiv +endsnippet + +snippet sim "sim" iAm +\sim +endsnippet + +snippet `\\sim eq` "simeq" iAm +\simeq +endsnippet + +snippet ~~ " Amppro equals" iAm +\approx +endsnippet + +snippet ~= " Amppro equals2" iAm +\cong +endsnippet + +snippet >> ">>" iAm +\gg +endsnippet + + +snippet << "<<" iAm +\ll +endsnippet + + +# == Auto Environment == + +# ==== Auto Math Mode ==== + +snippet mk "inline Math" wA +$${1}$$0 +endsnippet + +snippet dm "display Math" wA +$$ +${1} +$$$0 +endsnippet + +snippet eqt "equation" wA +\begin{equation} + ${1} +\end{equation} +endsnippet + +snippet eqs "equation*" wA +\begin{equation*} + ${1} +\end{equation*} +endsnippet + +# ==== Common Environment ==== + +snippet case "cases" iAm +\begin{cases} $1, & $2 \\\\ $3, & $4 \end{cases} +endsnippet + +snippet ali "aligned" iAm +\begin{aligned} +$1 \\\\ +\end{aligned} +endsnippet + +# == Auto Adaptive Close == + +snippet ceil "ceil" iAm +\left\lceil $1 \right\rceil $0 +endsnippet + +snippet floor "floor" iAm +\left\lfloor $1 \right\rfloor$0 +endsnippet + +priority 100 +snippet @) "left( right)" Aim +\left( ${1} \right) $0 +endsnippet + +priority 100 +snippet @| "left| right|" Aim +\left| ${1} \right| $0 +endsnippet + +priority 100 +snippet @\ "left. right|" Aim +\left. ${1} \right|_{${2}}$0 +endsnippet + +priority 100 +snippet @} "left\{ right\}" Aim +\left\\{ ${1} \right\\} $0 +endsnippet + +priority 100 +snippet set "\{ \}" Aim +\\{ ${1} \\}$0 +endsnippet + +priority 100 +snippet @] "left[ right]" Aim +\left[ ${1} \right] $0 +endsnippet + +priority 100 +snippet @> "leftangle rightangle" iAm +\left<${1} \right>$0 +endsnippet + +priority 200 +snippet norm iAm +\left\| ${1} \right\|$2 +endsnippet + +# == Snippet == + +# ==== General Snippet ==== + +# ====== Lite Snippet ====== + +snippet tag "tag" iAm +\tag{$1} +endsnippet + +snippet xyb "Auto (x, y)" iAm +(x, y) +endsnippet + +snippet xyzb "Auto (x, y ,z)" iAm +(x, y, z) +endsnippet + +priority 100 +snippet `\b([a-zA-Z])n(\d)` "x[n+1]" iAm +``rv = m[1]``_{${1:n}+``rv = m[2]``}$0 +endsnippet + +# Unkown +snippet rij "mrij" iAm +(${1:x}_${2:n})_{${3:$2} \\in ${4:N}}$0 +endsnippet + +priority 200 +snippet abs "absolute value" iAm +\left\vert ${1} \right\vert $0 +endsnippet + +snippet beg "begin{} / end{}" bA +\\begin{$1} + $0 +\\end{$1} +endsnippet + +# ======== N Series ======== + +priority 100 +snippet comma "comma" iAm +${1:\\alpha}_1,${1:\\alpha}_2,\\cdots,${1:\\alpha}_${2:n} +endsnippet + +priority 100 +snippet plus "plus" iAm +${1:k}_1${2:\\alpha}_1+${1:k}_2${2:\\alpha}_2+\\cdots+${1:k}_${3:n}${2:\\alpha}_${3:n} +endsnippet + +snippet `\b([ijk])=n` "i=1,2,\cdots,n" iAm +``rv = m[1]``=1,2,\cdots,n +endsnippet + +# ======== Common Operator Snippet ======== + +snippet taylor "taylor" iAm +\sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0 +endsnippet + +snippet `(?= 2) || (b != 1 && !isO && isL)) ? "\\limits" : ""; +let r = (b == 3) ? "E" : (b == 1 && (isL || isO)) ? "C" : "R"; +final += ((b >= 2) || isO || (b == 1 && isL)) ? "_{${1:" + r + "}}" : "_{${1:-\\infty}}^{${2:\\infty}}"; +let x = (b == 2) ? "A" : (b == 3) ? "V" : (b == 1 && isL) ? "s" : "x"; +final += " ${3} \\mathrm{d}${4:" + x + "}$0"; +rv = final; +`` +endsnippet + +# Custom: Can add more defined operator +priority 100 +snippet `(? 0} \\\\ +\end{aligned} +endsnippet + +priority 300 +snippet Argmax "Optimization problem" iAm +\begin{aligned} +\argmax_{${1:\beta}} +&\quad ${2:f(x)} \\\\ +\text{s.t.} +&\quad ${3:g(x) > 0} \\\\ +\end{aligned} +endsnippet + +snippet deff "Definition of function" iAm +$1\colon ${2:\\mathbb{R\}} \to ${3:\\mathbb{R\}}, ${4:x} \mapsto $0 +endsnippet + + +snippet iid "independent and identical distribution" iAm +\overset{\text{i.i.d.}}{\sim} +endsnippet + +snippet defe "define equal" iAm +\overset{\underset{\mathrm{def}}{}}{=} +endsnippet + +snippet deft "define triangleq" iAm +\triangleq +endsnippet + + +# == Matrix == + +# ==== Static Matrix ==== + +snippet pmat "pmat" wm +\begin{pmatrix} + ${1: } +\end{pmatrix} $0 +endsnippet + +snippet bmat "pmat" wm +\begin{bmatrix} + $1 +\end{bmatrix} $0 +endsnippet + +snippet vecC "column vector" iAm +\begin{bmatrix} ${1:x}_1 \\\\ ${1:x}_2 \\\\ \vdots \\\\ ${1:x}_${2:n} \end{bmatrix} +endsnippet + +snippet vecR "row vector" iAm +\begin{bmatrix} ${1:x}_1, ${1:x}_2, \cdots, ${1:x}_${2:n} \end{bmatrix}$0 +endsnippet + +priority 300 +snippet omis "omission" iAm +\\begin{bmatrix}${1:1}&${2:1}&\\cdots&${4:1}\\\\${5:1}&${6:1}&\\cdots&${8:1}\\\\\\vdots&\\vdots&\\ddots&\\vdots\\\\${13:1}&${14:1}&\\cdots&${16:1}\\end{bmatrix} +endsnippet + +priority 300 +snippet submat "omission" iAm +\\begin{bmatrix} + ${1:a}_{11} & ${1:a}_{12} & \\cdots & ${1:a}_{1n} \\\\ + ${1:a}_{21} & ${1:a}_{22} & \\cdots & ${1:a}_{2n} \\\\ + \\vdots & \\vdots & \\ddots & \\vdots \\\\ + ${1:a}_{n1} & ${1:a}_{n2} & \\cdots & ${1:a}_{nn} +\\end{bmatrix} +endsnippet + +priority 300 +snippet subplusmat "omission" iAm +\\begin{bmatrix} + ${1:a}_{11}+${2:b}_{11} & ${1:a}_{12}+${2:b}_{12} & \\cdots & ${1:a}_{1n}+${2:b}_{1n} \\\\ + ${1:a}_{21}+${2:b}_{21} & ${1:a}_{22}+${2:b}_{22} & \\cdots & ${1:a}_{2n}+${2:b}_{2n} \\\\ + \\vdots & \\vdots & \\ddots & \\vdots \\\\ + ${1:a}_{n1}+${2:b}_{n1} & ${1:a}_{n2}+${2:b}_{n2} & \\cdots & ${1:a}_{nn}+${2:b}_{nn} +\\end{bmatrix} +endsnippet + +snippet jacobi "jacobi" iAm +\\begin{bmatrix}\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_${3:n}}\\\\\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_${3:n}}\\\\\\vdots&\\vdots&\\ddots&\\vdots\\\\\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_${3:n}}\\end{bmatrix} +endsnippet + +# ==== Dynamic Matrix ==== + +priority 300 +snippet `(b|p|v)mata([1-9])` "bmatrix" iiAm +\\begin{``rv = m[1]``matrix}`` + let len = m[2]; + let results = ""; + for (var i=0; i ${2:oo}) +endsnippet + +snippet derive "derive" iAm +derive(${1:f}, ${2:x}) +endsnippet + +snippet part "partial" iAm +(diff ${1:f})/(diff ${3:x}) +endsnippet + +snippet sb "subscript" iAm +_(${1:2}) +endsnippet + +snippet sr "square" iAm +^2 +endsnippet + +snippet pow "to the ... power" iAm +^(${1:3}) +endsnippet + +snippet veps "epsilon.alt" iAm +epsilon.alt +endsnippet + +snippet ;; "\;" iAm +\; +endsnippet + +snippet ,, "\," iAm +\, +endsnippet + +snippet `([A-Za-z\)])(\d)` "auto subscript" iAm +`` rv = m[1] + "_" + m[2]`` +endsnippet + +snippet `([A-Za-z\)])_(\d{2})` "auto subscript" iAm +`` rv = m[1] + "_(" + m[2] + ")" `` +endsnippet + +snippet `(? " # Continuation Prompt + +### Keybindings ### + +Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord + +### Navigator ### + +# Relative navigation # + +# ${function:~} = { Set-Location -Path ~ } cd is better +${function:...} = { Set-Location -Path ..\.. } +${function:....} = { Set-Location -Path ..\..\.. } +${function:.....} = { Set-Location -Path ..\..\..\.. } +${function:......} = { Set-Location -Path ..\..\..\..\.. } + +# Absolute navigation # + +${function:docs} = { Set-Location -Path ~\Documents } +${function:down} = { Set-Location -Path ~\Downloads } +${function:dt} = { Set-Location -Path ~\Desktop } +${function:mytmp} = { Set-Location -Path ~\Temporary } +${function:one} = { Set-Location -Path ~\OneDrive } +${function:doku} = { Set-Location -Path ~\MyDocuments && Get-ChildItem } + +### Aliases ### + +# Shell Equivalents # + +Set-Alias "touch" "New-Item" +Set-Alias "open" "explorer.exe" + +# Dev # + +${function:shcfg} = { code $PROFILE } +${function:reload} = { Invoke-Expression $PROFILE } +${function:csi} = { dotnet script } +${function:pulldots} = { Set-Location -Path $DOTFILES && git pull } +Set-Alias "pwshcfg" "shcfg" +Set-Alias "python3" "python" +Set-Alias "pip3" "pip" +Set-Alias "py" "python" +Set-Alias "cl" "clang" +Set-Alias "cl++" "clang++" +Set-Alias "clang" "clang -std=c99" +Set-Alias "clang++" "clang++ -std=c++2b" + +# Editors # + +Set-Alias "v" "nvim" +Set-Alias "c" "code" +Set-Alias "gvi" "neovide" + +# Miscs # + +Set-Alias mcd CreateAndSet-Directory + +### Functions ### + +function tc { param ( [string] $filename) + New-Item $filename && code $filename +} + +function tv { param ( [string] $filename) + New-Item $filename && nvim $filename +} + +function cdls { param( [string] $dirname) + Set-Location $dirname && Get-ChildItem +} + + + +### Modules ### + +$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" +if (Test-Path($ChocolateyProfile)) { Import-Module "$ChocolateyProfile" } + +Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58 + +Import-Module CompletionPredictor + +### Misc ### + +#region conda initialize +# !! Contents within this block are managed by 'conda init' !! +If (Test-Path "$HOME\miniconda3\Scripts\conda.exe") { + (& "$HOME\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Where-Object{$_} | Invoke-Expression +} +#endregion diff --git a/win/WindowsTerminal.json b/win/WindowsTerminal.json new file mode 100644 index 0000000..bd1d755 --- /dev/null +++ b/win/WindowsTerminal.json @@ -0,0 +1,468 @@ +{ + "$help": "https://aka.ms/terminal-documentation", + "$schema": "https://aka.ms/terminal-profiles-schema", + "actions": + [ + { + "command": "unbound", + "keys": "alt+shift+plus" + }, + { + "command": "unbound", + "keys": "alt+up" + }, + { + "command": "unbound", + "keys": "alt+down" + }, + { + "command": "unbound", + "keys": "alt+right" + }, + { + "command": "unbound", + "keys": "alt+left" + }, + { + "command": "unbound", + "keys": "alt+shift+up" + }, + { + "command": "unbound", + "keys": "alt+shift+down" + }, + { + "command": "unbound", + "keys": "alt+shift+right" + }, + { + "command": "unbound", + "keys": "alt+shift+left" + }, + { + "command": + { + "action": "copy", + "singleLine": false + }, + "keys": "ctrl+c" + }, + { + "command": + { + "action": "moveFocus", + "direction": "up" + }, + "keys": "ctrl+k" + }, + { + "command": + { + "action": "resizePane", + "direction": "up" + }, + "keys": "ctrl+shift+k" + }, + { + "command": "paste", + "keys": "ctrl+v" + }, + { + "command": + { + "action": "splitPane", + "split": "auto", + "splitMode": "duplicate" + }, + "keys": "alt+shift+d" + }, + { + "command": + { + "action": "resizePane", + "direction": "left" + }, + "keys": "ctrl+shift+h" + }, + { + "command": "find", + "keys": "ctrl+shift+f" + }, + { + "command": + { + "action": "moveFocus", + "direction": "down" + }, + "keys": "ctrl+j" + }, + { + "command": + { + "action": "splitPane", + "split": "right" + }, + "keys": "alt+shift+/" + }, + { + "command": + { + "action": "moveFocus", + "direction": "right" + }, + "keys": "ctrl+l" + }, + { + "command": + { + "action": "moveFocus", + "direction": "left" + }, + "keys": "ctrl+h" + }, + { + "command": + { + "action": "resizePane", + "direction": "down" + }, + "keys": "ctrl+shift+j" + }, + { + "command": + { + "action": "resizePane", + "direction": "right" + }, + "keys": "ctrl+shift+l" + } + ], + "autoHideWindow": false, + "centerOnLaunch": false, + "copyFormatting": "none", + "copyOnSelect": false, + "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", + "language": "zh-Hans", + "minimizeToNotificationArea": false, + "newTabMenu": + [ + { + "type": "remainingProfiles" + } + ], + "profiles": + { + "defaults": + { + "colorScheme": "One Half Dark", + "font": + { + "face": "CaskaydiaCove Nerd Font" + } + }, + "list": + [ + { + "backgroundImage": null, + "colorScheme": "One Half Dark", + "experimental.retroTerminalEffect": false, + "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", + "hidden": false, + "name": "PowerShell", + "opacity": 100, + "scrollbarState": "hidden", + "source": "Windows.Terminal.PowershellCore" + }, + { + "colorScheme": "One Half Dark", + "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}", + "hidden": false, + "name": "Ubuntu", + "source": "Windows.Terminal.Wsl" + }, + { + "guid": "{3c5d580b-1c52-55ce-89c9-57119457e5a7}", + "hidden": false, + "name": "CMD VS 2022", + "source": "Windows.Terminal.VisualStudio" + }, + { + "guid": "{bc7a2d0e-eee9-5401-ae36-b35fa60deb22}", + "hidden": false, + "name": "PowerShell VS2022", + "source": "Windows.Terminal.VisualStudio" + }, + { + "colorScheme": "Campbell", + "commandline": "\"C:\\Users\\citoy\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.PowerShell_8wekyb3d8bbwe\\pwsh.exe\"", + "elevate": true, + "guid": "{6693d425-c727-46ba-8739-542bcf18769b}", + "hidden": false, + "icon": "ms-appx:///ProfileIcons/pwsh.png", + "name": "PowerShell Administrator", + "startingDirectory": "%USERPROFILE%" + }, + { + "commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", + "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", + "hidden": false, + "name": "Windows PowerShell" + }, + { + "commandline": "%SystemRoot%\\System32\\cmd.exe", + "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", + "hidden": false, + "name": "\u547d\u4ee4\u63d0\u793a\u7b26" + }, + { + "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", + "hidden": false, + "name": "Azure Cloud Shell", + "source": "Windows.Terminal.Azure" + }, + { + "guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}", + "hidden": false, + "name": "Debian", + "source": "Windows.Terminal.Wsl" + } + ] + }, + "schemes": + [ + { + "background": "#0C0C0C", + "black": "#0C0C0C", + "blue": "#0037DA", + "brightBlack": "#767676", + "brightBlue": "#3B78FF", + "brightCyan": "#61D6D6", + "brightGreen": "#16C60C", + "brightPurple": "#B4009E", + "brightRed": "#E74856", + "brightWhite": "#F2F2F2", + "brightYellow": "#F9F1A5", + "cursorColor": "#FFFFFF", + "cyan": "#3A96DD", + "foreground": "#CCCCCC", + "green": "#13A10E", + "name": "Campbell", + "purple": "#881798", + "red": "#C50F1F", + "selectionBackground": "#FFFFFF", + "white": "#CCCCCC", + "yellow": "#C19C00" + }, + { + "background": "#012456", + "black": "#0C0C0C", + "blue": "#0037DA", + "brightBlack": "#767676", + "brightBlue": "#3B78FF", + "brightCyan": "#61D6D6", + "brightGreen": "#16C60C", + "brightPurple": "#B4009E", + "brightRed": "#E74856", + "brightWhite": "#F2F2F2", + "brightYellow": "#F9F1A5", + "cursorColor": "#FFFFFF", + "cyan": "#3A96DD", + "foreground": "#CCCCCC", + "green": "#13A10E", + "name": "Campbell Powershell", + "purple": "#881798", + "red": "#C50F1F", + "selectionBackground": "#FFFFFF", + "white": "#CCCCCC", + "yellow": "#C19C00" + }, + { + "background": "#282C34", + "black": "#282C34", + "blue": "#61AFEF", + "brightBlack": "#5A6374", + "brightBlue": "#61AFEF", + "brightCyan": "#56B6C2", + "brightGreen": "#98C379", + "brightPurple": "#C678DD", + "brightRed": "#E06C75", + "brightWhite": "#DCDFE4", + "brightYellow": "#E5C07B", + "cursorColor": "#FFFFFF", + "cyan": "#56B6C2", + "foreground": "#DCDFE4", + "green": "#98C379", + "name": "One Half Dark", + "purple": "#C678DD", + "red": "#E06C75", + "selectionBackground": "#FFFFFF", + "white": "#DCDFE4", + "yellow": "#E5C07B" + }, + { + "background": "#FAFAFA", + "black": "#383A42", + "blue": "#0184BC", + "brightBlack": "#4F525D", + "brightBlue": "#61AFEF", + "brightCyan": "#56B5C1", + "brightGreen": "#98C379", + "brightPurple": "#C577DD", + "brightRed": "#DF6C75", + "brightWhite": "#FFFFFF", + "brightYellow": "#E4C07A", + "cursorColor": "#4F525D", + "cyan": "#0997B3", + "foreground": "#383A42", + "green": "#50A14F", + "name": "One Half Light", + "purple": "#A626A4", + "red": "#E45649", + "selectionBackground": "#FFFFFF", + "white": "#FAFAFA", + "yellow": "#C18301" + }, + { + "background": "#002B36", + "black": "#002B36", + "blue": "#268BD2", + "brightBlack": "#073642", + "brightBlue": "#839496", + "brightCyan": "#93A1A1", + "brightGreen": "#586E75", + "brightPurple": "#6C71C4", + "brightRed": "#CB4B16", + "brightWhite": "#FDF6E3", + "brightYellow": "#657B83", + "cursorColor": "#FFFFFF", + "cyan": "#2AA198", + "foreground": "#839496", + "green": "#859900", + "name": "Solarized Dark", + "purple": "#D33682", + "red": "#DC322F", + "selectionBackground": "#FFFFFF", + "white": "#EEE8D5", + "yellow": "#B58900" + }, + { + "background": "#FDF6E3", + "black": "#002B36", + "blue": "#268BD2", + "brightBlack": "#073642", + "brightBlue": "#839496", + "brightCyan": "#93A1A1", + "brightGreen": "#586E75", + "brightPurple": "#6C71C4", + "brightRed": "#CB4B16", + "brightWhite": "#FDF6E3", + "brightYellow": "#657B83", + "cursorColor": "#002B36", + "cyan": "#2AA198", + "foreground": "#657B83", + "green": "#859900", + "name": "Solarized Light", + "purple": "#D33682", + "red": "#DC322F", + "selectionBackground": "#FFFFFF", + "white": "#EEE8D5", + "yellow": "#B58900" + }, + { + "background": "#000000", + "black": "#000000", + "blue": "#3465A4", + "brightBlack": "#555753", + "brightBlue": "#729FCF", + "brightCyan": "#34E2E2", + "brightGreen": "#8AE234", + "brightPurple": "#AD7FA8", + "brightRed": "#EF2929", + "brightWhite": "#EEEEEC", + "brightYellow": "#FCE94F", + "cursorColor": "#FFFFFF", + "cyan": "#06989A", + "foreground": "#D3D7CF", + "green": "#4E9A06", + "name": "Tango Dark", + "purple": "#75507B", + "red": "#CC0000", + "selectionBackground": "#FFFFFF", + "white": "#D3D7CF", + "yellow": "#C4A000" + }, + { + "background": "#FFFFFF", + "black": "#000000", + "blue": "#3465A4", + "brightBlack": "#555753", + "brightBlue": "#729FCF", + "brightCyan": "#34E2E2", + "brightGreen": "#8AE234", + "brightPurple": "#AD7FA8", + "brightRed": "#EF2929", + "brightWhite": "#EEEEEC", + "brightYellow": "#FCE94F", + "cursorColor": "#000000", + "cyan": "#06989A", + "foreground": "#555753", + "green": "#4E9A06", + "name": "Tango Light", + "purple": "#75507B", + "red": "#CC0000", + "selectionBackground": "#FFFFFF", + "white": "#D3D7CF", + "yellow": "#C4A000" + }, + { + "background": "#300A24", + "black": "#171421", + "blue": "#0037DA", + "brightBlack": "#767676", + "brightBlue": "#08458F", + "brightCyan": "#2C9FB3", + "brightGreen": "#26A269", + "brightPurple": "#A347BA", + "brightRed": "#C01C28", + "brightWhite": "#F2F2F2", + "brightYellow": "#A2734C", + "cursorColor": "#FFFFFF", + "cyan": "#3A96DD", + "foreground": "#FFFFFF", + "green": "#26A269", + "name": "Ubuntu-ColorScheme", + "purple": "#881798", + "red": "#C21A23", + "selectionBackground": "#FFFFFF", + "white": "#CCCCCC", + "yellow": "#A2734C" + }, + { + "background": "#000000", + "black": "#000000", + "blue": "#000080", + "brightBlack": "#808080", + "brightBlue": "#0000FF", + "brightCyan": "#00FFFF", + "brightGreen": "#00FF00", + "brightPurple": "#FF00FF", + "brightRed": "#FF0000", + "brightWhite": "#FFFFFF", + "brightYellow": "#FFFF00", + "cursorColor": "#FFFFFF", + "cyan": "#008080", + "foreground": "#C0C0C0", + "green": "#008000", + "name": "Vintage", + "purple": "#800080", + "red": "#800000", + "selectionBackground": "#FFFFFF", + "white": "#C0C0C0", + "yellow": "#808000" + } + ], + "tabWidthMode": "compact", + "themes": [], + "useAcrylicInTabRow": true, + "windowingBehavior": "useNew" +} \ No newline at end of file diff --git a/win/neovide.toml b/win/neovide.toml new file mode 100644 index 0000000..e1b21fb --- /dev/null +++ b/win/neovide.toml @@ -0,0 +1,16 @@ +fork = false +frame = "full" +idle = true +maximized = false +no-multigrid = false +srgb = false +tabs = true +theme = "auto" +title-hidden = true +vsync = false +wsl = true +neovim-bin = "/opt/nvim-linux64/bin/nvim" + +[font] +normal = ["CaskaydiaCove Nerd Font"] # Will use the bundled Fira Code Nerd Font by default +size = 14.0 diff --git a/win/readme.md b/win/readme.md new file mode 100644 index 0000000..f626b12 --- /dev/null +++ b/win/readme.md @@ -0,0 +1,8 @@ +# Configs for Windows + +## Navigator + +- [WSL Config](./.wslconfig) +- [Windows Terminal Config](./WindowsTerminal.json) +- [PowerShell Config](./Microsoft.PowerShell_profile.ps1) +- [Neovide](./neovide.toml) \ No newline at end of file