linux命令学习——vi\vim命令

vi\vim命令

什么是vi\vim

vi是linxu Unix系统内置的文本编辑器。vim相当于vi的一个升级版本,增加了一些编程能力。vi是一款文本编辑器,而vim是一款程序开发工具。

三种模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和末行命令模式(Last line mode)。刚进入vi/vim是命令模式,输入的字符都会被当做命令解析。输入i\I\O\o\A\a等命令会进入编辑模式。Esc会退出编辑模式,回到命令模式。命令模式下输入冒号(:)会进入末行模式。Esc会退出末行模式,进入命令模式。
在这里插入图片描述

命令模式下的命令

文本修改命令

i:在当前光标之前插入文本
I:在当前光标所在行首字符之前插入文本
a:在当前光标之后插入文本
A:在当前光标所在行末字符之后插入文本
o:在当前光标所在行的下一行插入一行空行
O:在当前光标艘在行的上一行插入一行空行

文本删除命令

x:删除光标所处的字符
X:删除光标前面的字符

dd:删除光标所在的整行。在dd前加数字n,可删除当前行以及以后的n行。

D或d$:删除光标所处位置到行末尾之间的内容
d0:删除行首字符到光标所处位置之间的内容

dw:删除光标所处位置到单词的末尾。在dw加数字n,可删除当前单词以及之后的n个单词

d(:该命令删除到上一句开始的所有字符。
d):该命令删除到下一句开始的所有字符。
d}:该命令删除到上一段开始的所有字符。
d{:该命令删除到下一段开始的所有字符。
d<CR>:该命令(表示回车)删除包括当前行在内的两行字符。

复制文本命令

yy:复制光标所处行。在命令前加数字n,可复制当前行以及以后n行文本。

Y或y$:复制光标所在位置到行末尾字符之间的内容
y0:复制光标所在位置到行首字符之间的内容

yw:复制光标所处位置到单词的末尾。在yw加数字n,可删除当前单词以及之后的n个单词

y(:复制到上一句的开始的所有字符。
y):复制到下一句的开始的所有字符。
y{:复制到上一段的开始的所有字符。
y}:复制到下一段的开始的所有字符。
y<CR>:复制包括当前行在内的两行内容。

文本选中命令

v:在光标所处位置按下v按照块(即字符)选择文本。
V:在光标所处位置按下V按照行选择文本。
两者的区别从光标开始位置前者是按照字符一个个选中,后者是按照一行行选中。

文本粘贴命令

p:粘贴命令。粘贴当前缓冲区中的内容。

撤销命令

u:撤销上一命令对编辑缓冲区的修改。相当于Cltr+z。
U:恢复当前行(即一次撤销对当前行的全部操作)
Ctrl+r:还原撤销。相当于Cltr+y。
uU的区别在于他们两个撤销的级别不同。前者是缓冲器级别,后者是行初始状态级别。
例如:
vi abc.txt文件,有一行文本123
进入编辑模式,添加456文本。Esc进入命令模式。
进入编辑模式,添加abc文本。Esc进入命令模式。

最终文件的内容为123456abc,此时输入U是将行撤销到123,输入u是撤销到123456,在输入一次u是还原到123。

光标移动命令

h:向左移动光标
j:向下移动光标
k:向上移动光标
l:向右移动光标

字符替换命令

r:替换光标所在的字符。
R:进入替换模式,每个输入的字符都会替换当前光标下的字符,按Esc退出替换模式。

末行模式下的命令

退出命令

:q:退出vi编辑器。如果文件内容修改,将不会退出vi编辑器,会提示修改的内容为保存
:q!:强制退出编辑器。无论文件修改修改都退出vi编辑器,修改的内容不会保存到文件中
:w:将文件修改的内容写入文件。:w 文件名表示将当前文件内容另存为一个新的文件,如果这个文件以及存在将会给出提示。
w!:与’w’命令类似,不同的是w! 文件名会覆盖以及存在的文件。
wq:保存并退出vi编辑器。如果当前vi编辑器未指定文件名,需要使用wq 文件名来给文件命名

字符串查找

:/string:光标所在处向上查找string
:?string:光标所在处向下查找string
n:重复上一条检索命令
N:重复上一条检索命令,但是查找方向改变。例如上次的检索命令是向前检索,那么此次检索的方向是向后;如果上次的检索命令是向后检索,那么此次检索的方向是向前
:g/string:列出所有配置string的行

替换命令

:[range]s/s1/s2/ [option]:其中
[range]:表示替换的范围。1,10表示1到10行。%或1,&整个文件。.,$当前行到文件末尾
s:表示替换命令
/s1:被替换的字符串
/s2:替换的字符创
[option]:表示替换选项。/g不需要确认直接替换。/c替换前需要用户确认。

关于行号的命令

:set nu:显示行号
:行号:跳转到制定的行
gg跳转到第一行
GG跳转到最后一行

其它命令

:registers:显示寄存器中的内容

小技巧

当前文件中复制一段内容插入到最后一行

  1. 使用V命令选中需要复制的行。
  2. 使用y命令对选中的内容进行复制(这时是复制到了缓冲区中)。
  3. 将光标移动到最后一行,使用o命令插入一行空行。
  4. 使用p命令将复制到缓冲区中的内容复制到文件最后。
    注意:使用y命令复制的内容只在当前文件的缓冲区内。使用Ctrl+v或Shift+ins是复制不到其它地方的。

跳转到匹配的行查看前后消息

:g/string使用技巧:

  1. set nu列出行号
  2. :g/string列出所匹配到的行,行会带有行号
  3. :行号跳转到所在的行

从第一行向下查找string

  1. :1跳转到第一行。或gg跳转到第一行。GG跳转到最后一行。
  2. :/string查找string
  3. n依次向下查找string
    从最后一行向上依次查找string类似。

参考资料:
http://c.biancheng.net/vi/
https://www.runoob.com/linux/linux-vim.html
快捷键位图
https://www.runoob.com/w3cnote/all-vim-cheatsheat.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值