Skip to content

Instantly share code, notes, and snippets.

@JaySon-Huang
Last active July 26, 2024 08:04
Show Gist options
  • Save JaySon-Huang/7f2190878aa2890cf43e11ac8f654b52 to your computer and use it in GitHub Desktop.
Save JaySon-Huang/7f2190878aa2890cf43e11ac8f654b52 to your computer and use it in GitHub Desktop.
My own oh-my-zsh
""""" 文件编码
set fileencodings=utf-8,gbk,gb2312
set termencoding=utf-8
set encoding=utf-8
"""""" 缩进相关
set ts=4 " tabstop 设置tab为4个空格
set sw=4 " shiftwidth 每层缩进4个空格
set expandtab " 输入的tab自动展开为空格. 设置后, 输入TAB, 需要Ctrl-V<TAB>
set softtabstop=4
"set smarttab
"set ai!
"set cindent
"set smartindent
set sm " 输入后括号时, 光标跳回对应的前括号显示匹配情况
"""""" 显示相关
set nu " 显示行号
set ru " 显示屏幕右下角行号, 列号信息
set showtabline=2
set ic " 查找时不考虑大小写
set incsearch " 增量搜索
set hlsearch " 搜索时高亮结果
set cursorline " 显示当前行
set showmode " 显示当前操作模式
"Sets how many lines of history VIM har to remember
set history=400
set nocompatible " 不使用旧的VI兼容模式
"set mouse=a " 鼠标可用
"set mouse=v " 关闭鼠标模式
set autoread " 文件被修改时, 重新加载
" 记录上次打开文件时编辑的位置
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
"解决粘贴时的自动缩进带来的自动注释困扰 (和autoindent互斥, 要粘贴代码时手动输入 :set paste)
"set paste
" 设置vim打开文件之后,页脚的状态栏,包括文件编码,文件类型,光标当前列,当前行,以及总行数等信息
set statusline=%2*%n%m%r%h%w%*\ %f\ %1*[FORMAT=%2*%{&ff}:%{&fenc!=''?&fenc:&enc}%1*]\ [Type=%2*%Y%1*]\ [Column=%2*%v%1*]\ [Line=%2*%l%1*/%3*%L(%p%%)%1*]
set laststatus=2
" Auto add head info
" .py file into add header
function! HeaderPython()
call setline(1, "#!/usr/bin/env python")
call append(1, "#encoding=utf-8")
call append(2, "from __future__ import print_function")
call append(3, "import sys")
call append(4, "")
call append(5, "__doc__= ''' '''")
call append(5, "__author__ = ''")
call append(6, "")
normal G
normal o
endf
autocmd bufnewfile *.py call HeaderPython()
ZSH_THEME="jayson"
# Install some plugins
# https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md
# https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md
plugins=(git
z # jump to workspace
python pip
rust
zsh-autosuggestions zsh-syntax-highlighting
vi-mode # ESC+v to edit current commandline
colored-man-pages # colorful man pages
history # hanful alias for history && search
)
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
# some settings
TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S'
unsetopt share_history
DISABLE_AUTO_TITLE="true"
unset MAILCHECK
# some alias
alias tailf='tail -f'
alias byobu='SHELL=/bin/zsh byobu'
alias bbr='byobu -r'
# jayson.zsh-theme
# Based on gnzh theme
setopt prompt_subst
() {
local PR_USER PR_USER_OP PR_PROMPT PR_HOST
# Check the UID
if [[ $UID -ne 0 ]]; then # normal user
PR_USER='%F{green}%n%f'
PR_USER_OP='%F{green}%#%f'
PR_PROMPT='%f> %f'
else # root
PR_USER='%F{red}%n%f'
PR_USER_OP='%F{red}%#%f'
PR_PROMPT='%F{red}> %f'
fi
# Check if we are on SSH or not
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
PR_HOST='%F{red}%M%f' # SSH
else
PR_HOST='%F{green}%M%f' # no SSH
fi
local return_code="%(?..%F{red}%? ↵%f)"
local user_host="${PR_USER}%F{cyan}@${PR_HOST}"
local current_dir="%B%F{blue}%d%f%b"
local rvm_ruby=''
if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect user-local rvm installation
rvm_ruby='%F{red}‹$(${HOME}/.rvm/bin/rvm-prompt i v g s)›%f'
elif which rvm-prompt &> /dev/null; then # detect system-wide rvm installation
rvm_ruby='%F{red}‹$(rvm-prompt i v g s)›%f'
elif which rbenv &> /dev/null; then # detect Simple Ruby Version Management
rvm_ruby='%F{red}‹$(rbenv version | sed -e "s/ (set.*$//")›%f'
fi
local git_branch='$(git_prompt_info)'
PROMPT="${user_host} ${current_dir}${rvm_ruby} ${git_branch}
$PR_PROMPT "
RPROMPT="${return_code}"
eval my_gray='$FG[246]'
RPS1='$my_gray%D{%Y-%m-%d %H:%M:%S}%{$reset_color%}%'
ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}["
ZSH_THEME_GIT_PROMPT_SUFFIX="]%f"
}
cargo install ripgrep
cargo install --locked zellij
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment