1. 打开或者新建文件
介绍一下怎么样用vi打开或者新建文件,在工作中,如果希望在终端中使用vi来编辑一个文件,就可以在命令提示符后面先输入vi 这个命令,然后增加一个空格, 空格后面跟上要编辑的文件名就可以.
如果这个文件是已经存在的,就会使用vi编辑器,直接打开这个文件.
如果这个文件名是不存在的,就会新建一个文件.
做一下演练,在备课的时候,在桌面下准备了一个rand_num.py 的python 文件,
之前要打开这个文件是在图形界面下双击这个文件打开.
那现在假设是使用ssh登录到远程服务器.
那如果想要编辑这个文件应该先来敲一个vi的命令,在命令后面跟上要编辑的文件名,
现在回车,
回车之后就可以看到一个vi的编辑界面了.
在左侧有代码的行数, 右侧显示的内容跟gedit 中看到的内容是完全一样的.
在这个界面下就可以进行编辑工作.
那现在输入一个特殊的命令:q,
退出vi编辑器, 回车, 又回到了终端窗口.
如果现在想要新建一个文件,先把getid关掉,然后重新回到终端窗口,如果想新建一个文件,同样使用vi这个命令,在后面跟上一个要建立的文件名,
现在回车, 回车之后,
又是一个vi的编辑器打开了,并且在下方会提示hello.py 是一个新文件.
那现在在这个文件中简单增加一些内容,写完之后,
按一下回车,
现在桌面上并没有hello.py这个文件,那现在就把这个文件做一个保存, 保存之后, 桌面上多了一个hello.py 的文件,
那现在双击打开, 看到的内容跟在终端中看到的内容是完全一样的,
演示一下vi到底快在那里, 那现在老师啊,假如开发中有一个需求,希望第1行代码重复20遍,现在就把光标放在第1行,
连续敲两个y,然后呢,敲个19p.
刚刚并没有使用鼠标,而代码中一下子就多了19行,
那现在把文件保存一下,
回到gedit 来确认一下,现在点击, 点击之后提示这个文件发生变化, 是否重新载入.
那现在就点击重新载入,刚刚对代码进行的修改完全在gedit 中能够看到了.
而且刚刚对代码的修改是咻的一下就完成了.
那如果在编辑文件中对刚刚的修改后悔了,就摁一个u,按下u 之后, 刚刚新增的这些代码全部不见了.
现在再保存一下,
再回到gedit 来确认一下, 点击再次重新载入,
这个文件又恢复到了初始状态,
那如果又后悔了,刚刚要添加的代码还要恢复回来,再摁一下Ctrl + R,一下又回来了,
现在再保存一下,
然后回到gidit,又提示重新载入,
现在老师点击代码又恢复回来了,
现在输入 :x, 把文件保存并且退出一下.
2. 打开文件并且定义指定行
分享一个vi 非常实用的技巧,就是使用vi打开一个文件的同时,立即将光标定位到需要的行,
在开发中,很难保证编写的代码都是正确的,但是如果在运行程序时,通常能够准确的知道具体是哪一行代码出现了错误.
那现在试想一下,假设在打开这个文件的同时,立即能够定位到这行出错的代码,那么修改错误能够更加的迅速.
那具体怎么做呢?同样使用vi, 在vi后面跟上要编辑的文件名,然后在后面跟上一个加号,在加号后面来指定出错的代码行数就可以.
做个演练,hello.py 这个文件现在是能够正常执行的.
使用Python3的解释器来执行一下这个程序,做个演示,
现在回车,回车之后, 在终端中连续输出了hello python ,
现在先使用vi编辑器,在hello.py 中增加一个错误.
譬如要把光标定位在16行,写一下16g, 光标跳过来了,
假设现在不小心在代码中增加了一个缩进, 16行的print异军突起,
那现在输入:w 来保存一下这个文件.
然后输入:q 退出vi,
现在使用解释器来执行一下hello.py , 看看会出现什么情况,按一下向上, 再向上,回车,
这次回车之后, Python解释器直接告诉有了错误, 告诉在代码的第十六行出现了错误.
错误是print 函数前面多了一个缩影, 现在在执行这个程序时,已经能够准确的知道第16行代码有错误.
既然知道第16行代码有错误,那么在使用vi这个编辑器编辑hello.py 这个文件时,就可以在文件名后面跟上一个加号,然后再跟上出错的代码行数16,
现在回车, 回车之后, 光标直接定位到16行,
而刚刚python 的解释器告诉16行多了一个缩进,既然多了一个促进,就把这个缩进做个减少.
减少完成之后, 再在输入:x, 保存退出回到终端.
再来使用python 解释器运行一下程序,
程序又能够正常运行了,
这个就是使用vi在打开文件时,如果希望定位到具体某一行,就可以在文件名后面跟上一个加号,并且在加号后面跟上一个对应的代码行数就可以.
那现在做一个小扩展,刚刚在打开文件时,在后面跟上一个加号,并且指定了一个行数.
那如果不指定行数会怎样呢?来现在把行数16删掉,
回车,回车之后光标直接定位到21行,也就是文件的末尾,
那现在把光标向上移动,譬如把hello python中的这个python 做一个替换, 替换成一个 hello world,
程序替换完成,
输入 :x 来保存退出, 现在运行下程序.
最后一行输出hello world.
通过这个演练可以知道如果程序开发一半离开了, 下一次想要继续开发, 就可以增加一个加号直接定位到文件的末尾,
继续之前没有完成的工作.
那现在看一下如果使用vi接上一个文件名, 回车,光标是在这个文件的开始位置.
3. 删除交换文件
介绍一下在使用vi时,什么时候会看到下面这个界面,
并且告诉一旦看到下面这个界面, 应该怎么处理,如果正使用vi编辑某一个文件的时候,vi 被被强行退出了, 譬如用q命令或者其他方式把vi强行退出了.
那么下一次在使用vi编辑这个文件的时候,很有可能就会看到下方这个屏幕来.
做个演练,现在桌面上有两个文件,
现在老师ls -la 查看一下桌面目录下的文件情况,
现在桌面目录下只有hello.py 和 rand_num.py 这两个文件.
现在使用vi把hello.py 这个文件打开,打开之后把第一行的python做一个修改, 把python 替换成world,
修改完成之后, 现在还没有保存文件.
现在要点击一下终端窗口这个叉叉,如果点击这个叉叉会把整个终端全部关掉,那既然终端都被关掉了,现在运行的vi也同样被强行终止了.
那现在就点击叉叉,然后强行关闭终端.
关闭之后, 现在再来打开终端,现在先使用cd 这个命令进入桌面文件夹,
然后使用ls -la查看一下文件情况, 现在回车,
回车之后, 桌面目录下多了一个文件, 这个文件是以点 开头的.
以点开头的文件是一个隐藏文件, 同时hello.py 后面有一个 .swp, 这个文件就是在使用vi 编辑某一个文件的时候, vi 这个编辑器会自动建了一个交换文件, 这个交换文件的目的是vi 内部使用的, 主要是为了保障对当前这个文件的编辑速度.
如果现在用vi 命令再次打开hello.py 文件, 回车之后就看到了刚刚在笔记中看到的画面,
发现了一个交换文件,并且告诉这个交换文件产生的日期, 同时在下方有一些选项,要想继续能够顺利的编辑hello.py ,通常要选择删除交换文件这个选项,
要选择这个选项,必须要通过键盘来实现.
因为在vi中鼠标是不能使用的,直接按下键盘中字母d就可以.
在按下字母d的时候,应该确认一下当前的输入法处于英文状态.
现在按一下字母d,
现在hello python 文件又回来了,并且之前做的修改全部丢失.
现在让我们退出一下,
:q
然后呢,使用ls -la 来查看一下这个交换文件是否还存在,
如果现在用vi 打开hello.py, 又可以顺利的打开这个文件.