vim的使用

vim的使用

1.课前拓展

关于职场的体系(通过阿⾥体系看技术⼈技术成⻓)
阿⾥的职场体系表:

在这里插入图片描述

本科应届⽣:P5: 在别⼈的指导下完成任务
P6: 独⽴负责端到端的任务,P6的主要提升⽬标就是成为独⽴⾃主的项⽬能⼿。知道怎么做,还要知道为什么。
⼤部分通过努⼒可以升级到P7
条件优秀的可以升级到p8-p9
p10以上就⽐较困难了,需要有机遇。
⼤部分⼈在p6-p7级别。
刚毕业是 P5,2 年升 P6,3 年升 P7,3 年升 P8,那么升到 P8 基本 ,p8是领域专家:精通领域相关技术。
上也要 9 年了。这还是⼀切顺利的情况,要是有⼀两次晋级不通过,时间就更⻓了
对很多⼈来说: 晋级成功对很多⼈来说就意味着成⻓停⽌。
很多⼈到P7就停⽌成⻓了。
2.拆解⼀万⼩时成为专家:
根据⾃⼰公司⽬前从事的来去拆解需要重点掌握提升的单项技能:
把2-3年的⽬标分解成6个⽉的⽽极端⽬标:
在把6个⽉的⼆阶段⽬标拆解成1-2个⽉的三阶段⽬标,确定3-5个具体⾏动,再划分到每周的计划。
从熟悉到熟练掌握,甚⾄到精通之路:
提升linux整体技能: 6个⽉
提升专项编程语⾔能⼒ go : 6个⽉
提升专项编程语⾔能⼒,shell: 6个⽉
提升专项devops技术能⼒: 6个⽉
3.什么样的⼈更容易晋升
1.主动做事,擅于汇报,主动沟通,会哭的孩⼦有奶吃。 只是主动做事容易变成⼯具⼈: 脏活累活都归你,晋升机会总没你。
2.不断挖掘成⻓点,提升⾃⼰能⼒: 不要把⼀年的⼯作经验重复10年。
3.让⾃⼰的能⼒为公司产出价值,⽐如你打算学英语,这个技能对于⽬前你为公司产出价值没有任何⽤处,就可以先不学。 如果你们公司正在⽤k8s,那你学习go语⾔,就更容易为公司产出价值
4.怎样快速晋升到P8
第⼀种⽅法是研究业界的开源项⽬。
优先关注本
领域成熟的、流⾏的开源项⽬
第⼆种⽅法是参加业界的技术⼤会,⽐如 QCon 技术⼤会、架构师峰会、GMTC(全球⼤
前端技术⼤会)、GOPS(全球运维⼤会)和⼈⼯智能峰会等。
参加技术会议⼀⽅⾯可以快速掌握本领域相关的技术情况,另⼀⽅⾯可以关注⼤会上讲的最多的技术
是哪个,有助于识别出业界整体的技术发展。

1.vim的介绍

vim号称编辑器之神,唯快不破,可扩展,各种插件满天⻜。
vim源于vi, 但不是vi。 vi是美国计算机科学家⽐尔.乔伊编写并发布于1976年。关键是这个只是他职业⽣涯的⼀个副产品,没有做什么维护。
vim是布莱姆.⽶勒于1991年发布。
优秀的程序员都有个特性,感觉不爽就写个⼯具。
vim的开发语⾔是c和vimscript

2.vim常用的四种模式

1.普通模式: vim启动后的默认模式,⽤来移动光标,删除⽂本,覆盖输⼊⽂本,恢复操作,粘贴⽂本

2.插⼊模式,输⼊i后进⼊插⼊模式,在这个模式下敲击键盘会往⽂字缓冲区增加⽂字,相当于普通的编辑器的编辑模式

3.可视模式: 选择多⾏⽂本进⾏复制,删除,排序等操作

4.命令模式: 执⾏内部和外部命令,通过: ? / 等进⼊命令模式,进⾏操作

