[新增] 新增'公共>开发环境.zsh'中Go语言的检测部署功能, 新增'公共>函数.zsh'中的获解函数, 优化解压函数, 优化输出函数, 新增两个vim插件, git处理和标签栏
This commit is contained in:
parent
9153924a69
commit
c7033b6da9
77
公共/函数.zsh
77
公共/函数.zsh
|
@ -26,10 +26,11 @@ readonly 色彩=(
|
|||
)
|
||||
|
||||
# 用于规范输出的工具
|
||||
# 位置参数 1 -> 整数 <- 1: 成功(亮绿); 2: 失败(暗红); 3: 信息(绿色); 4: 通知(黄色); 5: 异常(紫色)
|
||||
# 位置参数 2 -> 字符 <- 在命令行输出的字符串
|
||||
# 实例 `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"`
|
||||
# 例: `输出 0 "执行成功"`; `输出 3 "请及时更新依赖"`
|
||||
# *-* 一 -> 整数 <- 1: 成功(亮绿); 2: 失败(暗红); 3: 信息(绿色); 4: 通知(黄色); 5: 异常(紫色)
|
||||
# *-* 二 -> 字符 <- 在命令行输出的字符串
|
||||
输出() {
|
||||
echo -n "($(date +"%Y-%m-%d %H:%M:%S"))"
|
||||
if (($1 == 0)); then
|
||||
echo -e "${色彩[2]}[${色彩重置}${色彩[1]} 成功 ${色彩重置}${色彩[2]}]${色彩重置} $2"
|
||||
elif (($1 == 1)); then
|
||||
|
@ -60,7 +61,7 @@ readonly 色彩=(
|
|||
###############################################################################
|
||||
|
||||
# 更具用户输入判断是否需要继续
|
||||
# *-* 位置参数 1 -> 字符 <- 用于提示用户选择时候的提示语
|
||||
# *-* 一 -> 字符 <- 用于提示用户选择时候的提示语
|
||||
# -*- 返回值: 如果 输入`是/Y/y/yes` 返会0, 其他情况返会1
|
||||
是否() {
|
||||
输出 3 "$1((是/否 Yes/No))"
|
||||
|
@ -72,56 +73,58 @@ readonly 色彩=(
|
|||
}
|
||||
|
||||
# 用于判断两个版本号之间的大小
|
||||
# 格式实例:1.0.0, v8.8, go1.20.8
|
||||
# *-* 位置参数 1 -> 版本1 <- 第一个版本号
|
||||
# *-* 位置参数 2 -> 版本2 <- 第二个版本号
|
||||
# -*- 如果 版本1 >= 版本2 则返会0, 否者返会1
|
||||
# 使用实例: 版本对比 "$1" "$2" && echo "1: $1" || echo "2: $2"
|
||||
# 备注: 版本格式实例 1.0.0, v8.8, go1.20.8
|
||||
# 例: `版本对比 "$1" "$2" && echo "1: $1" || echo "2: $2"`
|
||||
# *-* 一 -> 字符(版本1) <- 建议为本地版本
|
||||
# *-* 二 -> 字符(版本2) <- 建议为需要对比的版本
|
||||
# -*- 返回值: 如果 版本1 >= 版本2 则返会1, 否者返会0, 根据建议填写参数效果则是本地如果是最新版则不会进入if判断
|
||||
版本对比() {
|
||||
# 判断版本是否为空
|
||||
if [ -z "${1// }" ]; then
|
||||
return 0
|
||||
elif [ -z "${2// }" ]; then
|
||||
return 1
|
||||
fi
|
||||
# 使用IFS分割版本号为数组
|
||||
IFS='.' read -r -A 版本数组A <<< ${1//[^0-9.]/}
|
||||
IFS='.' read -r -A 版本数组B <<< ${2//[^0-9.]/}
|
||||
|
||||
# 逐段比较各个部分的大小
|
||||
for ((i=1; i <= ${#版本数组A[@]}; i++)); do
|
||||
if (( ${版本数组A[i]} > ${版本数组B[i]} )); then
|
||||
return 0
|
||||
elif (( ${版本数组A[i]} < ${版本数组B[i]} )); then
|
||||
return 1
|
||||
elif (( ${版本数组A[i]} < ${版本数组B[i]} )); then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
# 如果循环结束仍未返回,则认为两个版本号相等
|
||||
return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
# 自动根据文件后缀选择响应的解压工具进行就地解压
|
||||
# *-* 一 -> 字符(文件名) <- 压缩文件
|
||||
解压(){
|
||||
文件名=$1
|
||||
后缀="${文件名##*.}"
|
||||
|
||||
if [[ ${文件名} == *".tar."* ]]; then
|
||||
后缀="tar.${后缀}"
|
||||
fi
|
||||
# 根据后缀选择解压命令
|
||||
case ${后缀} in
|
||||
"tar.gz" | "tgz")
|
||||
tar -xzvf ${文件名}
|
||||
;;
|
||||
"tar.xz")
|
||||
tar -xJvf ${文件名}
|
||||
;;
|
||||
"tar.bz2" | "tbz2")
|
||||
tar -xjvf ${文件名}
|
||||
;;
|
||||
"zip")
|
||||
unzip ${文件名}
|
||||
;;
|
||||
"rar")
|
||||
unrar x ${文件名}
|
||||
;;
|
||||
"7z")
|
||||
7z x ${文件名}
|
||||
;;
|
||||
*)
|
||||
echo "不支持的压缩格式"
|
||||
return 1
|
||||
;;
|
||||
"tar.gz" | "tgz") tar -xzvf ${文件名} ;;
|
||||
"tar.xz") tar -xJvf ${文件名} ;;
|
||||
"tar.bz2" | "tbz2") tar -xjvf ${文件名} ;;
|
||||
"zip") unzip ${文件名} ;;
|
||||
"rar") unrar x ${文件名} ;;
|
||||
"7z") 7z x ${文件名} ;;
|
||||
*) 输出 5 "不支持的压缩格式" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 自动获取并且解压压缩包
|
||||
# *-* 一 -> 字符(网址) <- 在线获取压缩包的地址
|
||||
获解(){
|
||||
wget -t 3 --content-disposition -q --show-progress -c $1 || 输出 5 "无法下载程序包"
|
||||
包名="$(ls -t | head -n1)"
|
||||
输出 2 "已获取${包名}"
|
||||
解压 ${包名}
|
||||
}
|
62
公共/开发环境.zsh
62
公共/开发环境.zsh
|
@ -1,9 +1,8 @@
|
|||
#!/usr/bin/zsh
|
||||
|
||||
#####################################
|
||||
# 用于快速配置旧世界的开发环境 #
|
||||
# 支持的语言: #
|
||||
# [ ] go #
|
||||
# 自动配置常用开发环境 #
|
||||
# [x] go #
|
||||
# [ ] rust #
|
||||
# [ ] java #
|
||||
# [ ] nodejs #
|
||||
|
@ -16,6 +15,14 @@
|
|||
# 变量 #
|
||||
#############################################################################
|
||||
|
||||
# 加载基础环境
|
||||
source $HOME/.config/xunmi/信息
|
||||
# source $HOME/x/公共/函数.zsh
|
||||
source ${言灵一路径}/x/公共/函数.zsh
|
||||
路径一开发环境="${言灵一路径}/ide"
|
||||
mkdir -p ${路径一开发环境}
|
||||
|
||||
# 配置全局变量
|
||||
local 旧世界一下载地址="http://ftp.loongnix.cn"
|
||||
|
||||
typeset -A 语言一GO=(
|
||||
|
@ -29,27 +36,37 @@ typeset -A 语言一GO=(
|
|||
# 函数(func) #
|
||||
#############################################################################
|
||||
|
||||
# latest_version=$(curl -s https://golang.google.cn/dl/ | grep -o 'go1.*linux-.*\.tar\.gz' | head -n 1)
|
||||
|
||||
开发环境一检测一GO(){
|
||||
输出 0 "2: ${言灵一函数}"
|
||||
# 检测安装情况
|
||||
unset 下载地址
|
||||
# 获取在线版本
|
||||
版本一在线=$(curl -s ${语言一GO[下载地址]} | grep -o $(echo "${语言一GO[版本正则]}" | sed "s/架构/${言灵一系统架构}/g") | head -n 1)
|
||||
语言一GO[下载地址]="${语言一GO[下载地址]}${版本一在线}"
|
||||
if [[ ${系统一世界类型} == "旧世界" ]]; then
|
||||
echo "旧世界?"
|
||||
输出 4 "[GO检测]旧世界支持开发兼容性较差,建议尽快迁移进入龙芯新世界!"
|
||||
版本一在线=${语言一GO[旧世界版本]}
|
||||
下载地址="${旧世界一下载地址}/toolchain/golang/${版本一在线%.*}/abi1.0/${版本一在线}.linux-loong64.tar.gz"
|
||||
语言一GO[下载地址]="${旧世界一下载地址}/toolchain/golang/${版本一在线%.*}/abi1.0/${版本一在线}.linux-loong64.tar.gz"
|
||||
fi
|
||||
输出 0 "版本: ${版本一在线}"
|
||||
if 版本对比 ${版本一主机} ${版本一在线}; then
|
||||
版本一主机=$(go version) | awk '{print $3}'
|
||||
输出 2 "[GO检测]在线版本: ${版本一在线%.linux*}"
|
||||
# 对比本地版本
|
||||
if [ -x "$(command -v go)" ]; then
|
||||
版本一本地="$(echo $(go version) | awk '{print $3}')"
|
||||
# 判断版本新旧
|
||||
输出 2 "[GO检测]本地版本: ${版本一本地}"
|
||||
if 版本对比 "${版本一本地}" "${版本一在线%.linux*}"; then
|
||||
输出 2 "[GO检测]发现新版本GO"
|
||||
return 1
|
||||
fi
|
||||
输出 2 "[GO检测]已是最新的GO版本"
|
||||
return 0
|
||||
fi
|
||||
输出 2 "[GO检测]未检测到GO语言的本地版本"
|
||||
return 1
|
||||
}
|
||||
|
||||
# 用于检测当前版本是否最新
|
||||
# 备注: 所有`开发环境一检测一*`返回0则代表无需更新,返回1则代表需要更新
|
||||
# *-* -> 位置参数1 <- 需要检测的编程语言
|
||||
# -*- -> 返回值 <- 如果 本地版本 >= 在线版本 返会 空, 反之这会返回最新的在线版本下载地址
|
||||
开发环境一检测(){
|
||||
|
||||
}
|
||||
|
@ -64,11 +81,21 @@ typeset -A 语言一GO=(
|
|||
系统一主机架构=${言灵一系统一主机架构}
|
||||
}
|
||||
|
||||
开发环境一安装一go(){
|
||||
# 换源 go env -w GOPROXY=https://goproxy.cn
|
||||
开发环境一部署一GO(){
|
||||
输出 2 "开始从 ${语言一GO[下载地址]} 下载部署最新版go语言"
|
||||
|
||||
cd ${路径一开发环境}
|
||||
获解 ${语言一GO[下载地址]}
|
||||
echo "# [觅库]GO语言环境变量-1" >> $HOME/.zshrc
|
||||
echo "export PATH=${路径一开发环境}/go/bin:\$PATH" >> $HOME/.zshrc
|
||||
echo "export GOPATH=$HOME/.goenv" >> $HOME/.zshrc
|
||||
source $HOME/.zshrc
|
||||
go env -w GOPROXY=https://goproxy.cn
|
||||
输出 0 "成功安装GO语言($(go version)), 并自动切换为国内GO语言下载源, 重启zsh生效!"
|
||||
cd -
|
||||
}
|
||||
|
||||
开发环境一安装(){
|
||||
开发环境一部署(){
|
||||
|
||||
}
|
||||
|
||||
|
@ -76,10 +103,7 @@ typeset -A 语言一GO=(
|
|||
# 主函数(main) #
|
||||
###############################################################################
|
||||
|
||||
source $HOME/.config/xunmi/信息
|
||||
source ${言灵一路径}/x/公共/函数.zsh
|
||||
开发环境一初始化
|
||||
|
||||
开发环境一检测一GO
|
||||
|
||||
|
||||
# 开发环境一部署一GO
|
||||
|
|
10
安装.zsh
10
安装.zsh
|
@ -9,7 +9,7 @@ source /etc/os-release
|
|||
# 脚本在执行过程中遇到任何非零返回码的命令时立即退出
|
||||
# set -e
|
||||
|
||||
readonly 言灵一版本="v1.0.0"
|
||||
readonly 言灵一版本="v1.0.1"
|
||||
|
||||
###############################################################################
|
||||
# 全局变量 #
|
||||
|
@ -45,7 +45,7 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
|||
}
|
||||
|
||||
# 从git镜像仓库获取依赖
|
||||
# *-* -> 位置参数 1 <- 拉去`作者/仓库名`, 比如: ohmyzsh/ohmyzsh
|
||||
# *-* -> 位置参数 1 <- 拉去`作者/仓库名`
|
||||
# *-* -> 位置参数 2 <- 保存地址, 保存到本地的哪个路径
|
||||
获取一git(){
|
||||
git镜像="https://gitcode.com/mirrors"
|
||||
|
@ -155,7 +155,7 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
|||
fi
|
||||
cp -v ${目录一根}/配置/zshrc $HOME/.zshrc
|
||||
sed -i "s:export ZSH=/etc/oh-my-zsh:export ZSH=${配置一路径}:" $HOME/.zshrc
|
||||
是否 "是否需要将zsh预设配置赋予所有新用户" && sudo mv $HOME/.zshrc /etc/skel/.zshrc
|
||||
是否 "是否需要将zsh预设配置赋予所有新用户" && sudo cp $HOME/.zshrc /etc/skel/.zshrc
|
||||
if 是否 "将Zsh设置为默认命令行"; then
|
||||
chsh -s /usr/bin/zsh
|
||||
输出 0 "已将zsh设置为默认命令行,此设置主要适用于ssh和tty如终端不生效则需要在可视化设置中手动配置启动时加载 '/usr/bin/zsh' "
|
||||
|
@ -183,6 +183,8 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
|||
获取一git preservim/nerdcommenter ${vim一配置路径}/start/注释工具
|
||||
获取一git vim-airline/vim-airline ${vim一配置路径}/start/VIM状态栏
|
||||
获取一git vim-airline/vim-airline-themes ${vim一配置路径}/start/VIM状态栏_皮肤
|
||||
获取一git airblade/vim-gitgutter ${vim一配置路径}/start/Git插件
|
||||
获取一git preservim/tagbar ${vim一配置路径}/start/标签栏
|
||||
获取一git Yggdroot/LeaderF ${vim一配置路径}/start/模糊搜索器
|
||||
# if 是否 "是否启用基于c的模糊搜索(默认使用python, c的性能会好很多)"; then
|
||||
# vim -c ":LeaderfInstallCExtension" ${vim说明}
|
||||
|
@ -228,7 +230,7 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
|
|||
xmtop版本="v4.2.1"
|
||||
输出 2 "开始下载 xmtop-${xmtop版本}-${世界一类型}"
|
||||
xmtop_url="https://gitea.whlug.cn/xunmi/xmtop/releases/download/${xmtop版本}/xmtop_${世界一类型}"
|
||||
sudo wget -t 3 -q --show-progress -c ${xmtop_url} || 输出 5 "无法下载程序包" || return 301
|
||||
sudo wget -t 3 -q --show-progress -c ${xmtop_url} || 输出 5 "无法下载程序包"
|
||||
sudo mv -v xmtop_${世界一类型} /usr/bin/xmtop
|
||||
sudo chmod 755 /usr/bin/xmtop
|
||||
else
|
||||
|
|
|
@ -3,13 +3,11 @@
|
|||
言灵vim配置用法, 查看此教程前需对vim有一定了解, 如果您完全没有使用过vim, 请在命令行中执行 `vimtutor` 学习vim相关操作后再来查看此vim扩展
|
||||
> 最少查看 `vimtutor` 的前三章
|
||||
|
||||
|
||||
## 快捷键
|
||||
|
||||
vim常用快捷键记录
|
||||
|
||||
> 备注: <占位符>(\<leader>): 是vim中自定义的键盘前缀, 默认使用反斜杠`\`
|
||||
> 可以在`~/.vimrc`中自定义为其他键位`let mapleader = 'x'`
|
||||
> 备注: <占位符>(\<leader>): 自定义键盘前缀, 默认为反斜杠`\` 在`~/.vimrc`可自定义 -> `let mapleader = 'x'`
|
||||
> 冒号 `:` 开头的快捷键是需要用户在预览模式下输入启动
|
||||
|
||||
* `[数量]<占位符>cc` 注释当前行和选中行
|
||||
|
@ -21,8 +19,11 @@ vim常用快捷键记录
|
|||
* `*` 在本文件中查找函数或变量
|
||||
* `ctrl o` 返回跳转之前的位置
|
||||
* `ctrl i` 返回 `ctrl o` 跳转之前的位置
|
||||
* `]c` 跳转到下一个修改的位置
|
||||
* `[c` 跳转到上一个修改的位置
|
||||
|
||||
* `ctrl n` 打开目录
|
||||
* `ctrl g` 打开属性栏
|
||||
* `ctrl n` 打开目录栏
|
||||
* `<占位符>n` 将光标聚焦到目录
|
||||
* `ctrl t` 切换目录状态(打开则关闭, 关闭则打开)
|
||||
* `ctrl f` 打开目录搜索框
|
||||
|
@ -67,10 +68,11 @@ vim常用快捷键记录
|
|||
|
||||
## 已安装插件
|
||||
|
||||
* 代码补全工具(coc.nvim)
|
||||
* 数状目录(nerdtree)
|
||||
* VIM状态栏(`vim-airline/vim-airline`): https://gitcode.com/vim-airline/vim-airline/overview
|
||||
* 注释工具(`preservim/nerdcommenter`): https://gitcode.com/mirrors/preservim/nerdcommenter/overview
|
||||
* 模糊搜索(`Yggdroot/LeaderF`): https://gitcode.com/Yggdroot/LeaderF/overview
|
||||
|
||||
|
||||
* 代码补全工具[neoclide/coc.nvim](https://gitcode.com/mirrors/neoclide/coc.nvim)
|
||||
* 数状目录[scrooloose/nerdtree](https://gitcode.com/mirrors/scrooloose/nerdtree)
|
||||
* VIM状态栏[vim-airline/vim-airline](https://gitcode.com/vim-airline/vim-airline/overview)
|
||||
* VIM状态栏-皮肤[vim-airline/vim-airline-themes](https://gitcode.com/mirrors/vim-airline/vim-airline-themes)
|
||||
* 注释工具[preservim/nerdcommenter](https://gitcode.com/mirrors/preservim/nerdcommenter/overview)
|
||||
* 模糊搜索[Yggdroot/LeaderF](https://gitcode.com/Yggdroot/LeaderF/overview)
|
||||
* Git插件[airblade/vim-gitgutter](https://gitcode.com/mirrors/airblade/vim-gitgutter)
|
||||
* 标签栏[preservim/tagbar](https://gitcode.com/mirrors/preservim/tagbar)
|
||||
|
|
Loading…
Reference in New Issue
Block a user