linux vim命令详解

vim的工作模式

vim有三种工作模式, 用户可以自由切换

1.命令模式(Command): vi/vim的默认模式, 输入命令

–从其它模式切换到命令模式: <ESC>键

–很多命令以冒号(:)开始, 命令后加叹号表示强制执行

–命令前可以跟数字n表示重复该命令n次

2.插入模式(Insert): 插入文本

–从命令模式, 通过命令 i I a A o O s S 等进入

3.普通模式(normal)或者可视模式(Visual): 高亮并选定正文

–从命令模式, 通过命令v 切换, 移动光标选定, x删除一个字符,dd删除一行字符,J可以把两行合并为一行,也就是说两行之间的换行符被删除或者 y 复制


如果不晓得现在是处於什麽模式,可以多按几次 [ESC],系统如发出哔哔声就表示已处于指令模式下了


进入和退出vim
进入: 在命令行下输入 vi 或者 vi filename (如果filename不存在则创建,存在则打开)
退出: 在命令模式下输入
	:wq   保存并退出 
	:wq!  强制保存并退出 
	:q      退出 
	:q!     强制退出 
		:     如果有改动则保存并退出, 否则直接退出 
		:w filename     另存为filename 
		:e     重新读入当前文件

移动光标

进入命令模式<ESC>,移动光标

h 光标左移一个字符 
l 光标右移一个字符 
j 光标下移一行 
k 光标上移一行 
w 光标前移到下一个单词开始 
b 光标后移到下一个单词开始
w 光标前移到下一个单词开始 
b 光标后移到下一个单词开始 
10g 光标后移10行
 
  xg光标后移x行
gg光标移动到第一行
G 光标到最后一行
     gd 跳转到局部函数定义.
     gD 跳转到全局函数定义.
g* 向下搜索光标所在单词 ( 当光标在 'rain' 会查找 'rainbow').
g# 向上搜索光标所在单词
% 移动光标到匹配的另一半括号
删除文本
进入命令模式<ESC>,输入下述命令删除文本

x 删除当前光标所在字符 

4x 删除自当前光标开始的4个字符 

dw 删除自当前光标位置开始的单词 

dd 删除当前行 

10dd 删除当前光标位置开始10行 

d$ 删除当前光标位置至行尾的文本 

dG 删除当前光标位置至文件尾的文本 

:n,m d 删除n行到m行的文本 

:.,+5 d 删除当前行开始的5行文本

注意: 上述被删除的文本都存放在临时缓冲区中, 可以通过 p 命令粘贴到当前光标位置

插入文本
在命令模式下,输入下述命令进入插入模式,开始插入文本
i 在光标前插入 
I 在本行开头插入 
a 在光标后插入 
A 在本行最后插入 
o 在当前行下方插入 
O 在当前行上方插入 
cw 改变光标开始的那个单词 
C 替换自光标至行尾的文本 
s 替换当前位置的字符 
S 替换当前行 
r 以单个字符替换当前字符 
R 自光标开始替换

缓冲区

复制或删除的内容总是先存放在缓冲区中,缺省是放在匿名缓冲区中,例如

	yy 将当前行复制到缓冲区 
	yw 将光标开始单词复制到缓冲区 
	yh 将光标左边的字符复制到缓冲区 
	p 将缓冲区内容粘贴到光标后 
	P 将缓冲区内容粘贴到光标前

命名缓冲区: a-z (替换), A-Z (附加)

a-z缓冲区,内容每次复制进来时会替换掉原有内容

A-Z缓冲区,内容每次复制进来时被附加在原有内容后

	"ayy 将当前行内容复制到a 缓冲区 
	"a10yy 将当前开始的10行内容复制到a 缓冲区 
	"ap 将a 缓冲区的内容粘贴在当前光标前 
	"Add 将当前行删除, 内容附加到A 缓冲区

搜索与替换

在命令模式下输入下述命令搜索文本,注意vi用的是正则表达式,意味着输入 1+1会匹配 1111111,而不会匹配"1+1"

