前端analysis | 3w & 1h

《Linux》- shell vim

2020-09-21

linux vim

vi早起版本的改进,vi improved, 支持高亮,自动缩进等
vim 存在三种模式: 命令模式,输入模式,编辑模式

vim操作

文件概览

vim编辑文件,初次打开,左下方显示,文件名、总行数、总字符数

直接定位到指定行

1
2
3
4
5
#定位行
vim +20 test.v1

#定位字符
vim +/nobody test.v1

进入输入模式

按下I、i、O、o、A、a等键来完成

  • i ——在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
  • I ——在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首再执行i命令
  • a ——在当前光标所在位置之后插入随后输入的文本
  • A ——在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
  • o ——在光标所在行的下面插入新的一行。光标停在空行的行首,等待输入文本
  • O ——在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

在Linux纯字符界面中,默认是不支持中文输入的。如果想要输入中文,则有三种方法。
(1)安装中文语言支持和图形界面,在图形界面下输入中文,使用gVim(Vim的图形前端)。
(2)安装中文语言支持,使用远程连接工具(如PuTTY),在远程连接工具中调整中文编码,进行中文输入。
(3)倘若非要在Linux纯字符界面中输入中文,则可以安装中文插件,如zhcon

光标移动

字符级别移动 - 箭头,hjkl

单词级别移动 - w b e

行首、行尾级别移动 - 0 $

待验证

移动到一行指定字符位置 fp

移动到匹配的括号处 %

移动到指定的行nG

查找指定字符

/ 向下查找

? 向上查找

:set ic 忽略大小写

/^root 开始, /root$结尾的行

删除与copy

命令行模式下

  • x 删除光标后,单个字符

  • 3x ,删除光标后,3个字符

  • D ,删除光标后面的整行字符

  • dd 删除光标所在行

  • 4dd, 删除光标所在行以及后面的3行

  • :1,5d 删除第一行~第五行

  • dG, 删除光标后,所有内容

  • y,复制光标所在行,并下移

  • ny,复制光标所在行多次,

  • p,粘贴内容到光标所在位置后面

  • P,粘贴内容到光标所在位置前面

  • u 撤销所做内容,多次撤销操作多次即可

  • j 2行并在一行

文件保存

w 保存不退出
q 不保存退出
! 强制执行

  • wq 保存且退出
  • w /tmp/ss.txt 另存为
  • shift+z 两次,也会退出 ,q!强制退出

文件编辑

:set nu ,显示行号
可以在当前登录用户目录下,添加配置~/.vimrc,配置默认显示行号

1
2
3
set nu 
# 命令行模式,忽略大小写
set ic

条件判定

命令行取值

1
2
3
./deploy_tar.sh xx.tar.gz 
$0 - 文件名
$1 - 包名称

命令行默认值

1
distDir=${2:-"build"}

服务器ip

1
HOST_IP = ${ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2} '| cut -f1 -d '/' } 

时间格式化

1
dateTime = $(date +%Y-%m-%d-%s)

正则判定

1
2
3
4
5
6
7
if [[ $packageName == *.tar ]];then
//do something
elif [[$packageName == *.tar.gz ]];then
//
elif [[$packageName == *.zip ]] ; then
//
fi

获取curl结果

1
result = $(curl -X GET url)

多窗口编辑

逐个打开

1
2
3
4
5
6
#先打开
vim test.sh

#命令模式输入,水平共享屏幕:
sp ./demo.sh
vp ./demo.sh

同时打开,Ctrl+ww切换

1
vim -o demo.sh test.sh 

编辑过程中,查看命令结果

1
2
#命令行模式
:! ls -a

编辑一个文件时,r命令导入另一个文件内容

连续行注释

利用正则区域替换

1
2
3
4
#命令行模式,开启注释
:1,10s/^/#/g

:1,10s/#//g

当然也可以map|unmap自定义快捷键,实现

宏命令处理,当然也可用与不连续行处理

  • 命令行模式,输入q<宏名称>,开始recording
  • 然后进入编辑模式,进行编辑,然后退出到命令行模式,按下q退出宏记录,
  • 在其余的行,命令行模式,调用@<宏>即可

unix2dos | dos2unix

需要手动安装

1
2
3
dos2unix file.txt

unix2dos test.sh
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