3.vim的安装

3.1Windows下安装vim

下载地址:https://github.com/vim/vim-win32-installer/releases (建议)
官⽹:https://www.vim.org/download.php			#pc

1.安装:

在这里插入图片描述

2.安装完成后:

在这里插入图片描述

3.在安装⽬录有配置⽂件可以进⾏设置:

在这里插入图片描述

4.添加set number ,这样就可以显示⾏号了

在这里插入图片描述

3.2.在linux下的安装vim

查看是否已经安装:

[root@itlaoxin ~]# rpm -qf `which vim`
[root@itlaoxin ~]# rpm -qf `which vi

4. vim基础操作

4.1. vim命令速查图

在这里插入图片描述

4.2. 编辑模式常用命令

首次进入文件 ---- 命令模式
出现 “Insert” ---- 编辑模式
退出插⼊模式:输⼊: ---- 命令⾏模式

进⼊编辑模式的命令: aio AIO

说明:
i	#当前字符之前插⼊ (光标前)
I	#⾏⾸插⼊ (⾏⾸)
a	#当前字符之后插⼊ (光标后)
A	#⾏尾插⼊(⾏尾)
o	#下⼀⾏插⼊ (另起⼀⾏)
O	#上⼀⾏插⼊(上⼀⾏插⼊)

其他命令:

小写x			#向后删除⼀个字符
大写X			#向前删除⼀个字符
u			    #撤销⼀步 每按⼀次就撤销⼀次
r			    #替换

4.3. 命令模式下的基本操作

1) 光标定位

hjkl				 #左下上右
0 和 home键			 #表⽰切换到⾏⾸, 
$和end键				 #表⽰切换到⾏尾
gg 					 #快速定位到⽂档的⾸⾏ , 
G					 #定位到未⾏
3gg 或者 3G 			 #快速定位到第3⾏

在这里插入图片描述

2) 查询

/string(字符串) -----找到或定位你要找的单词或内容,如果相符内容⽐较多,我们可以通过N、n来进⾏向上向下查找,并且vi会对查找到的内容进⾏⾼亮显⽰,取消⽤ :noh
/^d ----^意思表⽰以什么开头 ,,查找以字⺟d开头的内容
/t$ -----$意思表⽰以什么结尾,,查找以字⺟t结尾的内容

3)对文本进行编辑

1.复制
y 复制(以字符为单位) :表⽰对单个字符进⾏复制,如果要复制整⾏,⽤yy(以⾏为单位)
复制N⾏: Nyy ,⽐如: 2yy ,表⽰复制2⾏
y$:从光标所在位置复制到⾏尾
y^:从光标所在位置复制到⾏⾸
2.删除
dd(删除,以⾏为单位,删除当前光标所在⾏)
删除N⾏: Ndd ,⽐如: 2dd ,表⽰删除2⾏
d0:删⾄⾏⾸
d$:删⾄⾏尾
3.粘贴
p		#粘贴
dd		#剪切 
x 		#删除光标所在位置的字符
D		#从光标处删除到⾏尾
4.撤销
u 		#撤销操作
ctrl+r #还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样
r 		#替换,或者说⽤来修改⼀个字符
5.其他命令行命令
:q!”:退出 Vim
“:wq”:存盘退出
“:s”:执⾏替换
“:!”:执⾏外部命令
“:edit”(⼀般缩写为 “:e”):编辑⽂件
“:w”:写⽂件
“:r”:读⽂件 并且插⼊
“:help”:查看帮助

4.4 通过vim命令打开文件的光标定位问题

Vim file		 	第⼀⾏的⾏⾸
Vim file +5			打开文件在文件的第五行的行首
Vim file +			打开文件在文件的最后一行
Vim file + /root		匹配某个字符串
vim file:			#打开/新建⽂件,光标置于第1⾏⾏⾸,file为任意⽂件名。
vim file+n:			#打开文件,光标置于第n行行首,n为自然数。
vim file+:			#打开文件,光标置于最后1行行首
vim file+/pattern:	#将光标置于与pattern匹配的第一个字符处,pattern为任意字符串。

