文章目录
一、GVIM的三种工作模式
- 命令模式(默认模式,打开GVIM即进入该模式)
- 插入模式(文本编辑,即在该模式下进行文本编辑)
- 底行模式(配置文件,即在该模式下进行文件的临时配置)
三种工作模式之间的关系如下图所示:
1)在使用gvim命令后直接进入命令模式。
2)在命令模式下,按a或i键等可以直接进入插入模式;再按Esc键可以返回命令模式。
3)在命令模式下,按冒号:可以进入底行模式输入命令,再删除底行命令或者按回车键又回到命令模式。
4)插入模式与底行模式之间的转换必须经过命令模式。
每一种工作模式下都有其特定的操作指令,在命令模式下,通常进行光标移动、复制、删除与剪切、撤销与恢复等操作;在底行模式下,通常进行保存退出、搜索/查找、替换、以及显示行号和代码着色等临时配置操作命令;在插入模式下,主要进行编辑文本。
二、命令模式操作
2.1.光标移动
命令 | 含义 |
---|---|
shift + ^ | 光标移动到行首 |
shift + $ | 光标移动到行尾 |
gg | 光标移动到首行 |
G | 光标移动到末行 |
2.2.复制/粘贴(copy/paste)
命令 | 含义 |
---|---|
yy + p | 复制所在行 |
nyy + p | 复制当前n行(n—数字)以当前行为基准向下n行 |
yw + p | 复制光标所在的单词 ,w—word |
y$ + p | 复制光标至所在行行尾的所有字符 |
竖选复制 | 指定区域复制,Ctrl+v进入竖选模式,方向键选区(↑、→、↓、←),然后复制—y,粘贴—p。 |
注意:竖选模式时的复制为单独字母—y,上述的y源于copy,p源于paste。
2.3.剪切/删除(delete)
命令 | 含义 |
---|---|
dd | 删除所在行 |
ndd | 删除当前所在行及以下n行 |
dG | 删除当前行至最后一行 |
dw | 删除光标所在单词,光标位于词首 |
d$ | 删除光标至行尾的所有字符 |
x | 删除光标所在字符 |
注意:dd命令实质上是剪切命令,如果在dd命令后无其他操作,即为删除;如果在dd命令后有其他命令(粘贴p),如ddp,实则为先剪切,后粘贴。
故而有上下两行交换命令:ddp
2.4.改变/替换(change/replace)
由于对文本的大幅度修改,通常在插入模式下进行,故而改变(change)命令实用性不强。
替换光标所在字符:r,通常用于对单个字符的修改替换。
用法:将光标移动到待修改字符,先按r,再按欲修改字符。
2.5.撤销/恢复(undo/Ctrl+return)
命令 | 含义 |
---|---|
u | 撤销上一步操作 |
Ctrl + r | 恢复上一步撤销操作 |
三、底行模式操作
3.1.保存与退出(write/quit)
命令 | 含义 |
---|---|
:w | 保存文件 |
:wq | 保存文件并退出 |
:q! | 强制退出,不保存所做修改 |
:x | 保存退出,等价于:wq的效果 |
保存退出命令:x相比于:wq命令,文件的修改时间不会被更新。
3.2.搜索/查找
直接在底行输入“/ 关键词”;
切换收搜索结果,直接按“n / N”
3.3.替换(参见正则表达式)
替换格式:“:%s/要被替换的关键词/新内容/g”。
- %—表示替换范围,为整个文档,也可以用行号划定替换范围。eg:“:12,20s///g”表示替换12~20行的内容;
- s—表示替换,substitute;
- g—表示替换全局global(各行中所有符合替换条件的都会被替换);
3.4.底行指令(临时)
- 是否显示行号设置—:set nu/nonu (nu----number)
- 是否忽略大小写—:set ic/noic (ic----ignorecase)
- 是否分行显示—:set wrap/nowrap
- 字体大小设置—:set guifont=monospace \n (n----代表数字,即字体大小)
- 自动添加字符串—:ab 缩写 全称
示例:ab usa United States of America
在设置好自动添加字符串命令后,在文本编辑是输入“缩写usa”,然后按Esc键,即可自动添加字符串,显示出United States of America。
底行指令有很多,可以在底行设置,也可以在配置文件(~/.vimrc)中设置;在配置文件中设置的指令属于永久性指令,一直有效;在底行中设置的指令属于临时性指令,只对所属文件有效。
3.5.多窗口操作(split)
命令 | 含义 |
---|---|
:sp | 横开新窗口,split |
:vsp | 竖开新窗口,vertical split |
鼠标/Ctrl+w(2次) | 切换窗口 |
:x / :wq / :q | 关闭窗口(保存退出) |
:E / :e . | 查看所属文件的父目录内容 |
3.6.文件直接跳转
文件直接跳转指令是在某些文件的路径已被列出的条件下进行的。
直接文件跳转 “gf”
回到原文件 : bd
3.6.其他常用指令
- 大小写转换—Ctrl + v选区,然后按U / u即可转换大小写。
- 字符自动补全—Ctrl + p或者 Ctrl + n(在插入模式下使用)。
四、插入模式操作
编辑文本。。。
五、GVIM的配置文件(~/.vimrc)
GVIM的配置有三种情况:
- 底行模式下输入的配置——临时性配置;
- 个人配置文件,目录为~/.vimrc,若没有可自行新建——永久性配置;
- 全局配置文件,目录为/etc/vimrc,gvim自带;
个人部分配置文件如下:.vimrc文件下的注释符用单双引号 "
"高亮显示所有搜索到的内容.后面用map映射快捷键来方便关闭当前搜索的高亮.
set hlsearch
"光标立刻跳转到搜索到内容
set incsearch
"高亮显示括号匹配
set showmatch
"设置Tab长度为4空格
set tabstop=4
"设置自动缩进长度为4空格
set shiftwidth=4
"自动缩进,这个导致从外面拷贝多行以空格开头的内容时,会有多的缩进,先不设置
set autoindent
"消除光标闪烁
set guicursor+=a:blinkon0
“修复下划线不可见,行间距太小可能不会显示下划线
set linespace=4
”修复Backspace退格键不能用
set nocompatible
set backspace=indent,eol,start
"自动补全括号与引号
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
"完成关键字的配对, (当光标在文本的“begin”处时,按下“%”便会自动跳转到“end”处)
"第一个代码片是用来设置自定义配对关键字的,每一行都设置了需要配对跳转的关键字
"第二个代码片则是用来设置关键字之间的配对是不区分大小写的,倘若要区分大小写,则只需要将该语句的“1”改成“0”即可
let b:match_words =
\ '\<begin\>:\<end\>,' .
\ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' .
\ '\<module\>:\<endmodule\>,' .
\ '\<if\>:\<else if\>:\<else\>,' .
\ '\<function\>:\<endfunction\>,' .
\ '`ifdef\>:`else\>:`endif\>,' .
\ '\<task\>:\<endtask\>,' .
\ '\<program\>:\<endprogram\>,' .
\ '\<specify\>:\<endspecify\>'
let b:match_ignorecase = 1
https://www.codenong.com/cs106758844
注:个人配置的优先级高于全局配置。
六、GIVM的别名机制(~/.bashrc)
别名机制依靠一个别名映射文件:~/.bashrc;
命令 “gvim ~/.bashrc” 打开文件,可自行添加创造命令,如:alias ll = “ls -la”
命令 “source ~/.bashrc”可使命令生效。
文件部分内容如下:
可使用命令“alias -p”进行查询上述配置
对与Cshell而言,如果想要改变Terminal的命令行样式,可设置如下:
默认的命令行样式将变成如下所示:
七、异常退出
什么是异常退出?
在编辑文件之后,没有正常保存退出(:wq),而是突然关闭终端或者断电的情况下,便会导致异常退出。再次打开文件便会显示如下效果:
解决办法:将交换文件(在编辑过程中产生的隐藏临时文件)删除即可。(rm -f .文件名.swp),在从新打开原来的文件。
八、常用快捷键
1、Alt+Tab:快速切换Terminal端口
2、Gvim模式下左上角【file】->【open tab】:启用多窗口