青蛙学Linux—文本编辑器Vi/Vim

Posted 青蛙学Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了青蛙学Linux—文本编辑器Vi/Vim相关的知识,希望对你有一定的参考价值。

1、Vi和Vim

1.1、简介

Vi是Linux和Unix下最基本的文本编辑器,工作在字符模式下,没有图形界面,使用众多的命令和按键来进行操作。所有的Linux和Unix都会默认安装Vi,而且任何版本的Linux和Unix的Vi编辑器都是完全相同的。

Vim是一个在Vi基础上改进的文本编辑器。在Vi强大的功能上增加了新的功能,如代码补全、代码高亮等。

1.2、三种模式

vi/vim可分为三种模式,分别为命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。

vim-vi-workmodel

2、使用Vi/Vim

2.1、命令模式

当Vi/Vim启动时,便进入命令模式。此时在键盘的输入将会被vi/vim识别为命令,而非向文件中输入字符。在该模式下通过不同的按键或按键组合可以实现各种功能,下面按照功能的类型来介绍这些按键:

2.1.1、光标的移动

h 或 左箭头:光标向左移动一个字符

j 或 下箭头:光标向下移动一个字符

k 或上箭头:光标向上移动一个字符

l 或 右箭头:光标向右移动一个字符

如果想要进行多次移动,可以加上移动的次数(输入数字)后再按动作键。如需要向下移动20行,可以使用“20j”

 

Ctrl+f:向下移动一页,相当于Page Down

Ctrl+b:向上移动一页,相当于Page Up

Ctrl+d:向下移动半页

Ctrl+u:向上移动半页

 

+:光标移动到非空格符的下一行

-:光标移动到非空格符的上一行

n<space>:按下数字后再按空格键,光标会向右移动n个字符

0 或 Home键:光标移动到这一行的最前面字符处

$ 或 End键:光标移动到这一行的最后面字符处

H:光标移动到屏幕的最上方那一行的第一个字符

M:光标移动到屏幕的中央那一行的第一个字符

L:光标移动到屏幕的最下方那一行的第一个字符

G:光标移动到文档的最后一行

nG:光标移动到文档的第n行

gg:移动到文档的第一行

n<Enter>:光标向下移动n行

2.1.2、删除、复制粘贴、复原重做

x X:x向后删除一个字符(相当于del),X向前删除一个字符(相当于backspace)

nx:连续向后删除n个字符

dd:删除光标所在的那一行

ndd:删除从光标所在行开始的向下的n行

d1G:删除光标所在行到第一行的所有数据

dG:删除光标所在行到最后一行的所有数据

d$:删除光标所在处到该行的最后一个字符

d0:删除光标所在处到该行的第一个字符

 

yy:复制光标所在的那一行

nyy:复制从光标所在行开始的向下的n行

y1G:复制光标所在行到第一行的所有数据

yG:复制光标所在行到最后一行的所有数据

y$:复制光标所在处到该行的最后一个字符

y0:复制光标所在处到该行的第一个字符

p P:p将复制的数据在光标的下一行粘贴,P将复制的数据在光标的上一行粘贴

J:将光标所在行与下一行组合成一行

 

u:复原前一个动作

Ctrl+r:重做上一个动作

.:重复前一个动作

2.2、输入模式

在命令模式下按下i,即可进入输入模式,在输入模式中就可以向文档中输入内容。使用以下按键可以从命令模式进入输入模式:

i I:i在光标前输入,I在光标所在行的第一个非空格符处开始输入

a A:a在光标后输入,A在光标所在行的最后一个字符处开始输入

o O:o在光标所在行的下一行开始输入,O在光标所在行的上一行开始输入

r R:r只会取代光标所在字符一次,R会一直取代光标所在字符,直到按下Esc

当按下以上的按键,在Vi/Vim的左下角会出现“--INSERT--”或者”--REPLACE--“字样,此时才可以进行输入

 

Esc:退出输入模式,回到命令模式

2.3、底线命令模式

在命令模式下按下 :,即可进入底线命令模式。在该模式下可以通过输入命令来实现功能,比如保存文档和退出Vi/Vim等。在底线命令模式下有以下常用命令(省略:):

w:保存不退出

q:不保存退出

wq:保存并退出

x!:保存并退出,同wq

注意:以上命令均可在末尾加上!表示强制执行。

 

ZZ:文档改动则保存退出,无改动则退出

w filename:文件另存为

r filename:将另一个文档的内容加入到光标所在行的后面

n1,n2 w filename:将n1到n2的内容保存到新的文档中

! command:暂时离开Vi/Vim并执行command

 

set nu:显示行号

set nonu:取消行号的显示

2.4、搜索替换

在Vi/Vim下执行搜索时,也相当于底线命令模式,但是此时不使用:来转到底线命令模式。输入以下命令进行搜索:

/string:从光标处向下查找指定字符串

?string:从光标处向上查找指定字符串

n:按键n,重复上一个查找动作

N:大写按键N,以相反的方向重复上一个查找动作

 

当Vi/Vim搜索到内容之后会使用高亮进行显示,如果不取消高亮的话,就算退出文档后再次打开时还会有高亮显示,所以可以使用以下命令取消高亮

:noh

Vi/Vim下的替换就是在底线命令模式下进行的,使用:来转换。使用以下几种方法进行内容替换:

s/string1/string2/g:将当前光标所在行中的所有string1替换成string2

n1,n2s/string1/string2/g:将n1到n2行中的所以string1替换成string2

1,$s/string1/string2/g:将整个文档中的string1替换成string2

1,$s/string1/string2/gc:将整个文档中的string1替换成string2,并在替换之前提示用户是否替换

以上是关于青蛙学Linux—文本编辑器Vi/Vim的主要内容,如果未能解决你的问题,请参考以下文章

(值得收藏!)Vi 文本编辑器精讲

Linux之文本编辑器

青蛙学Linux—MySQL

青蛙学Linux—MySQL主从复制

青蛙学Linux—Nginx配置文件详解

青蛙学Linux—MySQL常用命令