5.vim的配置文件

配置文件路径:

[root@localhost ~]# cd /usr/share/vim/vim74

在这里插入图片描述

syntax:vim的语法加亮文件

doc:帮助文档

colors:vim的配色方案

plugin:vim的插件,用来增强vim的功能

在syntax目录下可以看到一共有566个文件,也就是说vim对566种不同的文件类型提供不同的文件类型提供了语法加亮支持。期中就有我们的Java、python等。

[root@localhost syntax]# ls | wc -l
566

系统自带的插件不是很多:

[root@localhost vim74]# cd plugin/
[root@localhost plugin]# ls
getscriptPlugin.vim  README.txt     tohtml.vim
gzip.vim             rrhelper.vim   vimballPlugin.vim
matchparen.vim       spellfile.vim  zipPlugin.vim
netrwPlugin.vim      tarPlugin.vim

备注:

gzip.vim:编辑 .gz 压缩⽂件,在编辑以gz结尾的压缩⽂件时,会⾃动解压和压缩,操作者感觉不到这个⽂件是压缩⽂件
netrwPlugin:从⽹络上编辑⽂件和浏览(远程)⽬录(⽀持多种常⻅协议如 ftp 和 scp,可直接打开⽬录来选择⽂件)
matchparen:		对括号进⾏⾼亮匹配
rrhelper:		⽤于⽀持 --remote-wait 编辑(Vim 的多服务器会⽤到这⼀功能)
spellfile:		在拼写⽂件缺失时⾃动下载(Vim ⼀般只安装了英⽂的拼写⽂件)
tohtml:			把语法加亮的结果转成 HTML(执⾏:TOhtml)

6 vim的进阶

6.1 块的操作

V模式(列)
进⼊v模式 移动光标选择区域、
编程的时候需要进⾏多⾏注释:

1)、ctrl+v 进⼊列编辑模式
2)、向下或向上移动光标,把需要注释、编辑的⾏的开头选中起来
4)、然后按⼤写的I
5)、再插⼊注释符或者你需要插⼊的符号,⽐如"#"
6)、再按Esc,就会全部注释或添加了

删除:再按ctrl+v 进⼊列编辑模式;向下或向上移动光标 ;选中注释部分,然后按d, 就会删除注释符号。

6.2 调用外部文件或命令

假设:我想要写⼊我的⽹卡MAC地址,但是⾃⼰记不起来,我要查看⼀下,当前在vim编辑⽂档,照着写。这样好⿇烦。
在命令⾏模式下操作:

:!ifconfig	#调⽤系统命令

在这里插入图片描述

读取其他⽂件。(把其他⽂件中的内容追加到当前⽂档中)

vim hosts.bak
:r /etc/hosts

在这里插入图片描述

6.3 文本替换

格式 : 范围(其中%所有内容) s分隔符/旧的内容 分隔符/新的内容 (分隔符可以⾃定义)
默认是每⼀⾏的第⼀个符合要求的词 (/g全部)

% 所有内容

/g 全部

/gi 忽略大小写

:1,3 s/bin/itlaoxin		#替换第1到3⾏中出现的第⼀个bin进⾏替换为itlaoxin
:1,3 s/bin/itlaoxin/g	#替换第1到3⾏中查找到所有的bin进⾏替换为itlaoxin
:3 s/itlaoxin/aaaaa		#只把第3⾏中内容替换了
:% s/s/ssaass/g			#将⽂本中所有的s替换成ssaass
:% s/IT/yyy/gi			#将⽂本中所有的IT替换成yyy,并且忽略IT的⼤⼩写:gi忽略大小写
:% s@a@b@g				#将⽂本中所有的a替换成b

1.特殊的匹配:

