oh-my-zsh插件 zsh-autosuggestion自动补全 和 zsh-syntax-highlighting语法高亮
安装 on-my-zsh 插件插件在 .zshrc 的 plugins 中进行添加。
这些插件可以让oh-my-zsh更好用,推荐安装,不安装对使用vim也没什么影响。分两步
$ZSH_CUSTOM 安装完 zsh 后,默认已经存在。
安装 zsh-autosuggestions这是一个超级好用的插件,直接显示命令的操作记录,可以快速使用重复命令。
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
看效果
安装 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
这个插件会在终端以颜色的方式提示命令是否正确。
正确命令
不正确的命令
添加配置zsh-au ...
vim-IDE进化04 NERD-tree 文件目录管理树插件
演示这个插件的作用很大,可以方便的管理和打开文件、进入目录一个刚需插件。看效果图,左侧的目录就是插件显示的效果。
安装如果还不了解安装插件的话朋友,请移步vim-IDE 03 插件管理器plug插件,这里我们进行 vim IDE 化的第一个插件。
添加插件
vim ~/.config/nvim/init.vim
1234" NERDTree文件树Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }" NERDTree 中显示git信息Plug 'Xuyuanp/nerdtree-git-plugin'
添加保存后执行以下命令安装。
:PlugInstall
配置刚安装后,还需要进行一些配置,可以添加一些个性化的配置,用起来才会顺手。添加 NERDTree 配置
vim ~/.config/nvim/init.vim
12345678910111213141516171819202122232425 ...
vim-IDE进化03-插件管理器plug插件
管理插件的插件
vim 如果不添加插件,仅仅只有原来的编译文本等功能,加上插件之后,就可以做更多事情,加快处理效率,比如可以把它打造成一个写作环境、开发IDE,相当之好用。插件可以手动添加,手动添加步骤需要下载、解压、将文件放到对应目录下步骤多一些。可以使用挺件管理,很方便的添加自己需要的插件
Plug 插件管理vim 有很多插件管理器,如Vundle、vim-plug。Vundle 是 Vim bundle 的简称。vim-plug是一个开源、速度非常快的、极简的vim插件管理器。
安装 vim-plug我是基于 nvim 安装的插件,nvim 默认路径在 ~/.config/nvim/,vim-plug 这个插件需要安装在 autoload 这个目录下。
nvim1curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vim1curl -fLo ~/.vim/autoload/pl ...
vim-IDE进化02-nvim自身配置
配置好基础环境之后,开始对nvim进行配置,这个配置是非常有必要的,nvim 的默认配置实际上是不附合我们的需求的。
在本系列文中说提到vim都是指nvim,本人的习惯改不过来。nvim 的配置非常之多,要配置成适我们的IDE,要配置各个细节。从本节开始,每一次的改进都会一点一点随着文章添加进这个配置,每一篇的配置都基于上一篇。
主要从几个方面进行配置:
编码设置
分屏设置
按键映射
其他设置
编辑配置文件
~/.config/nvim/init.vim
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465"=================================" VIM 自身配置"=================================" 编码设置set fileencodings=utf-8,gb2312,gb18030,gb ...
vim-IDE进化01-iterm2、nvim、oh-my-zsh环境配置
现在开发、写文章基本上已经离不开 vim了,写 java 使用 IDEA,vim 也能完全胜任,在 IDEA 中添加 ideavim配合开发,写go直接用vim,写文章就是直接上vim。
配置存放仓库不定期更新配置
https://github.com/forfreeday/vim
先上效果图
环境准备
macOs
iterm2
on-my-zsh
nvim
这三个是什么关系
iterm2 是终端工具,负责调用终端命令行工具
on-my-zsh 是 bash 工具,对bash增加了一些优化
nvim 是vim的改进版
插件依赖环境
python3
nodejs
pip3
如果已经有了相关环境不需要安装,如果没有安装一下依赖环境
12345npm install -g neovimnpm install -g typescriptpip3 install jedipip3 install pylint
iterm2这个是主要的工具,在mac使用shell可以做大量的自定义设置。
安装 iterm2以下两种方式二选一:
下载的是压缩文件安装
iTerm2下载地址:https: ...
CocConfig参数设置说明
前言如果常用vim的程序员的话,coc 这个插件即使没用过也听说过,这真是个强到没边的插件。之所以写这个文件是因为用了一段coc发现真是个强大的插件,可以对每次项功能做到非常精细的配置。自己在用的过程中每一项都一点一点验证,把这个过程记录下来,可能会有很多朋友能用的上。
CocConfig编辑CocConfig的方式有两种:
1.在vim输入: :CocConfig,保存后生成文件2.编辑文件,默认不存在该文件:
~/.config/nvim/coc-settings.json
完整配置,下面标逐渐分析每个配置的说明,每个配置都是在使用中,一点一点验证。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081 ...
shell判空true false的一个坑
前言在写shell的时候发现一个违反直觉的的操作,一般判断一个变量是否为boolean,习惯上使用if param。但是在写脚本的时候,发现无论如何,不会走false。
反例在很多编程语言中,可以直接使用 if boolean,来判断这个变量是否为true。但是在shell当中直觉上是可以,但实际上是不能。
123456aaa=falseif [[ $aaa ]];then echo "is true"else echo "is false"fi
结是为is true,是不是违反直觉。
为什么这段脚本会进is true。
shell 是怎么执行这一段脚本的:
1sh -x test.sh
结果:
1234+ aaa=false+ [[ -n false ]]+ echo 'is true'is true
可以看到,如果是一个变量,shell 会默认加上-n来判断变量是否为空。aaa是有值的,而且在shell里,false 并不代表false。真正代表true和false的是0和1,没想到吧。
正常判断注意,这里用的是 ...
shell-判断奇偶数
前言不能直接除2的就不是偶数,比较简单。
123456789101112131415161718192021#!/bin/bashdataArr=(012345678910)for i in ${!dataArr[@]}do if [[ $(($i%2)) = 0 ]]; then echo "index: $i, data: ${dataArr[$i]}" fidone
结果:index: 0, data: 0index: 2, data: 2index: 4, data: 4index: 6, data: 6index: 8, data: 8index: 10, data: 10
需要注意的是,$(($i%2)) = 0 等号中间是有空格的,不能连着写,否则结果不正确。这可真是垃圾的设计!!
shell 数组
shell 也支持数组,就是写法跟平时的开发语言不太一样,反正我是觉得挺别扭。
声明数组数组数据使用一对括号( var )包起来,就能成为数组。
1234arr=(10 20 30 40)echo $arrecho $arr[1]echo $arr[2]
结果:
1020
打印数组打印数组的话要注意,直接打印数组,只会打印出第一条数数据,必须加上* 或 #,才能全部输出。
12345678910111213141516171819#!/bin/bash#数组取值days=(one two three 4)echo ${days}echo ${days[0]}echo ${days[1]}echo ${days[@]}echo ${days[*]}echo "**********"# 重置数组names=()names[1]=tomnames[2]=jackecho ${names}echo ${names[1]}echo ...
shell 保持gc.log文件个数
摘要使用JDK8的老项目,开启了gc log用于排查问题,但是每次重启总是会覆盖之前的gc log,所以写了一个脚本保存gc log。如果是JDK11直接使用xlog,就可以配置很详细的日志策略。能起到一个什么效果,就是控制文件的个数。
脚本说明:maxFile: 允许最大文件个数currentDirCount: 当前目录包含多少日志文件oldFileSize: 需要清理的老文件数量ls -1: 升序排序,排时间较早的文件排列
123456789101112131415161718192021222324252627#!/bin/bashmaxFile=5gcLogDir=logs/gc_logs/echo 'backup gc.log'if [ ! -d "$gcLogDir" ];then mkdir -p 'logs/gc_logs'fiif [ -f 'gc.log' ]; then dateformat=`date "+%Y-%m-%d_%H-%M-%S"` tar -c ...