1、Vi、Vim、Gvim
Vi是Visual interface(可视化接口)的缩写,是UNIX系统文本编辑的标准工具,所有Vi编辑程序下的文件均为ASCII文件。
Vim的全称是Vi IMproved,是从Vi发展出来的一个文本编辑器,具有高度可配置的特点,旨在使创建和更改任何类型的文本变得非常高效。
GVim是Vim加入了图形用户接口(Graphical User Interface,GUI),和Vim的功能一摸一样。
由于更好的使用体验,在数字IC设计中多使用GVIM,本文主要介绍GVIM的基本操作。
2、GVIM的配置
在使用之前,如何打造一个自己喜欢的gvim界面呢?
在terminal中输入
gvim ~/.vimrc
我们还会使用到.bashrc,后续我会出一篇针对数字IC的.bashrc使用心得。
我用的配置比较简单,但是非常实用!页面也很清爽,下面分享给大家。
//设置行号及行号列宽
set number
set numberwidth=4
//光标所在行高亮
set cursorline
//光标所在列高亮
set cursorcolumn
//状态栏显示光标的当前位置
set ruler
//设置字体
set guifont=Courier\ New\ 16
//启用256se
set t_Co=256
//设置backspace键为2个空格
set backspace=2
//设置tab键为4个空格
set tabstop=4
//设置自动对齐为4个空格
set shiftwidth=4
//按下回车键后,下一行的缩进会和上一行的缩进保持一致
set autoindent
//自动折行
set wrap
//搜索时不区分大小写
set ignorecase
//搜索时高亮显示
set hlsearch
//打开语法高亮
syntax on
//光标遇到(、[、{ 时,自动高亮另一半
set showmatch
//在底部显示当前处于命令模式还是插入模式
set showmode
//命令模式下,显示当前键入的指令
set showcmd
//输入模式下,每输入一个字符就自动跳到第一个匹配结果
set incsearch
补充1:新建文件的两种方式
gvim file.txt
touch file.txt
补充2:行首行尾定位
Home:定位到行首
End:定位到行尾
补充3:比较两个文件的内容
gvimdiff file1 file2
3、GVIM编辑器的使用
gvim编辑器共有四种模式:
- 命令(command)模式
- 插入(insert)模式
- 底行模式(ex转义模式)
- 可视(visual)模式
3.1 模式功能及切换方法
命令模式:当用户进入gvim编辑器,即处于命令模式,在命令模式下用户输入的内容被翻译成命令并传给gvim编辑器。
插入模式:输入“ I / A / O / i / a / o ”即可进入插入模式,用户键入的内容,都作为ASCII文本来接受并显示。
大写 I :在光标所在行首
小写 i :光标处
大写 A :在光标所在行尾
小写 a :在光标右侧
大写 O :在光标处上增一行
小写 o :在光标处下增一行
“ I / A / O / i / a / o ”的区别大家了解即可,一般用小写 i 进入插入模式。
底行模式:输入“ ctrl+: ”即可进入底行模式,并在那里输入命令的其他部分。
可视模式:为了便于选取文本,vim引入了可视模式,在命令模式下输入“ v ”即可进入。
3.2 命令模式的操作
- 移动光标
可通过⬆、⬇、⬅、➡来移动光标。
- 撤销重做
撤销:“ u ”
重做:“ ctrl+r ”
- 删除操作:
删除单个字符:按“ X ”键
删除词:光标移到第一个字符上,按“ dw ”键(delete word)
删除一行:光标移至该行的任意位置,按“ dd ”键
删除n行:光标移至该行的任意位置,按“ ndd ”键
删除当前行到最后一行:光标移至该行的任意位置,按“ dG ”键
删除光标至行尾所有字符:按“ d$ ”键
- 替换操作
替换字符:选中需要替换的字符,键入“ r ”,再键入需要替换的字符。(replace)
上下两行替换:“ ddp ”,先dd,再执行p。
大小写替换:首先用组合键“ ctrl ”+“ v ”,并移动方向键将字符串选中,按“ U ”键将小写字母替换为大写字母,反之按“ u ”。
- 修改操作
修改当前字符:“ cl ”,清除当前字符并进入insert模式
修改当前行:“ cc ”,清除当前行并进入insert模式
修改到行尾的内容:“ c$ ”,清除光标位置至行尾并进入insert模式
- 复制粘贴
命令 | 功能 |
yw | 复制光标处的单词 |
y$ | 复制光标至行尾的字符 |
yy/Y | 复制当前行 |
nyy | 复制当前n行 |
p | 粘贴在光标后 |
P | 粘贴在光标前 |
- 在filelist中打开文件
直接文件跳转::“ gf ”
回到原来的文件:“ ctrl+o ”或者“ :bd ”或者“ :b1 ”
3.3 插入模式的操作
正常情况下,插入模式是供使用者编辑文本使用的,这里将不再赘述,但是也存在一些比较使实用的操作。
指令 | 功能 |
ctrl+p ctrl+n | 字符自动补全(推荐!!!) |
3.4 底行模式的操作
首先在命令模式下输入“ ctrl+: ”进入底行模式
- 保存文件
键入“ :w ”,再按回车键,将当前编辑的ASCII文本写入磁盘。
- 退出vi编辑程序
键入“ :q”,再按回车键即可退出,如果文件自上次保存有改动,则该命令无效。“ :q!”可强制退出!
- 替换操作
全局替换:键入“ :%s”,例如:将文中所有的abc都替换为123
:%s/abc/123/g //g是global的意思
例:将3-5行的abc替换为123
:3,5s/abc/123/g
- 搜索操作
在命令模式下键入“ / ”,支持正则表达式
查找下一个:按“ n ”键
查找上一个:按“ N ”键
搜索历史:键入斜杠“ / ”,⬆和⬇可以查看历史搜索。
命令历史:键入冒号“ :”,⬆和⬇可以查看历史命令。
往后查找当前单词:光标移动到要查找的单词,按下组合键“ shift ”+“ * ”
往前查找当前单词:光标移动到要查找的单词,按下组合键“ shift ”+“ # ”
- 小tips:文件的加密
加密方式:
- 键入“ :X ”
- Enter encryption key:输入密码
打开方式:
- $ gvim -x(小写) filename
- Enter encryption key:输入密码即可打开
解密方式:
- 键入“ : set key= ”
- 直接打开即可
- 自动添加字符串
:ab string strings //ab是abbreviate的缩写
当在文件中插入string时,strings就自己蹦出来啦,非常神奇~
- 排序操作
!sort是通过调用shell的sort程序来进行排序。
sort是通过调用vim的sort程序来进行排序。
- 查询vim设置
如何查询当前gvim是否进行了相关配置呢?
可以在配置后加一个问号,例如:
:set wrap?
- 一些高级指令
指令 | 功能 | 逆指令 |
:set ic | 不区分大小写 | :set noic |
:set wrap | 分行显示 | :set nowrap |
指令 | 功能 |
:f | 查看当前文件名 |
:pwd | 查看当前目录 |
:e ctrl+d | 查看当前目录下的文件 |
:ctrl+d | 查看可选的命令 |
3.5 可视模式的操作
- 键入“ v ”进入字符可视化模式(VISUAL),文本选择是以字符为单位的。
- 键入“ V ”进入行可视化模式(VISUAL LINE),文本选择是以行为单位的。
- 键入“ ctrl+v ”进入块可视化模式(VISUAL BLOCK),文本选择是以块为单位的。
可视模式的操作
命令 | 功能 |
d | 剪切 |
y | 复制 |
p | 粘贴 |
- 竖选
竖选插入:首先键入 “ ctrl+v ”进入块可视化模式(VISUAL BLOCK),选中多行,然后使用 “ shift+i ”进行竖选插入,按 “ ESC ”键使设置生效。
竖选替换:首先键入 “ ctrl+v ”进入块可视化模式(VISUAL BLOCK),选中多行,然后输入 “ r ”进行竖选替换,输入替换后的字符,按 “ ESC ”键使设置生效。
3.6 多窗口操作
- 上下打开新窗口:键入“ :sp ”或者运用组合键“ ctrl ”+“ w ”+“s”
在命令模式下运用组合键“ ctrl ”+“ w ”切换窗口
在底部模式下键入“ q! ”即可
- 左右打开新窗口:键入“ :vsp ”或者运用组合键“ ctrl ”+“ w ”+“v”
- 其他操作
查看父目录的内容:键入“ :E ”,通过⬆和⬇可对文件进行选择,随后回车即可打开。
刷新:键入“ :e ”