\< 匹配以某单词开头的字符 ⽐如:			/\ 匹配单词的结尾
\s 匹配空⽩字符  和 
\S 匹配⾮空⽩字符
\d 匹配数字,相当于 [0-9] 				/\d2
\w 匹配单词字符,相当于 [0-9A-Za-z_] 		/\wb
\c 忽略⼤⼩写进⾏匹配					/\cm

2.查找某⼀个单词:

/root 你可以能会匹配到root1 root2
正确的⽅法: /\<root\>

在这里插入图片描述
可以看到root2 ,root3 不会匹配
这个在搜索函数的时候特别有⽤,函数名有时候前半部分相同。
⼩技巧:
*把光标移到希望搜索的关键字上,然后按下 键。Vim 会提取光标下的关键字,并⾃动添加 < 和 > 进⾏搜索

⽐如 ctrl +v 选中nologin , 输⼊I , 按esc , 在输⼊,默认匹配所有的
在这里插入图片描述

6.4⾃定义vim的使⽤环境

1.临时设置

:set nu 	#设置⾏号
:set ic 	#不区分⼤⼩写
:set list 	#显⽰控制字符 nolist
:set nonu 	#取消设置⾏号
:set noic 	#取消
:set ai		#⾃动缩进,⽐如换⾏操作,设置这个功能后,可以在下次操作时进⾏⾃动换⾏
:noh 		#取消⾼亮显⽰

2.永久设置环境

/etc/vimrc 设置后会影响到系统所有的⽤⼾
~/.vimrc #在⽤⼾的家⽬录下,创建⼀个.vimrc。这样只影响到某⼀个⽤⼾,没有⾃⼰建⼀个

[root@localhost ~]# vim /etc/vimrc
#修改这个文件等同于root包括普通用户和所有的用户,把他的所有配置文件都改了,他们的变量也会变了

[root@localhost ~]# vim .vimrc
#只想修改root用户,需要到root家目录中
[root@localhost ~]# cat .vimrc 
set nu
#创建一个文件测试:
[root@localhost ~]# vim a.sh

在这里插入图片描述
如果有别的用户,普通⽤⼾并不会设置

[root@localhost ~]# echo 123 | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ vim a.sh	

#默认没有行号,因为默认没有给他设置。

6.4 vim打开多个⽂件

注:ctrl+ww 在两⽂档之间进⾏切换编辑。
⼤写O左右分屏,⼩写的o上下分屏

⽅法1:以上下形势,打开两个⽂档

[root@localhost ~]# vim -o /etc/passwd /etc/hosts	#⼩写的o上下分屏

在这里插入图片描述

⽅法2:以左右⽅式打开两个⽂档

[root@localhost ~]# vim -O /etc/passwd /etc/hosts	#⼤写O左右分屏
#⽐较两个⽂件内容

6.5 diff命令 比较文件内容差异

[root@localhost ~]# cp /etc/passwd a.txt
[root@localhost ~]# diff /etc/passwd pass
21d20
< lisi:x:1000:1000::/home/lisi:/bin/bash

7.vim插件折腾实战

1.什么是 IDE?

1.概述

集成开发环境(IDE)是一种用于构建应用程序的软件,可将常用的开发人员工具合并到单个图形用户界面(GUI)中。IDE 通常由以下几个部分组成:

  • 源代码编辑器:一个旨在帮助开发人员轻松编写软件代码的文本编辑器,特色功能包括:视觉提示突出显示语法、特定编程语言的自动补全功能、检查正在编写的代码是否存在错误。
  • 本地构建版本自动化:这些实用工具可以在创建软件的本地构建版本时自动执行简单的可重复任务,如将计算机源代码编译成二进制代码、封装二进制代码、运行自动测试。
  • 调试器:一个用于测试其他程序的程序,它能以图形方式显示原始代码中的错误位置。

2.工具bash-support

