Linux命令: vi编辑器
Linux命令: vi编辑器
vi编辑器(1)
》vi是Unix世界中最通用的全屏编辑器, Linux中用的是vi的加强版vim, vim同vi完全兼容.(当然如果系统中没有安装vim,则可以通过apt-get install vim-gtk 或者[sudo apt-get install vim-gtk] 进行安装)
》在Linux系统中,vi和vim是完全等价的两个命令,都可以启动vi编辑器。
》vi编辑器的运行状态共有三种模式。
》一般模式(Normal mode):输入vi命令进入vi文本编辑器的时候,就是一般模式了,该模式将用户的输入看作命令,这个模式允许用户移动游标,且允许搜索文本功能。
》插入模式(Instert mode):从一般模式按下I, o, a等字幕都可以进入编辑模式,在此模式下,vi将用户的输入插入到当前光标位置,修改暂时保存到缓冲区,按Esc按钮则从编辑模式退回到一般模式。
》命令模式(command mode):可输入(:、/、?)进入到命令模式)输入:wq(当文件权限位为:444即-r--r--r--时,需要使用:wq! 来强制写入并保存退出)保存当前文件,或者输入:q!直接退出。
vi编辑器模式切换图示(摘自网络):
- vi 编辑器(写文件/程序) 编写java程序
- vi filename.filetype(如:vi Hello.java)
- 输入i (小写I)[进入插入模式i/I、r/R、a/A]开始写java类
- 输入esc键[进入到命令模式]
- 输入: (冒号) [wq表示退出并保存, q!退出不保存]
- 编译文件: javac Hello.java(若没有jdk包,控制台会提示你需要安装jdk, apt-get install jdk包)
- 6. 运行java程序:java Hello
- vi 编辑器(写文件/程序) 编写C/C++程序
- 输入vi Hello.cpp
- 输入i(输入C/C++程序)
- 输入esc退出插入模式进入命令模式
- 4. 输入:wq退出并保存文件
- 5. 编译(C/C++程序) 输入: gcc –o Hello Hello.cpp或者gcc Hello.cpp(使用gcc Hello.cpp编译,系统会默认生成可执行文件a.out,为避免覆盖掉之前有可能存在a.out的文件应该使用gcc –o Hello Hello.cpp, 此时会编译出一个Hello的可执行文件)
- 6. 运行: ./Hello或者./a.out
vi编辑器(2)
》vi编辑器提供了强大的搜索和替换功能
》首先按下斜杠键(/), 光标会自动移动到vi编辑器下方的命令行,用户输入待搜索的字符串,按下Enter键开始搜索, vi编辑器可能用三种方式响应用户的搜索。
》vi编辑器的替换命令的基本格式:
:s/old_string/new_string :s/old_string/new_string |
按键说明(除了上面i、a、r、[Esc]、:wq、:wq!、:q还有许多按键)
- 一般模式下可用按键说明: 光标移动、复制粘贴、查找替换等
移动光标的方法 |
|
h或向左箭头键(←) |
光标向左移动一个字符串 |
j或向下箭头键(↓) |
光标向下移动一个字符串 |
k或向上箭头键(↑) |
光标向上移动一个字符串 |
l或向右箭头键(→) |
光标向右移动一个字符串 |
当要移动多行或者多列的时候,可以按下数字键+(hjki)组合移动光标。如要向下跳到30行,可30j,要向左跳5列可按下5h. |
|
Ctrl + f (Forward) |
屏幕向下移动一页,相当于 [PageDown]键(常用) |
Ctrl + b(back) |
屏幕向上移动一页,相当于 [PageUp]键(常用) |
Ctrl + d(down) |
屏幕向下移动半页 |
Ctrl + u(up) |
屏幕向上移动半页 |
-(数字键上的 -) |
光标移动到非空格的上一行 |
+(数字键上的+) |
光标移动到非空格的下一行 |
n<space>(数字+空格键) |
n为数字,即将光标移动到当前行当前光标后的第n个字符出(光标右移动n个字符)。如12<space>:表示将光标移到该行当前光标后的第12个字符处 |
0 |
数字“0”,光标回到行首(常用) |
$ |
$美元符号,光标移动到行尾(常用) |
H |
光标移动到屏幕的最上方那一行的第一个字符处 |
M |
光标移动到屏幕中央那一行的第一个字符处 |
L |
光标移动到屏幕的最下方一行的第一个字符处 |
G |
光标移动到这个文件的最后一行的第一个字符处(常用) |
nG |
n为数字,光标移动这个文件的第n行。如:30G,表示光标移动到这个文件第30行的第一个字符处。 |
gg |
光标移动这个文件的第一行的第一个字符处。相当于:1G(常用) |
n[Enter] |
n是数字,光标向下移动多少行。如:10+Enter表示向下移动10行。(常用) |
查找替换 |
|
/word |
向下查找一个名称为word的字符串。例如要在文件中查找 take这个字符串,输入 /take 即可(常用) |
?word |
向上查找一个名称为word的字符串。 |
n |
n为英文,n按键。表示重复查找前一个查找的操作。例如刚才我们查找 take这个字符串,在输入 /take之后,vi会将光标定位到向下的第一个take出现的位置,按下n键之后,会继续查找下个 take 出现的位置。按 ?take 同理,会向上查找take出现的位置。 |
N |
N为英文键,与n刚好相反,为“反向”进行前一个查找的操作。例如输入 /take 后,按下N键,会向上查找 take。 |
使用 /word或者?word的时候,配合n键或N键非常有帮助。 |
|
:n1, n2s/word1/word2/g |
n1与n2为数字。在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2.例如:在100到200行之间查找word1并替换为word2 “ :100, 200s/word1/word2/g”(常用) |
:1,$s/word1/word2/g |
从第一行到最后一行查找word1 字符串,并将该字符串替换为word2.(常用) |
:1,$s/word1/word2/gc |
从第一行到最后一行查找word1 字符串,并将该字符串替换为word2.且在替换前显示提示字符给用户确认(confirm)是否需要替换(常用) |
删除、复制、粘贴 |
|
x、X |
在一行字当中,x为向后删除一个字符[相当于del键],X为向前删除一个字符[相当于 Backspace键](常用) |
nx 、 nX |
n为数字,nx向后连续删除n个字符。例如,向后连续删除5个字符“5x”。nX向前连续删除n个字符.例如向前连续删除12个字符“12X” |
dd |
删除光标所在的那一整行(常用) |
ndd |
n为数字。删除光标所在行的向下n行,例如20dd,表示向下删除20行。(常用) |
d1G |
删除光标所在行到第一行的所有数据 |
dG |
删除光标所在行到最后一行的所有数据 |
d$ |
删除光标所在位置到该行的最后一个字符 |
d0 |
为数字“0”。删除光标所在处到该行第一个字符 |
yy |
复制光标所在的那一行(常用) |
nyy |
n为数字。复制光标所在的向下n行,例如20yy则是复制20行(常用) |
y1G |
复制光标所在行到第一行的所有数据 |
yG |
复制光标所在行到最后一行的所有数据 |
y0 |
复制光标所在的那个字符到该行行首的所有数据 |
y$ |
复制光标所在的那个字符到该行行尾的所有数据 |
p,P |
p为将已经复制的数据在光标下一行粘贴,P则为光标的上一行粘贴。例如:目前光标在15行处,且已经复制了8行的数据,则按下p后,那8行的数据就会粘贴在原本的15行之后,也即在16行开始粘贴。但如果按下P,则当前15行会变到23行处。(常用) |
J |
将光标所在行与下一行的数据结合成同一行。 |
c |
重复删除多个数据。例如:向下删除 10行,“10cj”(将会进入到编辑模式,要复原按 Esc键退出,按下 u键即可还原), 向上删除3行“3ck” |
u |
复原上一个操作(常用) |
Ctrl + r |
重做上一个操作(常用) |
u和[Ctrl + r]是最常用的命令。一个是复原,另一个则是重做一次,利用它们,编辑将更加得心应手。 |
|
. |
小数点。表示重复前一个操作。例如:想要重复删除、重复粘贴等操作,可以按下小数点“.”。(常用) |
2. 一般模式切换到编辑模式按键
进入插入或替换的编辑模式 |
|
i、I |
进入插入模式(Insert mode):i为从当前光标处插入;I为在目前所在行的第一个非空格符处开始插入(常用) |
a、A |
进入插入模式(Insert mode):a为从当前光标处的下一个字符插入;A为在光标所在行的最后一个字符处开始插入(常用) |
o、O[字母o的大小写] |
进入插入模式(Insert mode):o为从当前光标处的下行插入新的一行;O为光标所处的上一行插入新的一行(常用) |
r、R |
进入替换模式(Replace mode):r替换当前光标处那个字符一次;R一直替换到光标所在的文字,直到按下[Esc键]为止。(常用) |
当按下如上按键之后,vi编辑器的左下方会出现“——INSERT——”或“——REPLACE——”的字样。 |
|
Esc |
退出编辑模式,回到一般模式(常用) |
3. 一般模式切换到命令行模式的按键
命令行的保存、离开等命令 |
|
:w |
将编辑的数据写入到硬盘文件中(常用) |
:w! |
若文件权限位“只读”,强制写入该文件。(当然到底能不能强制写入还是看你对当前文件的文件权限。) |
:q |
离开vi编辑器(常用) |
:q! |
若曾修改文件,又不想保存离开,使用“!”为强制离开不保存。 |
“!”感叹号,在vi编辑器中经常具有“强制”的意思。 |
|
:wq |
保存文件后离开vi编辑器。若为“:wq!”则表示强制保存后离开(常用) |
ZZ |
若文件没有改动,则不保存离开;若文件已被改动,则保存后离开。 |
:w[filename] |
将编辑的数据保存成另一个文件(相当于另存文件) |
:r[filename] |
在编辑的数据中,读入另一个文件的数据, 即将“filename”这个文件内容加到光标所在行后面 |
:n1, n2 w [filename] |
将n1到n2的内容保存成filename这个文件 |
:! command |
暂时离开vi编辑器到命令行模式执行command的显示信息。例如“:! ls /root”即可在vi当中查看 /root下面以ls输出的文件信息 |
vi编辑器的环境更改 |
|
:set nu |
显示(设置)vi编辑器的行号 |
:set nonu |
取消vi编辑器的行号 |