vim编辑器用法详解

文章目录

Vim(Vi IMproved)是一个功能强大的文本编辑器,是Vi(Visual Editor)的一个增强版本。它以其高度可定制性、强大的编辑功能和广泛的插件支持而闻名。这里介绍一下Vim编辑器的那些使用技巧,熟练使用这些技巧可以大大提升在Linux品台下文本编辑的效率。

Linux平台安装Vim

Linux 下安装

shell 复制代码
# 安装Vim
sudo apt install vim-gtk3

# 查看Vim的安装版本
apt list --installed | grep vim

Windows下安装包的下载地址:
https://www.vim.org/download.php#pc

Vim配置文件

Vim在Ubuntu下的配置文件地址为:/etc/vim/vimrc, Windows下的配置文件的名字是_vimrc. 文件内容如下:

shell 复制代码
# 指定编码方式为utf-8  
set enc-utf-8
# Vim 不兼容vi
set nocompatible
# 导入Vim的示例配置
source $VIMRUNTIME/vimrc_example.vim    

Vim四种模式

Vim常用的工作模式有四种:

1.普通模式(normal):Vim启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等

2.插入模式(insert):普通模式下输入 i 或 a 进入插入模式, 相当于普通编辑器的编辑模式, 按 ESC 退出

3.可视模式(visual):按 v 进入可视模式(字符选择), 按 V 进入可视模式(行选择), 按 Ctrl + V 进入可视模式(块选择)

4.命令模式(command-line):用于执行内部和外部命令, 通过 ":" "/" "?" ":!"可以进入命令模式, ":" 执行内部命令 "/","?" 向上或向下搜索、执行外部命令

基本操作

文件存储

shell 复制代码
#   文件退出/存储
:w  # 保存文件
:q  # 退出编辑
:wq # 保存退出
:q! # 强制退出

:help          # 显示帮助菜单
set nu / nonu  # 显示/隐藏行号

光标跳转

shell 复制代码
# 普通模式下
v   # 进入可视化模式 w 移动光标到下一个单词的开头  b键来移动光标到前一个单词的开头
gg                 # 跳转到开头
G                  # 跳转到结尾
nG                 # 移动到该文件的第n行
xxgg               # 跳转到xx行
0  $ 或 home end   # 跳转到行首和行尾
h  j  k  l         # 对应着光标左移、下移、上移、右移  
b / w              # 跳转到上一个单词(words Backward)/下一个单词(words forwrd)
(  和 )            # 跳转到上一句/下一句
{  和 }            # 跳转到上一段/下一段  
PageUp 和 PageDown # 翻页
zt zz zb           # 把当前行滚动到顶部(top) 滚动到中部 滚动到底部(bottom)

编辑内容

将光标移动到希望搜索的关键字上,按下*键, Vim会自动提取光标下的关键字,并自动添加 \< 和 \> 进行搜索。

shell 复制代码
# 删除
dd       # 删除整行(delete)
D        # 删除到行尾

# 插入行
o   O    # 在下方/上方插入一个新行 

# 撤销
u        # 撤销上一次操作
Ctrl + r # 重做上一次撤销的操作

# 查找
:nohlsearch                  # 设置不要高亮搜索
/word                        # 查找字符 n查找下一个 N查找上一个

# 替换
:n1,n2 s/word1/word2/       # 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
:%s/word1/word2/g           # 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 
:%s/word1/word2/gc          # 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认(confirm)是否需要取代

# 复制
y       # 复制选中的内容(搭配v模式来用)  
yy 或 Y # 复制当前行
nyy	    # n为数字, 复制光标所在的向下n行 
yw      # 用来复制往后面的一个词  
y3w     # 复制往后的三个词  
yiw     # 复制当前词  
y$      # 复制到行尾  
y^      # 复制到行首  
yf.     # 复制直到下一个 . 字符
ggyG 或 :%y  # 复制整个文件

# 粘贴(paste)
p,P # p粘贴到光标下一行,P粘贴到光标上一行(Paste)

多对象操作

多文件编辑

shell 复制代码
vim *.cpp       # 编辑多个文件  

# 命令模式操作  
:set autowrite     # 告诉Vim 切换文件的时候自动存盘 
:args              # 显示正在编辑的文件列表
:args filename     # 切换某个文件
:next              # 打开下一个文件
:prev              # 打开上一个文件
:frist 或 :rewind  # 回到列表中的第一个文件
:last              # 打开列表中的最后一个文件

缓存管理

