Ubuntu上的编辑器有gedit、vi、sublime等。gedit一般在没有其他编辑器时临时使用,大部分情况下,vi和sublime使用的比较多,Linux系统内置了vi和sublime,其中,sublime是可视化的编辑器可以通过鼠标操作可以实现各种功能,学习起来比较容易,这里就不作赘述。今天主讲的是非可视化的编辑器vi,提到vi编辑器既让人爱又让人恨。学会vi编辑器的程序猿爱死了vi,新手恨死了vi。接下来就系统的讲解下VI编辑器,供大家参考查询。
vi又叫vim,这两个是一样的。
vi编辑器有三种状态:命令模式、末行模式、编辑模式。
首先我们来打开一个vi文件test.py,命令是 vi test.py,这里必须说明,如果test.py已经存在,那么执行vi test.py命令之后会自动创建一个空白文件,如果在文本中输入了内容,并且保存了,那么文件就自动创建。如果当前文件夹中存在test.py文件,则打开当前的test.py文件。
接下来我们来了解vi的三种模式:
1、命令模式
当我们用vi 命令打开一个文件时,默认处于命令模式,命令模式的含义是当前可以通过在键盘输入各种按键命令实现编辑当前打开文档的操作。需要主要的是,当前按键操作是不会显示在终端上,但命令的执行效果会显示在当前编辑的内容上(这是很多新手刚接触vi时记不住命令模式对应功能键的关键,人都是所见所得的动物,但一定要明白,坚持敲几天就熟练了,原谅自己起步笨是进步的前提)。部分常用的命令如下:
dd:删除光标所在当前行
ndd:删除光标所在行在内及其下的n-1行,共n行内容。如5dd,删除光标所在行其下面4行内容。(ubuntu中dd实际上相当于windows中的剪切,如果按p键可以粘贴刚才删除的内容)
d0:(0是数字)从光标处前一个字符删到当前行首
D:删除光标位置到行尾的全部内容。实际上也是剪切。
yy:复制当前行内容,用p键粘贴
nyy:复制光标当前行及其下n-1行,共n行内容,用p键粘贴。如5yy,复制光标所在行及其下4行内容。
p:粘贴复制或者剪切的内容到当前光标所在行的下一行
P:粘贴复制或者剪切的内容到当前光标所在行的上一行
u:撤销上一步操作。和windows里面的Ctrl + Z功能类似。
Ctrl + r:返撤销操作
x:删除光标所在位置的单个字符,向行尾方向删除,光标前面字符不变。
X:删除光标所在位置前面的单个字符,向前行首删除,光标后面字符不变。
r:修改光标所在位置的单个字符。
R:替换光标所在位置及其后的字符,光标自动后移
h:光标左移 j:光标下移动 k:光标上移 l:光标右移 (实际上小键盘旁的上下左右方向键也可以移动)
v:可视化选取,单个选中,从光标向后选中,按照字符来选中(左右键),也可选中行(上下键),选中之后如果右移选中部分:shift + > 如果左移选中部分:shift + <
V:可视化选取,选中一片,从光标所在行开始选中,按照最小单位行来选中(上下键),选中之后如果右移选中部分:shift + > 如果左移选中部分:shift + < (V这个一般用的多点)
.:这个键和“>”在同一个键盘位上,表示重复上一步操作,经常与移动选中部分搭配使用,来重复向左或向右移动多次
ZZ:保存当前文档并退出vi编辑器
0:(数字0)跳到当前行首位置
$:跳到当前行末位置
G:跳到文档末行的行首位置
gg:跳到文档首行的行首位置
nG:快速跳到某一行行首,比如5G,快速跳到第五行行首位置
H:光标跳到当前屏幕显示部分的首行行首
M:光标跳到当前屏幕显示部分的中间行行首
L:光标跳到当前屏幕显示部分的末行行首
Ctrl + f:向文末翻一屏代码
Ctrl + b:向文首翻一屏代码
Ctrl + m:向文首翻半屏代码
Ctrl + d :向文末翻半屏代码
w:向行尾每次跳一个单词的长度
dw:删除一个单词
b:向行首每次跳一个单词长度
以上就是我常用的键盘命令,掌握以上这些基本就可以了。
另外需要注意的是在命令模式下:Ubuntu终端字体变大:Ctrl + Shift + T 同样适用,字体变小:Ctrl + -
2、末行模式:
vi打开编辑时默认状态是命令模式,进入末行模式的用:再加上命令。这时输入的命令在页面显示底端。
:w :保存当前文档,不退出vi编辑器(这个命令是实际开发中用的多,比如同时开三个终端,一个编辑代码,一个运行代码,一个用python的交互模式,三个终端生成快捷键Ctrl + Shift + T,终端之间切换用Alt + 1、Alt + 2、Alt + 3)
:q :不保存已有的编辑,退出vi编辑器
:wq :保存编辑并退出
:x :保存并退出(这个命令比:wq用的多)
:/hello :搜索hello,hello可以换成其他字符 在搜索字符时输入命令后,可以向上搜索(N 键),也可以向下搜索(n键)
:set nu:设置显示左侧行号(永久显示行号一般都在系统中改变配置文件/etc/vimrc,添加:set nu即可,如果修改必须获取文件权限,多以root权限去修改)
:set nonu:取消左侧行号限制(这个功能很少用)
:%s/hello/world/g:替换全文的hello为world
:11,16s/hello/world/g:将11-16行中的hello替换为world
末行模式知道这些常用的即可,不记得的时候查一下,多使用就习惯了。
3、编辑模式
编辑模式是最简单的模式,正常的如txt文本般编辑即可,没有多大的特殊之处。这里要讲的是怎么从命令模式切换到编辑模式时不同命令光标插入的位置不同。
如果当前是末行模式必须先切换到命令模式才能进入编辑模式,末行模式到命令模式:ESC键 末行模式和编辑模式之间不能直接切换,只能通过命令模式过渡。
命令模式切入编辑模式命令如下:
i:从光标处之前插入
I:跳到光标所在行行首插入
a:从光标之后插入
A:跳到光标所在行行末插入
o:(字母o)在光标所在行,及其下一行之间新增一空白行,光标跳到空白行行首
O:(字母O)在光标所在行,及其上一行之间新增一空白行,光标跳到空白行行首
以上的命令实际上是命令模式下敲入的,但和编辑模式最为紧密,所以放到编辑模式里面讲。
编辑模式回到命令模式用ESC键,熟练掌握了vi之后都是在这个三个模式之间切换,还是很方便的。
以上的说明是常用的功能,vi编辑器更能远不止如此,掌握基本功能在实际开发中遇到新需求可以很快掌握。
以上不足和编辑错误之处,望评论指正,多多交流!