Vim编辑器的详细用法

vim编辑器是Linux系统自带的编辑器,其操作较一般的编辑器要复杂许多,但熟练运用vim会极大地提升Linux系统下编辑文本的速度。看完本文赶紧去试下吧!

vim模式介绍

vim有三种模式,分别为命令模式(command mode),编辑模式(insert mode)及末行模式(last line mode)。我们在刚进入vim编辑器时为命令模式,在按下a时会进入编辑模式,同时屏幕的左下角会显示INSERT,此时就可以输入你想要的文字。在完成输入操作后,按下Esc键会退回到命令模式,此时按下 : 就会进入末行模式,其实就是vim的命令行模式,在此模式按下wq就可以保存文件并退出了。

{% note info %}
下文中命令前出现 : 均表示在末行模式中执行

vim的基本操作

打开文件

打开单个文件或者新建单个文件:

vim FILENAME

不保存对文章的改动重新编辑文件 = :q!+vim FILENAME:

:e!

编辑文件1时不保存退出编辑文件2:

:open FILENAME2

多文件

:sp file      新建窗口打开 filename 并水平分割窗口
:vsp file     新缓窗口打开 filename 并垂直分割窗口

Ctrl + ws     水平分割窗口
Ctrl + wv     垂直分割窗口
Ctrl + ww     在窗口间切换
Ctrl + wq     关闭窗口

Ctrl + wh     切换到右侧窗口
Ctrl + wl     切换到左侧窗口
Ctrl + wj     切换到下侧窗口
Ctrl + wk     切换到上侧窗口

:qall!        不保存退出所有窗口

插入

在命令模式下键入a,A,i,I,o,O均会使vim进入编辑模式,区别在于:

i       在当前位置的前插入新的字符  
I       在当前行的行首插入新的字符

a       在当前位置的后面插入新的字符  
A       在当前行的行尾插入新的字符

o       在当前行的下面插入一个新行  
O       在当前行的上面插入一个新行  

查找

/pattern          向下搜索pattern
?pattern          向上搜索pattern
vim中搜索特殊字符需要进行转义包括 . \ * [] / ? ~ $ % ^ *等

光标选择某个单词,按住Shift+3,即可把所有的单词标注出来

n                 切换下一个搜索结果
N                 切换上一个搜索结果

:noh              取消搜索结果的高亮显示 

替换命令

:s/old/new         用new去替换当前行匹配到的第一个old

:%s/old/new        用new去替换全文各行的第一个old

:s/old/new/g       用new替换当前行的所有old

:s/old/new/g       将全文中的old用new替换

此外还可以指定行数进行替换:
如要替换11-23行所有的old,可以键入如下指令:

:11,23 s/old/new/g

若要在23-35行所有行前加4个空格以示缩进,可以键入如下指令:

:23,35 s/^/    /g

撤销与重做

u        撤销上一步操作  
Ctrl+r   重做,即对撤销的撤销

删除

x        删除当前字符,即光标在哪个位置就删除那个位置的字符  
5x       从当前光标开始往后删除5个字符  
  
X        删除当前字符前的一个字符  
5X       从当前光标往前删除5个字符(不包括当前字符)  

d$       删除当前字符至行尾所有单词  
d^       删除当前字符至行首前的所有字符(不包括当前字符)

dw       删除当前字符至单词尾部  
daw      删除光标所在的单词

dd       删除光标所在行的整行    
ndd      删除光标所在行及其下共5行  
  
S        删除当前行并进入编辑模式 
 
dgg      删除当前行至文档首部的所有行  效果等同于末行模式下的:1,.d  
dG       删除当前行至文档尾部的所有行  效果等同于末行模式下的:.,$d($表示最后一行)

末行模式下还可以进行更加复杂的操作而不需要考虑光标的位置
如删除第11行至34行的操作就可以这样

:11,34d  

复制粘贴

yy       复制光标所在的当前行
5yy      复制光标及下面共5行  
  
yG       复制当前行至文档开始的所有行
ygg      复制当前行至文档结束的所有行  
  
yw       复制当前光标所在处的一个单词  

J        将下一行内容移动到本行的末尾

同样的在末行模式下也可以跨行复制,如复制11至34行

:11,34y  

把10至23行的内容移动到56行之后,可以使用

:10,23 m 56

使用p把dd删除或yy复制的内容粘贴出来

p        在当前行的下面粘贴  
P        在当前行的上面粘贴  

快速操作

ddp      快速交换当前行及下一行  
yyp      快速复制当前行并粘贴

保存及退出

:wq      保存并退出  
:x       保存并退出

:q       直接退出  
:q!      强制退出不做更改  
 
zz       保存并退出 

移动

移动操作并不常用,毕竟↑↓←→键就可以完成而且无需记忆

h   光标向←移动1个字符     10h   光标向←移动10个字符  
l   光标向→移动1个字符     10l   光标向→移动10个字符  
j   光标向↑移动1个字符     10j   光标向↑移动10个字符  
k   光标向↓移动1个字符     10k   光标向↓移动10个字符 

gg   移动到文档头部,等同于:1 
G    移动到文档尾部,等同于:$

当然你也可以在打开文件时就指定行数,比如想打开文件时直接到最后一行,可以使用

vim + FILENAME  

打开文件直接到哪一行

vim +n FILENAME #打开文件直接到第n行,而不用打开文件后在移动光标  

可视化

v              进入可视化,左下角显示可视化或者VISUAL
V              进入可视行,左下角显示可视行或者VISUAL LINE
Ctrl+v         进入可视块,左下角显示可视块或者VISUAL BLOCK

上述选择使用上下左右键,非鼠标

d             删除选中文本
y             复制选中文本
gu            选中区域转为小写
gU            选中区域转为大写
g~            大小写互调
>             向右缩进一个单位
<             向左缩进一个单位

其他操作

:!COMMAND执行命令,如:!ls会列出本文档当前目录的所有文件而不用退出文档
:suspend或Crtl-Z挂起vim,回到shell,可以使用fg返回vim编辑器 
 
:set nu 设置行号,可将此命令写入vim的配置文件/etc/vimrc或者~/.vimrc,就可以保证每次打开都显示行数  
  
:set ff=unix 设置文档的dos编码为unix风格,在vim打开乱码时可以尝试使用该命令修正 

:set syntax=? 设置文档的语言为?,如c,python,sh 
:set syntax获得目前的文档语言

:set paste  解决复制文字来时缩进乱的问题

复杂注释

:3,10 s/^/#/g       注释3至5行
:3,10 s/^#//g       取消注释3至10行
:1,$ s/^/#/g        注释整个文档
:1,$ s/^#//g        取消注释整个文档 #全选整篇文档也可使用%来替换
posted @ 2020-08-22 10:25  雷探长  阅读(378)  评论(0编辑  收藏  举报