:set ignorecase 表示搜索时忽略大小写的

	用/命令进行搜索
	/regexp 向前搜索匹配regexp的字符串 
	n 继续搜索 
	N 反向搜索 
	?regexp 向后搜索匹配regexp的字符串 
	:s/regexp/s2 将本行第一个匹配regexp的字符串替换为s2 
	:s/regexp/s2/g 将本行所有匹配regexp的字符串替换为s2 
	:1,$ s/regexp/s2/g 将文件中所有匹配regexp的字符串替换为s2

其它

	u 取消上次命令
	CTRL-R (重做)来反转撤消的动作。换句话说,它是对撤消的撤消。 
	J 当前两行合并成1行 
	<< 当前行左缩进一个tab 
	10>> 当前行开始的10行右缩进一个tab 
	:set 查看/修改当前设置 
	:help 寻求帮助

一、一般模式:删除、复制与粘贴类命令
x,X                      x为向后删除一个字符,X为先前删除一个字符
nx(n代表数字)             向后删除n个字符
dd                       删除当前行
D                        删除当前行所有字符,试成为空行
ndd(n代表数字)            删除光标所在行的向下n列
d1G                      删除光标所在行到第一行的所有数据
dG                       删除光标所在行到最后一行的所有数据
yy                       复制光标所在行
y1G                      复制光标所在行到第一行的所有数据
yG                       复制光标所在行到最后一行的所有数据
ynj(n代表数字)            复制光标所在行向下n+1行
dnj(n代表数字)            删除光标所在行向下n+1行
p,P                      p为复制的数据粘贴在光标的下一行,P为复制的数据粘贴在光标的上一行
J                        将光标所在行与下一行的数据结合成一行
u                        恢复前一个动作(undo)
二、编辑模式命令
i,I                      i为在当前光标所在处插入输入的文字,I为在光标所在行第一个非空字符插入输入的文字
a,A                      a为在当前光标所在处下一个字符插入输入的文字,A为在光标所在行最后一个字符的下一个字符处插入输入的文字
o,O                      o为在光标所在行的下一行行首开始插入字符,O为在光标所在行的上一行行首开始插入字符
r,R                      r为替换光标所在那一个字符,R为一直替换光标所指的文字,直到退出
Esc                      退出,回到一般模式
三、命令模式
h                        光标向左移一个字符
j                        光标向下移一个字符
k                        光标向上移一个字符
l                        光标向右移一个字符
Ctrl+f                   屏幕向下翻一页
Ctrl+b                   屏幕向上翻一页
Ctrl+d                   屏幕向下翻半页
Ctrl+u                   屏幕向上翻半页
+                        光标移动到下一行的第一个非空字符
-                        光标移动到当前行的第一个非空字符
n空格(n代表数字)           光标向当前行向右移动n个字符
0(数字0)                  光标移动到当前行的第一个字符(可以为空字符,注意与-区分)
$                        光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)
H                        光标移动到当前屏幕最上方的那一行的第一个非空字符
M                        光标移动到当前屏幕最中间那一行的第一个非空字符
L                        光标移动到当前屏幕最下方的那一行的第一个非空字符
G                        光标移动到该文章最后一行的第一个非空字符
nG(n代表数字)             光标移动到该文章第n行的第一个非空字符
n                        光标从当前行向下移动n行的第一个非空字符
/word                    在光标之后查找word字符串
?word                    在光标之前查找word字符串
:s/word1/word2/g         在光标当前行查找word1,并替换成word2
:n1,n2s/word1/word2/g    在第n1行与第n2行之间查找word1,并替换成word2
:%s/word1/word2/g        整个文章查找word1,并替换成word2
:w                       将编辑的数据保存到硬盘文件中
:w [filename]            将编辑后的数据保存到硬盘的另一个文件中
:r [filename]            在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容加到光标所在行下一行
:wq或:x                  保存并退出
:q                       退出,适用于未修改的文件
:q!                      强制退出,适用于修改文件后不保存退出
:set nu                  显示行号
:set nonu                取消行号
:n1,n2 w [filename]      将n1到n2行的内容保存到名为filename的文件中


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值