vi 基本命令学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vi 基本命令学习相关的知识,希望对你有一定的参考价值。
1、为什么要学习vi
总结了一下学习Vi的原因,就个人而言,最初的想法就是可以装b,简单粗暴;后来在一些小小的实践中发现这个文本编辑器很有意义,尤其在面对没有图形化界面的系统时,我们必须要掌握这项技术!(例如ssh远程操作...)
2、启动和停止vi
想要启动vi,只要在命令行直接输入vi即可。
[email protected] ~ $ vi
如果运行无误,应该会出现类似如下界面
...VIM - Vi IMproved
接下来要做的就是退出vi,命令也是很简单的,在命令行输入:q即可
:q
如果在途中对文件有了一些操作,并且不想保存这些操作,那么就需要在q后面再加上!即可
:q!
3、编辑模式
知道了如何启动和退出vi,下面就开始操作文本,再次启动vi,输入如下
[email protected] ~ $ vi testVi.txt
我们会打开一个名为testVi.txt的文件,如果存在的话;如果文件不存在,那么会创建文件(最后如果保存的话)。出现类似如下界面
~ ~ ~ "testVi.txt" [New File] 0,0-1 All
里面“~”表示当前行没有任何文本。
是否现在就可以开始输入了呢,很明显是不可以的。我们还需要知道vi的三个模式:命令模式、编辑模式、底线命令模式(也许可以和命令模式划分在一起)。当我们用vi打开一个文本时,进入的就是命令模式,在这个模式下,是无法直接输入的,并且几乎每一个键都是一个命令,随便输入的话,就会超乎你想象!
(1)进入编辑模式
进入插入模式的方法有三个:i命令、a命令、o命令。三个命令中,根据大小写不同,效果也是不同的
i | 在当前字符前插入文本 |
I | 在当前行首插入文本 |
a | 在当前字符后插入文本 |
A | 在当前行末插入文本 |
o | 在当前行后面插入一行 |
O | 在当前行前面插入一行 |
基本上,面对一个空的文本,我们直接按i插入就可以了,按下i后,我们可以看到如下所示效果
-- INSERT --
我们可以添加一段话进去了,如下
I hava a dream!
(关于a命令和o命令在这里就不进行测试了,读者可以自行测试)
(2)保存文本
前面已经提到了如何退出vi,下面介绍如何保存文本。首先,我们需要进入命令模式,很简单,我们只需要按ESC键;然后,输入”:w “
:w
按下回车,如果正常,那么应该会出现如下消息。
"testVi.txt" 1L, 16C written
4、命令模式
(1)移动光标
在命令模式下,提供了很多的光标的移动方法,有了这些方法,我们就可以更加迅速的定位到我们想要去的文本的位置,无需借用鼠标。
l or 右键头 | 向右移动一个字符 |
h or 左箭头 | 向左移动一个字符 |
j or 下箭头 | 向下移动一行 |
k or 上键头 | 向上移动一行 |
0 | 移动到当前行首 |
^ | 移动到当前行的第一个非空字符 |
$ | 移动到当前行的末尾 |
w | 移动到下一个单词或标点的开头 |
W | 移动到下一个单词的开头,忽略标点 |
b | 移动到上一个单词或标点的开头 |
B | 移动到下一个单词的结尾,忽略标点 |
number+G | 移动到第number行 |
G | 移动到文件的末尾 |
(2)删除文本
在vi中,删除文本要在命令模式下操作
x | 删除当前字符 |
number+x | 删除当前字符和后面的number-1个字符 |
dd | 删除当前行 |
number+dd | 删除当前行和后面的number-1行 |
dW | 删除从光标开始位置到下一个单词的开头 |
d$ | 删除从光标开始位置到当前行的结尾 |
d0 | 删除从光标开始位置到当前行的行首 |
d命令后加上的移动命令,可以用来控制删除的范围。
(3)剪切、复制和粘贴
剪切:剪切的命令其实就是d命令,删除的同时,会把文本放入一个粘贴缓冲区中
复制:y命令,基本完全同d命令,可以连按两次复制当前行,也可以在后面加上移动命令,进行控制复制的范围
粘贴:p命令把粘贴缓冲区中的文本粘贴到光标后面,P命令把文本粘贴到光标之前
(4)撤销操作
在命令模式下,如果误删了什么或者做了什么错误操作,可以通过u命令进行撤销操作。
(5)合并行
想要将两行的内容合并到一行,那么需要通过J命令来完成(大写,小写的是移动光标),例如有如下文本
I have a dream!
我们想要将两行文本合并,只需要将光标放到第一行,然后按下J,就可以看到如下效果(命令模式下)
I have a dream!
(6)查找和替换
单行查找:f + 所查找字符,即可将光标移动到当前行中的所查找的字符中
查找整个文件:/ + 所查找文本,回车进行查找
在查找时,可能有很多匹配项,直接查找到的是光标后的第一个匹配项,如果还需要继续查找,使用n命令来重复之前的操作
替换:替换的语法为 :a,bs/old/new/参数(g,c) 这里的a,b是控制范围,从第a行到第b行,如果不写的话,那么就对当前行生效;s是必须要写的,表示替换操作;/old/new将old替换为new;最后的参数,如果不加,那么只替换每行文本的第一个匹配项,g选项是对所有的都替换,c选项是给出用户提示,当找到匹配项时是否要执行替换,举例如下,有当前文本
no.1 no.2 no.3 no.4
现在将前三行的no执行替换,换成number,输入命令
:1,3s/no/number/gc
会出现如下提示
replace with number (y/n/a/q/l/^E/^Y)?
y:直接替换;
n:跳过当前;
a:对当匹配项后面的所有执行替换;
q:退出
l:执行这次替换并退出
这里直接输入a即可,结果如下
number.1 number.2 number.3 no.4
5、同时编辑多个文件
在vi中,还允许同时编辑多个文件,命令如下
[email protected] ~ $ vi testVi.txt testVi2.txt
这样,我们就同时打开了两个文件,一个是testVi.txt另一个是testVi2.txt,可是界面上只显示了一个文件的,我们需要借助命令进行文件的切换,如下,当前显示的是testVi.txt
Hello ~ ~ "testVi.txt" 1L, 7C 1,1 All
我们要进行切换,要借助到“:n ”和“:N ”,n是切换到下一个文件,N是切换到上一个文件,我们切换到下一个文件,那么需要这样
:n
会切换到下一个文件,显示如下
Linux~ ~ "testVi2.txt" 1L, 6C 1,1 All
除了上述的切换方法外,我们还可以更好的切换,如果文件很多的情况,我们可以用“:buffers ”来显示所有的文件,并用buffer + num 切换到要编辑的文件,如下
:buffers 1 # "testVi.txt" line 1 2 %a "testVi2.txt" line 1 Press ENTER or type command to continue
六、小结
本文总结了一些基本的vi操作,可能还有一些别的功能没有提及到,但是就目前这些只要可以完全掌握,熟练运用,想必也能处理我们日常的大部分问题了,最后附一张网络上的图,帮助大家更好的学会使用vi
本文出自 “11774224” 博客,请务必保留此出处http://11784224.blog.51cto.com/11774224/1793055
以上是关于vi 基本命令学习的主要内容,如果未能解决你的问题,请参考以下文章