欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

GVIM的三种操作模式详解:命令行、底行与插入状态

最编程 2024-02-29 13:27:52
...

文章目录

  • 一、GVIM的三种工作模式
  • 二、命令模式操作
    • 2.1.光标移动
    • 2.2.复制/粘贴(copy/paste)
    • 2.3.剪切/删除(delete)
    • 2.4.改变/替换(change/replace)
    • 2.5.撤销/恢复(undo/Ctrl+return)
  • 三、底行模式操作
    • 3.1.保存与退出(write/quit)
    • 3.2.搜索/查找
    • 3.3.替换(参见正则表达式)
    • 3.4.底行指令(临时)
    • 3.5.多窗口操作(split)
    • 3.6.文件直接跳转
    • 3.6.其他常用指令
  • 四、插入模式操作
  • 五、GVIM的配置文件(~/.vimrc)
  • 六、GIVM的别名机制(~/.bashrc)
  • 七、异常退出
  • 八、常用快捷键

一、GVIM的三种工作模式

  1. 命令模式默认模式,打开GVIM即进入该模式)
  2. 插入模式(文本编辑,即在该模式下进行文本编辑
  3. 底行模式(配置文件,即在该模式下进行文件的临时配置)

三种工作模式之间的关系如下图所示:

进入
按a或i等
冒号 :
Esc
删除底行命令或回车
打开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的配置有三种情况:

  1. 底行模式下输入的配置——临时性配置;
  2. 个人配置文件,目录为~/.vimrc,若没有可自行新建——永久性配置;
  3. 全局配置文件,目录为/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

在这里插入图片描述
在这里插入图片描述

注:个人配置的优先级高于全局配置。

六、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】:启用多窗口

推荐阅读