为什么要使用vi
- 不同的Linux的发行版本,通常会内置不同文本编辑器,但是都是会内置vi文本编辑器。
- 很多软件的编辑接口会主动调用vi。
- vim据偶程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序的设计。
vim与vi区别
可以将vim视作vi的高级版本,vim可以使用颜色或者底线方式来显示一些特殊的信息。vim 会根据文件的拓展名自动调用该程序的语法判断,再用颜色来显示程序代码。
可以这么说,vim则可以说是程序开发者的一项很好用的工具,而不是文字处理软件。
vi 的使用
基本上vi分3中模式:
- 一般模式
以vi打开一个文件进入的就是一般模式,(这是默认的模式)。在这个模式下,你可以使用上下左右按键来移动光标,你可以删除字符或者删除整行,也可以复制、粘贴、删除文件数据。
- 编辑模式
在一般模式下,是无法编辑内容的,需要按下”i,I,a,,A,o,O,r,R”其中一个,才可以进行编辑,如果需要退回到一般模式,只需要ESC。
- 命令行模式
一般模式下,输入”:、/、?”,其中一个,就可以进入到命令行模式,在这里,你可以查找、读取、保存、离开vi、显示行号。
注意:在一般模式与(编辑模式和命令行模式)可以互相切换,但是编辑和命令行之间,不可以互相切换。
vi 常用按键
在一般模式下:
- h==光标向左移动一个字符
- j==光标向下移动一个字符
- k==光标向上移动一个字符
- l==光标向右移动一个字符
- ctrl+f==page down 屏幕向下移动一页
- ctrl+b==page up 屏幕向上移动一页
- 0==home 移动光标到所在行的最前面字符
- $==end 移动光标到所在行的最后面字符
- G移动光标到文件最后一行的开头
- gg移动光标到文件第一行开头
- /word 从光标处向下查找word,注意前面的/就是进入到命令模式
- ?word从光标处向上查找该词。
- :n1,n2s/word1/word2/g 在n1行与n2行之间寻找word1,并用word2替换,注意 :表示已经进入了命令模式
- :1,$s/word1/word2/g 在第一行行与最后一行之间寻找word1,并用word2替换
- :1,$s/word1/word2/g 在第一行行与最后一行之间寻找word1,并用word2替换,并询问用户,是否确定。
- x,X,x代表光标处向后删除一个字符,X代表光标处往前删除一个字符。
- dd 删除光标所在的一整行。
- ndd n为数字 ,代表光标所在的向下n行。
- yy 复制光标所在那一行。
- nyy 复制光标所在的向下n行。
- p,P p将以复制的数据在光标所在行的后面进行粘贴,P在光标所在行的前面一行开始复制。
- u 撤回到前面操作前的。
- :w 将编辑的数据写入到硬盘
- : q 离开vi。
- : wq 强制保存后离开。
- :set nu 设置行号
- s 移动光标到最后,不是最后一个字符。
- %s/word/big/g 全局替换
- :e 新的文件名 在vi下面将文件重命名。
需要注意上面如果 输入是5dd 意思,删除光标后的5行,在输入的时候,是在一般模式下,并且,先输入5,在输dd。
vi 恢复与打开警告信息
目前主要的编辑软件都会有恢复功能,当你的系统是因为某些原因而导致死机的情况时,有咩有特别的方法可以将数据救回来。
通常当我们使用vim编辑,vim会在编辑的文件的目录下,新建一个.filename.swp 文件夹。
我们可以打开vi编辑器,输入内容,不保存,然后直接关闭终端。
在次打开:
出现这样的结果,有两者:
- Linux是多用户,可能是其他用户也在查看,这时,你只有等。
- 就是在不明死机的情况下,出现的。
在这个页面,我们可以有几个操作选项
你可以直接输入R,就是恢复数据到修改之前的样子。
在你恢复数据之后,你需要手动删除.filename.swp,不然的话,每次打开文件读会提示。
rm .filename.swp
vi 区块选择
之前我们说的操作,大多数都是针对于行,进行的操作。如果我们只要选择某个部分,或者是某个区域。
注意:在输入以上的命令的时候,一定要在一般模式下哦。
多文档编辑
就是你可以一下子打开多个文件,同时进行编辑。
vi -o filename1 filename2
这里需要和下面的多窗口注意:这里打开的是两个文件,故可以在文档之间切换。
多窗口
先打开一个文件。
然后在该文件的命令模式下,输入上面的指令,就可以打开新的窗口。
不同之间的窗口切换,需要使用ctrl+w(按住ctrl,w就是上下切换)
读取整个文档
我们如何在打开一个文档中,读取另外一个文档内容到该文档中。
在命令模式下:
:r filename