Vim编辑器操作技巧

Vim编辑器

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文本编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
Vim是从 vi 发展出来的一个文本编辑器,具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

1.命令模式

用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

复制粘贴删除命令

d 	删除字符,单个d本身没有任何涵义,但是它可以跟其他命令组合,完成一些快速操作。
x 	删除当前字符(del键同此操作,X删除光标前一字符)
dd 	删除当前行
dw 	从光标开始删除整个单词(delete word)
db 	从光标往前删除到单词开头
d$ 	删除光标后面至行尾
d^ 	删除光标前面至行首
ndd n	删除光标所在行往后n行(包括光标行)
yy	拷贝光标所在行
nyy n 	拷贝光标所在行起往后n行(包括光标行)	
p	粘贴yy所复制内容到光标下一行
u	撤销上一步操作,可连续撤销
gg&*yG  复制所有行

全局移动

# 注意:命令模式下,Backspance相当于←,Delete是删除光标字符
h   向左移动 ←(Backspace同此)
j   向下移动 ↓
k   向上移动 ↑
l   向右移动 → (注意是L)
gg 	 移动到首行
G 	 移动到末行
Ctrl+f   向下翻页,即PageDown翻页
Ctrl+b   向上翻页,即PageUp翻页

行内移动

w    或者 W 移动到下一个单词(word)
b    或者 B 移动到上一个单词
e    移动下一个单词结尾
^    移动到当前行第一个非空字符
0    移动到行首(数字0)
$    移动到行尾
n<space>   按下数字后再按空格键,向后移动n个字符
f{char}    光标移动到后面最近一个char字符(char为单个字符)
F{char}    光标移动到前面最近一个char字符

搜索替换

/word	在光标之后搜索word字符串
?word	在光标之前搜索word字符串
n	跳到上一个搜索结果(字符n)
N	跳到下一个搜索结果
:1,$s/word1/word2/g	  从首行到末行搜索word1,并替换成为word2
:1,$s/word1/word2/gc      从首行到末行搜索word1,并替换成为word2,替换前需确认
:n1,n2s/word1/word2/g     从n1行到n2行搜索word1,并替换成为word2

进入插入模式

# 要想编写文本内容,还必须在插入模式下进行操作,以下命令由命令模式进入到插入模式
i   在当前光标前插入
o   在当前光标下面新建空白行插入
a   在光标后面插入字符(append)
I   在行首插入, i^ => I
A   在行尾插入,a$ => A
O   在光标上面新建空白行插入
s   删除当前光标字符,进入插入模式 
r   进入单次字符替换模式(不提示,只替换光标字符一次)
R   进入字符替换模式(一直替换光标字符)    

2.插入模式

插入模式下只只专注于输入文字信息。如需移动光标可退出插入模式到命令模式或使用箭头的方向按键。
以下是一些插入模式下的常用命令:

复制删除

Ctrl+h	删除光标前一个字符,相当于Backspace按键
Ctrl+w	删除光标前一个单词(如果光标在单词中间,删除光标前的单词字符)
Ctrl+u	删除光标前至行首字符
Ctrl+y	复制光标上一行的同列字符
Ctrl+e	复制光标下一行的同列字符

调整缩进

Ctrl+t	增加缩进
Ctrl+d	减少缩进

3.底线模式

随时按下esc可以退出底线命令模式回到命令模式

写入退出

:w		写入
:w!		强制写入
:q		退出
:q!             强制退出(修改后但不想保存)
:wq		写入退出
:wq!            强制写入退出
:w [filename]		  将编辑的数据保存另一个文件(默认使用当前路径)
:n1 n2 w [filename]	  将n1至n2行的内容保存到另一个文件
:! command	          暂时离开vi到终端执行command的显示结果

vim环境变更

:set nu 	显示行号
:set nonu 	取消显示行号
:n		跳到第n行  

4.可视模式

可视模式(VISUAL):主要用于选中一块编辑区域,然后在上面执行一些操作,比如删除、替换、注释、改变大小写等。可视模式下可使用命令模式下的移动光标命令去进行移动。

激活方法

# 按Esc键或Ctr+c键退出可视模式
v	    激活可视字符(VISUAL)模式,用于逐个字符选择文本
V	    激活可视行(VISUAL LINE)模式,用于逐行选择文本
Ctrl+v	    激活可视块(VISUAL BLOCK)模式,用于块方式选择文本

批量注释

Ctrl+v进入可视块模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式,输入注释符号如//或#,输出完毕后,按两下Esc键,Vim会自动将你选中的所有行首加上注释,保存退出完成注释

取消注释

Ctrl+v进入可视块模式,然后选中每行你要删除的行首的注释符号(注意//要选中两个),选好之后按d即可删除注释,Esc保存退出。

代码对比

vimdiff <file> <file>
vim -d <file> <file>

Ctrl+W Ctrl+W    # 切换左右窗口

参考:

[1] https://juejin.im/post/5d40349ee51d4561b76c73fa

[2] https://blog.csdn.net/ii1245712564/article/details/46960387

原文地址:https://www.cnblogs.com/sincere-ye/p/14008793.html