shell 复制代码
:buffers 或 ls      # 显示缓冲区列表
:buffer  编号       # 跳转到固定编号的缓冲区(可以简化成:b)   
:bdelete 编号       # 删除对应的缓冲区(可缩写为:db)
:bnext   编号       # 跳转到下一个缓冲区(缩写为:bn)
:bNext / bprevious  # 跳转到上一个缓冲区(缩写成:bN 或者:bp) 
:blast              # 跳转到最后一个缓冲区
Ctrl+O  Ctrl+I      # 跳转到后一个/前一个编辑的缓冲区

常用操作流程

复制剪切/粘贴

txt 复制代码
1.normal模式下,按v来进入字符选择模式,按V进入行选择模式,Ctrl+v进入块选择模式
2.移动光标来选择对应的区域  
3.按y来进行复制, 按p/P 来进行粘贴
4.移动光标到对应位置,p粘贴到光标之后,P粘贴到光标之前(Paste 辅助记忆)

剪切命令(把上面操作中的y改成d就是剪切操作)

insert模式下粘贴(insert模式下p快捷键不可用)

txt 复制代码
Ctrl+r " 插入最近一次复制/剪切/删除的内容。" 是 Vim 的匿名寄存器
Ctrl+r 0 插入最近一次复制的内容。其中 0 属于 Vim 的编号寄存器,保存最近一次拷贝的内容  

命令行模式下粘贴

在 normal 模式按下 : 可以进入命令行模式

txt 复制代码
Ctrl+r " 插入最近一次复制/剪切/删除的内容
Ctrl+r 0 插入最近一次复制的内容
Ctrl+f   选择一条历史命令(包括当前正在键入的命令)来编辑

多窗口操作

窗口分割

txt 复制代码
:split (缩写为:sp) + 文件名 分割窗口并打开指定的文件  
:split (缩写为:sp)         不加文件名 表示把当前窗口分开
:vsplit (缩写为:vs)        表示垂直分割

Ctrl+w  + (h、j、k、l) 可以在窗口之间跳转
Ctrl+w n      打开一个新窗口
Ctrl+w c      关闭当前窗口(最后一个则无效) 
Ctrl+w q      退出当前窗口
Ctrl+w o      只保留当前窗口 关闭其它窗口  
Ctrl+w s      和:split作用相同 横向一分为二
Ctrl+w v      和:vsplit作用相同 纵向一分为二  
Ctrl+w =      使得所有窗口大小相等  
Ctrl+w _      设置窗口的高度, 命令前的数字数表示高度行数,默认为纵向占满
Ctrl+w |      设置窗口宽度, 命令前的数字表示要增加的列数 默认为横向占满
Ctrl+w +      增加窗口的高度
Ctrl+w -      减少窗口的高度
Ctrl+w >      增加窗口的宽度
Ctrl+w <      减少窗口的宽度
Ctrl+w T      将多窗口中的某个窗口切换成独立页签(是大写的T==shift+t)

对比多个文件

shell 复制代码
vimdiff 或 gvimdiff filename1  filename2  # 对比两个文件

在一个文件编辑窗口中输入下面的命令  
:vert diffsplit filename2                 # 分割窗口和第二个文件做对比

多标签页操作

txt 复制代码
在已有的命令前加 tab 可以在新的标签页中展示命令的结果(例如  :tab help 在新的标签页中打开帮助)  

:tab split                在新的标签页中打开当前缓冲区
:tabs                     展示所有的标签页列表   
:tabnew 或 :tabedit       打开一个空白的新标签页,后面有文件名称则打开该文件  
:tabclose                 可以关闭当前页签
:tabnext 或 Ctrl+PageDown 切换到下一个标签页  
:tabNext 或 Ctrl+PageUp   切换到上一个标签页  
:tabfirst                 切换到第一个标签
:tablast                  切换到最后一个标签
相关推荐
HIT_Weston1 天前
84、【Ubuntu】【Hugo】搭建私人博客:文章目录(三)
linux·运维·ubuntu
qq_5470261791 天前
Linux 常用快捷键及文本编辑器
linux·运维·服务器
埃伊蟹黄面1 天前
磁盘级文件系统核心原理解析
linux·文件
醇氧1 天前
【Linux】 安装 Azul Zulu JDK
java·linux·运维
一直跑1 天前
查看显卡驱动版本,查看哪个用户使用显卡(GPU)进程
linux·服务器
滴水之功1 天前
Windows远程桌面(非图形化界面)连接Ubuntu22.04
linux
借你耳朵说爱你1 天前
在Linux上挂载磁盘
linux
小成202303202651 天前
Linux高级
linux·开发语言
ICT系统集成阿祥1 天前
Linux运维最万能的三条指令
linux·运维·服务器
CAU界编程小白1 天前
Linux系统编程系列之模拟文件操作
linux·算法