bash-support 是一个高度定制化的 vim 插件,它允许你插入:文件头、补全语句、注释、函数、以及代码块。它也使你可以进行语法检查、使脚本可执行、一键启动调试器;而完成所有的这些而不需要关闭编辑器。

它使用快捷键(映射),通过有组织地、一致的文件内容编写/插入,使得 bash 脚本编程变得有趣和愉快。

插件当前版本是 4.3,4.0 版本 重写了之前的 3.12.1 版本,4.0 及之后的版本基于一个全新的、更强大的、和之前版本模板语法不同的模板系统。

下载地址:https://www.vim.org/scripts/download_script.php?src_id=24452
$ mkdir ~/.vim
$ cd .vim
$ unzip ~/Downloads/bash-support.zip

在 .vimrc ⽂件中激活它

$ vi ~/.vimrc
#filetype plug-in on #很多介绍写的这⼀⾏,实测应该是下⾯这⾏,可能跟版本相关
filetype plugin on
set number 			#可选,增加这⾏以在 vim 中显⽰⾏号

为新脚本⾃动⽣成⽂件头
在这里插入图片描述
⾸先设置你的个⼈信息(作者名称、作者参考、组织、公司等)
打开⽂件后,直接按\ntw 启动模板设置向导
vim test.sh 此时是插⼊模式,按esc, 然后快速输⼊\ntw 会弹出向导
在这里插入图片描述
输⼊1后按回⻋,在输⼊2按回⻋,进⼊下⾯的界⾯:
在这里插入图片描述

在这⾥修改邮箱,姓名等信息,然后保存退出。
在打开另外⼀个进⾏测试即可。

2. 打造⾃动语法检查⼯具

shellcheck 是⼀款实⽤的 shell脚本静态检查⼯具。
• 语法检查
• 提供建议帮你避坑
⽹⻚端: 在⽹⻚使⽤最简单,只要打开 https://www.shellcheck.net ,贴⼊你的脚本,运⾏检查功能即可。
本地安装:
下载地址:
https://github.com/koalaman/shellcheck#installing

[root@laoxin21 ~]# mkdir shell
[root@laoxin21 ~]# cd shell/
[root@laoxin21 shell]# pwd
/root/shell
[root@laoxin21 shell]# cp /root/shellcheck-stable.linux.x86_64.tar.xz ./
[root@laoxin21 shell]# ls
shellcheck-stable.linux.x86_64.tar.xz
[root@laoxin21 shell]#

解压登录:

[root@laoxin21 shell]# tar xf shellcheck-stable.linux.x86_64.tar.xz
[root@laoxin21 shell]# ls
shellcheck-stable shellcheck-stable.linux.x86_64.tar.xz
[root@laoxin21 shell]# cd shellcheck-stable/
[root@laoxin21 shellcheck-stable]# ls
LICENSE.txt README.txt shellcheck
[root@laoxin21 shellcheck-stable]#

使⽤⽅法: 在当前路径下创建脚本,并使⽤shellcheck检查语法

[root@laoxin21 shellcheck-stable]# vim a.sh
[root@laoxin21 shellcheck-stable]# ./shellcheck a.sh

3. shell脚本⾃动⽣成开头注释(重点)

[root@centos8-hkping ~]# vim .vimrc
set ignorecase
## 设置不开启⼤⼩写搜索
set cursorline
## 开启光亮光标⾏
set autoindent
## 设置⾃动缩进
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#**************************************************************
call setline(3,"#Author: itlaoxin")
call setline(4,"#WeChat: zmgaosh")
call setline(5,"#Date: ".strftime("%Y-%m-%d"))
call setline(6,"#FileName: ".expand("%"))
call setline(7,"#blog: https://zmedu.blog.csdn.net")
call setline(8,"#Description: Annotated script")
call setline(9,"#**************************************************************
call setline(10,"")
endif
endfunc
autocmd BufNewFile * normal G
## 将光标⾃动定位到末尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值