type
status
date
slug
summary
tags
category
Property
Jan 25, 2023 05:07 AM
icon
password
属性
属性 1
描述
Origin
URL
一、GVIM 介绍及安装二、配置 GVIM 界面2.1、简单. vimrc 配置使用2.2、功能齐全的. vimrc 及插件配置2.3、vim 常用插件使用方法2.3.1、多窗口编辑命令2.3.2、树形浏览窗口2.3.3、自动补全2.3.4、代码标记(mark)三、GVIM 使用3.1、打开一个文件3.2、三种工作模式3.2.1、命令模式3.2.2、输入模式(插入模式)3.2.3、底行命令模式(ex 转义模式)3.2.4、三种模式使用注意3.3、常用命令3.3.1、移动光标操作3.3.2、删除操作3.3.3、改变和替换操作3.3.4、保存文件并退出 gvim 编辑器3.3.5、查询命令3.3.6、拷贝粘贴命令3.3.7、文本加密(很少使用,了解即可)3.3.8、设置行号、设置大小写、设置分行、设置查询3.3.9、自动添加字符串(自动补全)3.3.10、排序3.3.11、大小写转换3.3.12、多个窗口操作3.3.13、visual 模式(重要)3.3.14、几种替换操作3.3.15、文件跳转(有用)3.3.16、比较3.3.17、grep 全局搜索字符串的方法3.3.18、其他指令四、正则表达式4.1、正则表达简要介绍4.2、正则表达使用方法4.2.1、搜索命令4.2.2、:s 替换命令4.2.3、元字符4.2.4、特殊字符4.2.5、表示数量的元字符4.2.6、表示位置的符号4.2.7、牛刀小试4.3、正则表达实例练习4.3.1、把所有单词 help 或 Help 都改为大写的 HELP4.3.2、使用单个空格替换一个或多个空格4.3.3、删除所有空行(没有任何字符,除了一个回车符)4.3.4、删除含有某些字符的行4.3.5、删除每行所有的前导空格4.3.6、在文件中的每一行的开始插入 >4.3.7、在每一行的尾部加上一个句号4.3.8、删除以数字开头的行(有开头有结尾)4.3.9、删除以 a,b,c 开头的行(有开头有结尾)4.4、替换变量(高级用法)4.4.1、删除重复行4.4.2、交换列表中所有连字符分割的条目的顺序4.4.3、将所有 foo(a,b,c) 的实例改为 foo(b,a,c)4.4.4、查找 test 开头的后面为一个或多个空格,然后为一个单词,将 test 和这个单词调换位置4.5、函数式4.6、与 Perl 正则表达式区别4.7、sed 用法【在 Linux 的 terminal 中执行】4.7.1、删除所有空行4.7.2、删除所有只包含空格或者制表符的行4.7.3、删除所有引号4.8、调试步骤参考资料
一、GVIM 介绍及安装
vi
是visual
的缩写,其意为可视化。它是 UNIX 系统文本编辑的标准工具,也是深受用户欢迎的全屏幕编辑程序。利用光标在屏幕上的移动,用户可以方便的建立、修改或插入删除文本,寻找和替换文本,复制、剪接和粘贴文本块。所有 vi 编辑程序下的文件均为ASClI
文件。用
vi
编辑器时,当前终端只能操作已打开的某个文件,无法进行其他操作。而gvim
则实现了终端和文本编辑分离的功能。gvim
安装方法也非常简单,直接在命令行输入:二、配置 GVIM 界面
- vim 编辑器相关的所有功能开关都可以通过. vimrc 文件进行设置
- .vimrc 配置文件分系统配置和用户配置两种
- 系统 vimrc 配置文件存放在 vim 的安装目录,默认路径为
/usr/share/vim/.vimrc
。可以使用命令echo $VIM
来确定 vim 的安装目录
- 用户 vimrc 文件,存放在用户主目录
~/.vimrc
。可以使用命令echo $HOME
来确定用户主目录
- 注意:用户配置文件优先于系统配置文件,vim 启动时会优先读取当前用户根目录下的. vimrc 文件。所以与个人用户相关的个性化一般都放在
~/.vimrc
中。
2.1、简单. vimrc 配置使用
使用
gvim ~/.vimrc
来打开 GVIM 的配置文件,在其中输入下列内容进行配置,最后保存关闭即可!2.2、功能齐全的. vimrc 及插件配置
- vim 已经为我们提供了足够满足日常文本处理的功能
- 在实际编写代码中,我们还经常需要就所编写的代码语言提供更多的编辑支持,例如代码语法高亮、文件浏览、多窗口切换、自动补全等等。
- 这些不同的功能并不是 vim 原生的,而是由不同的 vim 插件贡献者所带来的。
- 在你以后逐渐熟悉 vim 和它的插件用法的时候,你也会考虑安装自己想要的插件,不过从满足 SV/UVM 编程的日常来看,这套 vim 配置和插件集对于日常验证工作的支撑已经足够了!
vim 配置文件和插件获取:
- 下载:https://wwcv.lanzouw.com/iwPow0lrxwhg 密码:5s5i
直接将三个文件拷贝到用户主目录下即可!
2.3、vim 常用插件使用方法
2.3.1、多窗口编辑命令
ws
- 横向切割新窗口
wv
- 纵向切割新窗口
wc
- 关闭当前窗口
<Ctrl + {h,j,k,l}>
- 窗口之间切换
<Ctrl + f>
- 单个窗口向前翻页
<Ctrl + b>
- 单个窗口向后翻页
2.3.2、树形浏览窗口
vt
:VSTreeExplorer 擦肩
r
:更新文件夹(refresh)
- 鼠标
双击
/r
:打开或收起文件夹
u
:切换到上层目录
2.3.3、自动补全
Tab
键支持代码自动补全,再利用上下键和回车键来选择
2.3.4、代码标记(mark)
mm
:用蓝色标记(desert 主题)当前行数,方便稍后查找
mn
或mp
:以当前所在行为准,找到下一个或者上一个标记过的代码行
三、GVIM 使用
3.1、打开一个文件
- 如果 file.txt 不存在,则会新建。
3.2、三种工作模式
3.2.1、命令模式
用户进入 gvim 编辑器时,即处于命令模式。在命令模式下用户输入的内容被翻译成命令并传给 gvim 编辑器。
- 按
esc
键进入到命令模式(无论当前处于何种模式)
3.2.2、输入模式(插入模式)
在这种模式下的 gvim 编辑程序类似一台打印机。用户键入的内容,都作为 ASClI 文本来接受并显示它们。
- 按
i
键进入到命令模式(当前必须处于命令模式)
3.2.3、底行命令模式(ex 转义模式)
所有以冒号开始的命令都能把 gvim 编辑程序的光标移到屏幕的底行,使 gvim 编辑程序进入底行命令模式,并且在那里输入命令的其他部分。
- 按
:
键进入到命令模式(当前必须处于命令模式)
3.2.4、三种模式使用注意
1)只有在输入模式下,才能接收用户从键盘上输入的字符;只有在命令模式下才能对文件进行修改;退出、存盘(
:wq
)等操作在底行命令模式下进行。2)从输入模式切换到命令模式,必须按 ESC 键;从命令模式转换到输入模式,使用的命令有
A,a,I,i,O,o
等键。3.3、常用命令
3.3.0 常用命令速查
3.3.1、移动光标操作
- 上、下、左、右方向键移动光标,也可用鼠标直接点击。
常用移动快捷键:
快捷键 | 功能描述 |
h | 光标向左移动一位 |
j | 光标向下移动一行 |
k | 光标向上移动一行 |
l | 光标向右移动一行 |
w | 光标移动至下一个单词的单词首 |
b | 光标移动至上一个单词的单词首 |
e | 光标移动至当前单词的单词尾 |
nw | n 为数字,表示光标向右移动 n 个单词 |
nb | n 为数字,表示光标向左移动 n 个单词 |
0 或^ | 光标移动至当前行的行首 |
$</code></td><td>光标移动至<strong>当前行的行尾</strong></td></tr><tr><td><code onclick="mdcp.copyCode(event)">n$ | 光标移动至当前行至 n 行的行尾 ,n 为数字 |
gg | 光标移动到文件开头 |
G | 光标移动到文件末尾 |
nG | 光标移动到第 n 行,n 为数字 |
:n | 编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首 |
% | 快速移动到匹配的括号处,如:“ () ”、“{} ”、“begin…end ”、“function/task ”(重要) |
3.3.2、删除操作
- 删除字符:光标移动到该字符下,然后按
x
键可删除光标处字符。误操作,按u
进行撤销(undo)。
- 删除词:光标移动到词的第一个字符下,按下
dw
键,要删除多个词,就在前面加上数字,如删除两个词2dw
。误操作,按u
进行撤销。
- 删除行:光标移动到该行的任意位置,按下
dd
键即可,同理若按下2dd
则连续删除两行。误操作,按u
进行撤销。
快捷键 | 功能 |
x | 删除光标所在字符 |
dw | 删除光标所在的单词 |
dd | 删除当前行(实际上是剪切,使用 p 可以完成粘贴操作) |
D | 删除光标到当前行尾 |
ndd | 删除当前光标所在行往下数 n 行,n 是数字 |
d$ | 删除光标至行尾的所有字符 |
dG | 删除当前行到最后一行 |
3.3.3、改变和替换操作
快捷键 | 功能 |
r | 替换光标所在的字符(replace)(只可替换光标处一个字符)【较常用】 |
R | 从光标所在位置开始替换字符(可以一直替换),按 “ESC” 可以结束 |
cl | 修改当前字符(change)【实际是删除当前字符,而后进入插入模式】 |
cc | 修改当前行 【实际是删除当前行,而后进入插入模式】 |
c$ | 修改到行尾的内容【实际是删除光标至行尾的所有字符,而后进入插入模式】 |
ddp | 上下两行交换(其实是先执行 dd,再执行 p 的命令组合)【较常用】 |
:%s/abc/123/g | 将文中所有的 abc 替换成 123( % 表示全局替换范围;s 表示替换 substitute;g 表示 global)【较常用】;人为确认每个替换是否要进行,在最后加上c ,命令: :%s/abc/123/gc |
其他几个替换:
快捷键 | 功能 |
:s/abc/123/g | 将光标所在行的 abc 替换成 123( % 表示全局替换范围;s 表示替换 substitute;g 表示 global) |
:n1,n2s/abc/123/g | 将 n1 行到 n2 行的 abc 替换成 123( % 表示全局替换范围;s 表示替换 substitute;g 表示 global);从第 1 行到最后一行全部替换,还可表示为::1,$s/abc/123/g |
:g/abc/123/g | 将文中所有的 abc 替换成 123 |
:g/abc/123/gc | 将文中所有的 abc 替换成 123,参数 c 用来让用户确定是否替换 |
3.3.4、保存文件并退出 gvim 编辑器
- 按下
:wq
键,再按回车键:将当前编辑的 ASCII 文本写入磁盘。
- 按下
:q!
,再按回车键:强制退出 gvim 编辑器。(注意文件如果改动,强制退出改动内容会丢失)
3.3.5、查询命令
快捷键 | 功能 |
/xxx | 从前往后搜索 “xxx”【支持正则表达式,查找一组词等】(较常用) |
?xxx | 从后往前搜素 “xxx” |
n/N | 配合前两个命令,跳转到下 / 上一个 |
/+上下箭头 | 搜索历史 |
:+ 上下箭头 | 命令的历史 |
shift+* | 往后查找当前的 word,前提是光标移动到要查找的 word |
shift+# | 往前查找当前的 word,前提是光标移动到要查找的 word |
3.3.6、拷贝粘贴命令
快捷键 | 功能 |
yw | 复制光标所在字符到所在单词末尾字符 |
y$ | 复制光标至行尾的字符 |
yy | 复制当前行 |
nyy | 复制当前 n 行,n 是具体的数字 |
Y | 同 yy |
p | 粘贴在光标后 |
P | 粘贴在光标前 |
3.3.7、文本加密(很少使用,了解即可)
- 输入
:X
后,连续两次输入要设置的密码,随后:wq
保存退出。
- 寻常方式打开该文件,输入上述设置的密码即可访问!
3.3.8、设置行号、设置大小写、设置分行、设置查询
设置行号
:set number
或者set nu
,显示行号
:set nonu
,去除行号
设置大小写
:set ic
,不区分大小写(ignore capital)
:set noic
,区分大小写
显示行号
:set wrap
,分行显示
:set nowrap
,不分行显示
设置查询(意义不大,可直接看)
:set wrap?
,当前是否是分行
:set ic?
,当前是否是忽略大小写
set nu?
,当前是否显示行号
该种在底行命令的设置方法与本文开头的
.vimrc
设置方法区别:该方法只针对该次编辑,.vimrc
针对的是所有编辑!3.3.9、自动添加字符串(自动补全)
注:ab是abbreviate缩写
eg:输入模式下键入
usa
后,再按ESC
键,自动补全为United States of America
(当然输入usa
后,直接按空格键也会自动补全!):除了这种方式自动补全,还有另外一种方式,即在输入模式下,打出前面出现过单词的部分,然后按下
ctrl+p
可自动补全!除了ab这种,还有iab,通常直接写到.vimrc这个文件中,表示的是在插入模式下缩写有效!
3.3.10、排序
- 文件内容排序,可以使用如下命令:
:%!sort
。想排具体的行,如:30,32!sort
,30 到 32 行的内容进行排序!
3.3.11、大小写转换
- 先按
ctrl+v
进入 visual 模式,移动方向键
选中字符串,然后按U
(转换为大写)或u
(转换为小写)。【鼠标直接拖动选中内容,可自动进入 visual 模式,然后再按U
(转换为大写)或u
(转换为小写),这样也是可以的!】
3.3.12、多个窗口操作
快捷键 | 功能 |
:sp (用得多,后面跟文件名,可直接打开文件) 、ctrl+w+s (用得少) | 横着开新窗口(split) |
:vsp (用得多,后面跟文件名,可直接打开文件)、ctrl+w+v (用得少) | 竖着开新窗口(vertical split) |
鼠标直接点不同窗口(用的多)、 ctrl+w (要按两次)、 | 切换窗口 |
:e . | 查看父目录内容,方向键选中哪个后,点击回车即可打开! |
:qa | 关闭所有窗口,a 表示 all |
注::split .可以在已打开文件的基础上,再分屏打开想要打开的文件!
3.3.13、visual 模式(重要)
- 先按
ctrl+v
进入 visual block 模式,移动方向键
选中字符串(按 v 进入 visual 直接拖曳鼠标选中也是自动进入 visual 模式;)
- 先按
ctrl+v
进入 visual block 模式,再:d
:剪切;y
:复制;p
:粘贴
- 先按
ctrl+v
进入 visual block 模式,再按iw
选中光标所在单词,也可直接按viw
!
- 先按
ctrl+v
进入 visual block 模式,再按I
编辑内容,最后按下ESC
即可实现多行编辑的操作!
- 先按
ctrl+v
进入 visual block 模式,选中要缩进的行。按shift+>
实现向右缩进,按shift+<
实现向左缩进。或者在底行命令模式下输入:n1,n2>
实现 n1-n2 行向右缩进;n1,n2<
实现 n1-n2 行向左缩进。
3.3.14、几种替换操作
:%s/s1/s2/g
:全局替换
:100,200 s/s1/s2/g
:100 到 200 行之间替换
visual
模式下替换:按下r
替换单个字符
3.3.15、文件跳转(有用)
- 光标移动至文本中的文件名,然后在命令模式下按
gf
,即可跳转到该文件
- 想要回到跳转前的文件,输入
:bd
即可!
3.3.16、比较
3.3.17、grep 全局搜索字符串的方法
想要在当前目录搜索所有包含
factory
字符串的 sv 文件,可以用如下命令3.3.18、其他指令
快捷键 | 功能 |
u | 撤销 |
ctrl+r | 取消撤销 |
:help | 查看所有帮助 |
:ctrl+d | 查看所有可选命令 |
ctrl+p 、ctrl+n | 字符自动补全,前提是文本前面出现过,输入模式下使用(非常有用) |
四、正则表达式
4.1、正则表达简要介绍
- 正则表达式在 Linux 系统中用处非常广
- 正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作
- gvim、perl、sed 等均会使用
注:perl是一门脚本语言,sed是把命令在文本中去实现。
先来看个小例子:
功能:foo 函数的第一个参数和第二个参数互换,即
foo(x,y,z)
换成foo(y,x,z)
。4.2、正则表达使用方法
4.2.1、搜索命令
- 在底行命令模式下使用
- 通过搜索来进行调试,判断内容
- 一般调试正则表达式的时候就是反斜杠
/
4.2.2、:s
替换命令
- 在底行命令模式下使用
- 通常在执行的时候使用
- 替换字符串通常是具体的字符串,而不是正则表达式
4.2.3、元字符
符号 | 功能 |
. | 匹配任意一个字符 |
[abc] | 匹配方括号中的字符,此处匹配 a 或b 或c 字符。可以用- 表示字符范围,如[a-z0-9] 匹配小写字符和阿拉伯数字 |
[^abc] | 匹配除方括号中字符之外的字符,此处匹配除 a/b/c 之外的字符 |
/code> | 匹配阿拉伯数字,等同于 [0-9] (decimal) |
ㅤ | 匹配阿拉伯数字之外的任意字符,等同于 [^0-9] |
ㅤ | 匹配十六进制,等同于 [0-9A-Fa-f] (heximal) |
ㅤ | 匹配十六进制数字之外的任意字符,等同于 [^0-9A-Fa-f] |
ㅤ | 匹配单词字母,等同于 [0-9A-Za-z_] (word) |
ㅤ | 匹配单词字母之外的任意字符,等同于 [^0-9A-Za-z_] |
/code> | 匹配 <TAB> 字符(table) |
ㅤ | 匹配空白字符,等同于 [ (space) |
ㅤ | 匹配非空白字符,等同于 [^\t] |
注:大写的匹配是相反的作用!注意上述元字符匹配是在底行命令模式下,按/进入搜索后,再输入上述元字符才能进行匹配。
4.2.4、特殊字符
符号 | 功能 |
* | 匹配 * 字符 |
. | 匹配 . 字符 |
/ | 匹配 / 字符 |
\ | 匹配 </code>字符 |
[ | 匹配 [ 字符 |
eg:如果要找
[5]
,可以在底行命令模式下输入/\[5\]
。注:类比 C 语言的转义字符。
4.2.5、表示数量的元字符
符号 | 功能 |
* | 匹配 0-任意 个 |
+ | 匹配 1-任意 个 |
? | 匹配 0-1 个 |
{n,m} | 匹配 n-m 个(大于等于 n,小于等于 m) |
{n} | 匹配 n 个 |
{n,} | 匹配 n-任意 个(大于等于 n) |
{,m} | 匹配 0-m 个(小于等于 m) |
4.2.6、表示位置的符号
符号 | 功能 |
$</code></td><td>匹配<strong>行</strong>尾,如<code onclick="mdcp.copyCode(event)">/a$ :匹配以 a 结尾的 | ㅤ |
^ | 匹配行首,如 /^a :匹配以 a 开头的(没有中括号,注意区分[^abc] ) |
< | 匹配单词词首 |
> | 匹配单词词尾 |
eg:
/\<abc\>
:以 a 开头,以 c 结尾的单词,如abc
就是符合要求的,但是hiabcd
是不符合要求的!4.2.7、牛刀小试
匹配
hello
这个单词的方法:- ①、
/hello
- ②、
/h.*o
- ③、
/h\w\+o
4.3、正则表达实例练习
4.3.1、把所有单词 help 或 Help 都改为大写的 HELP
注:%表示的是全局范围,当然可以用10-90表示 10 到 90 行的范围;s(substitute)执行的是替代; 匹配方括号[]中的字符(或的关系);global 执行的其他命令
4.3.2、使用单个空格替换一个或多个空格
或
4.3.3、删除所有空行(没有任何字符,除了一个回车符)
其中,
g
表示的是 global;^$
表示的是空行;d
表示的是删除;[\t]*
表示的是0-任意
个空格键!- 第一条命令删除的是开头和结尾没有字符的空行;
- 第二条命令删除的是字符之间的 space 键。
4.3.4、删除含有某些字符的行
上述命令格式:
:[range]global/{pattern}/{command}
,global 命令在 [range] 指定的文本范围内(缺省为整个文件)查找 {pattern},然后对匹配到的行执行命令 {command},如果希望对没匹配上的行执行命令,则使用global!
或vglobal
命令!4.3.5、删除每行所有的前导空格
其中,
^ *
表示空格开头的0-任意
个字符4.3.6、在文件中的每一行的开始插入 >
4.3.7、在每一行的尾部加上一个句号
4.3.8、删除以数字开头的行(有开头有结尾)
- 以数字开头,以任意字符结尾的行。
其中,
\d
表示以数字开头,.
表示任意字符,*
表示0-任意
个注:和:g/^\d.*$/d的区别在于是用空行来替代了,而不是把空行删除了。
还可以这样这样:
4.3.9、删除以 a,b,c 开头的行(有开头有结尾)
4.4、替换变量(高级用法)
- 使用
\(
和\)
括号括起正则表达式,即可在后面使用 1、\2 等变量来访问\(
和\)
中的内容。
eg:如下正则表达式,头和尾处 a 的个数相同的字符串,如:
aabbbaa
、aaacccaaa
,但是不匹配abbbaa
!注:等价于/a\+[^a]\+和前面a的个数一样
其中,
a\+
它的含义是匹配 1 个或多个 a,这里也使用\(
和\)
对该表达式进行了分组(即替换变量);[^a]\+
表示匹配 1 个或多个非 a;\1
表示与第 1 个分组匹配完全一样的内容。4.4.1、删除重复行
将两行重复行压缩成一行
其中,
\n
表示回车分析:表示匹配以 1 个或多个任意字符开头,并且回车前后的内容一样的,显然表示相同的两行
将多行重复行压缩成一行
其中,
\n
表示回车分析:同上,不过多个了
\+
表示 1 个或多个!4.4.2、交换列表中所有连字符分割的条目的顺序
eg:
ABC:EDF
执行该条命令后变成EDF:ABC
4.4.3、将所有 foo(a,b,c) 的实例改为 foo(b,a,c)
其中,
[^,]*
表示的是非逗号字符有 0 个或任意个。4.4.4、查找 test 开头的后面为一个或多个空格,然后为一个单词,将 test 和这个单词调换位置
如
如果不想改变空格数量,可以这样写正则:
再来复习一个小知识点:
分析:该正则表达式与上面第一个区别:只在 5 到 10 行进行这样一个操作!
4.5、函数式
格式如下:
分析:与替换一样,只不过指定了替换内容为:
\=函数式
例 1:将各行的 id 字符串替换成行号
分析:其中
\<
表示词首,\>
表示词尾。例 2:将每行开头的单词替换成(行号 - 10)
4.6、与 Perl 正则表达式区别
vim 语法 | perl 语法 | 含义 |
+ | + | 1~ 任一个 |
? | ? | 0~1 个 |
{n,m} | {n,m} | n~m 个 |
( 和) | ( 和) | 分组 |
4.7、sed 用法【在 Linux 的 terminal 中执行】
- 用来直接处理文件
4.7.1、删除所有空行
4.7.2、删除所有只包含空格或者制表符的行
4.7.3、删除所有引号
4.8、调试步骤
- 1、化结构,把搜索这个表达式分成几部分
- 2、把划出每部分
\(
和\)
写出
- 3、填写每一部分表达式
- 4、看是否高亮
参考资料
- 作者:Conor
- 链接:https://www.xzhh.top/article/gvim
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。