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

时间: 2024-08-01 10:44:32

vi 基本命令学习的相关文章

linux基本命令学习(一)文件处理命令

1.mkdir(make directory) 创建一个文件夹. ex:mkdir input 2.rm(remove) ex:rm input 3.ls -a 显示当前目录所有文件 ls -al 显示当前目录下所有文件的详细信息 4.rmdir 删除文件夹 5.cp 拷贝文件到指定目录 cp /home/xuzhang/file1.txt /home/xuzhang 6.mv 移动文件或者重命名文件 mv file1.txt /home/xuzhang mv file1.txt file2.t

Linux基本命令学习

来源:Linux基础入门 邮箱收到实验楼的邀请,一看以为又一个mooc在线教育网站,还是点开看了一下,这个虚拟实验环境让我眼前一亮,在web端模拟终端操作,学Linux这类命令行入门真的很好,推荐一下感兴趣的朋友可以点击上面的链接 注:以下的实验指导摘录下来以便备忘速查 一.实验说明 1.登录系统 无需登录直接进入系统 2.若不小心登出如何处理 系统用户名tc,密码为空.即提示输用户名时输入tc然后在提示输入密码时直接敲回车即可,若无提示可直接登录. 3.参考文档 本实验课程参考以下文档: [1

linux 之基本命令学习总结

前言:从今天开始开始写这系列linux博客了(是学习刘遄老师的<linux就该这么学>),视频学习的资源可以在b站上找到:https://www.bilibili.com/video/av45771723?from=search&seid=16246736897428574633,同时这本书的电子稿的话,可以在刘遄老师的网站找到:https://www.linuxprobe.com/chapter-06.html,而且里面有系统安装资源和教程,非常详细. 一.认识RPM和yum : 在

redis基本命令学习

看到大家都需要redis,而我工作却没怎么接触过,特来学习,现在先熟悉指令,我通过redis中文的 互动教程(interactive tutorial)来学习的. 1.redis是key-value存储的,放在内存中,并在磁盘持久化的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 通过set key value来存储,通过get key来获取值 set key value:设置key的值,若存在则覆盖setnx key value:SET if Not eXists,若存在则不操作. M

Linux vi 的学习笔记

本文摘录自: http://www.linuxsir.org/main/?q=node/206 在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程. vi编辑器有三种工作方式:命令方式.输入方式和ex转义方式.通过相应的命令或操作,在这三种工作方式之间可以进行转换. 命令方式 在Shell提示符后输入命令vi,进入vi编辑器,并处于vi的命令方式.此时,从键盘上输入的任何字符都被作为编辑命令来解释,例如,a(append)表示附加命令,i(insert)表示插入命令,x表示

vi/vim学习

1.vi3中模式 一般模式.编辑模式.命令模式2.快捷操作 i.I插入:i在目前的光标所在处插入文字:I(大写i)在行首插入 a.A 增加:a由光标所在的下一个字开始输入:A由光标所在行的最后增加 o.O插入新的一行:o从光标所在的下一行插入文字:O(大写)从光标所在行的上一行插入文字 r,R取代:r会取代光标所在的那一个字符:R会一直取代光标所在的文字,直到按下“ESC”为止 数字0:移动到这一行的最前面字符处 $:移动到这一行的最后面字符处 G:移动到这个档案的最后一行 nG:n为数字,移动

linux学习总结二:linux基本命令学习

linux图形界面切换到命令模式(Ctrl+Alt+F2),命令模式切换到图形模式(Ctrl+Alt+F1) 一.系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示C

Vi入门学习

Vi基本操作 1. 打开文件: vi fileName 2. 退出vi :命令模式 :q 3. 保存:命令模式:w 4. 强制退出, :q! 5. 覆盖已有文件 w! 6.另存为 w newFineName 7. 清除所有更改 :e! 8. 在Vi中使用shell 命令:!command 9. 导航 h向左移动光标 l 向右移动光标  j 向下移动光标 k 向上移动光标 10.行内 0 移动光标到行首,$移动光标到行尾: 11. 带参数的命令 如 20 l 则向右移动20个字符 如 20 j 则

linux基本命令--学习记录

1.mkdir -p 递归创建目录(-p参数代表递归创建): 2.touch 创建file: 3.cat 查看 5.vi 编辑器 6.echo >(直接覆盖) 或者<<(后面追加)单行追加 Cat追加多行内容 7.cp -ap复制目录 8.mv 移动 9.grep管道(排除) 10.head -2 文件名 显示头几行 11.sed (重要.Linux三剑客) 12.awk (重要.Linux三剑客,需要单独总结) 13.alias 别名 14.seq 生成命令(seq 100>et