vi常用命令汇总

目录

vi打开编辑文件

vi [file ..]

示例:vi test.conf,vi /tmp/test.conf,...

如果指定的filePathAndName存在则会自动载入该文件内容,如果不存在则会自动创建。

注:每行前显示波浪符号的表示该行为空行。

vi进入输入模式

vi工作于两种模式:指令模式和输入模式。指令模式是打开文件后的默认模式,此时输入任何字符均被视为控制指令。输入模式就是普通的编辑模式,此时输入字符默认为输入内容。

vi编辑指令

关于退出

:w ---- 保存当前文件
:wq! ----强制保存退出
:wq ---- 保存退出
: x ----- 作用和:wq 一样
ZZ ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式)
:q ---- 直接退出,如已修改会提示是否保存
:q! --- 不保存直接退出
========================================================

关于屏幕翻页

Ctrl+u: 向上翻半屏
Ctrl+f: 向上翻一屏
Ctrl+d: 向下翻半屏
Ctrl+b: 向下翻一屏

关于移动

移动光标普遍使用的是方向键,考虑兼容问题,vi定义太多的方向指令,下面只是一小小部分(常用的几个):
space: 光标右移一个字符
Backspace: 光标左移一个字符
Enter: 光标下移一行
nG: 光标移至第n行首
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
0: 光标移至当前行首
$: 光标移至当前行尾
h : 在当前行向左移动一个字符
j: 移动到下一行
k:移动到上一行
l:在当前行向右移动一个字符
:n 将光标定位到第n行
: $ 将光标定位到最后一行
G 将光标定位到本文章的最后一行,与: $功能相同。
H 将光标定位到屏幕的顶端
M 将光标定位到屏幕的中间
L 将光标定位到屏幕的底端
=============================================================

关于搜索

/: 后面跟要查找的东西,在文件中向前搜索
?:后面跟要查找的东西,在文件中向后搜索
n: 向前重复搜索
N: 向后重复搜索
=============================================================

关于复制

yy: 复制光标当前行
nyy: 复制光标当前行到当前行以下的n-1行
:1,100 co 200 将1~100的内容复制到第200行。
:100,102 co $ 将100~102行的内容复制到最后一行。
==============================================================

关于粘贴

p : 粘贴到当前行的下一行
P(大) : 粘贴到当前行的 上一行
==============================================================

关于删除/剪切

dd 删除光标所在的行
ndd 与nyy相似
dw 删除一个单词
ndw 与ndd相似
x 删除光标所在字符,等同于[Delete]功能键
X: 删除光标前字符,相当与[Backspace]
nx 删除n个字符
r: 修改光标所在字符
R: 替换当前字符及其后的字符,直到按 [ESC]
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
dG 删除当前光标到文件末尾的所有内容。
d0 删除当前光标到本行行首的所有内容
d$ 删除当前光标到本行行尾的所有内容
:1,100d 删除1~100
:100d 删除第100行
:1,100 mo $ 将1~100行的内容移动到最后一行。
======================================================

关于插入

i: 在当前光标前插入,光标后文本向后移
I: 在光标所在行首插入(第一个非空白字符前)
a: 从当前光标后插入,光标后文本后移
A: 从光标所在行末插入
o: 在光标所在行下面新增一行(并进入输入模式)
O:在光标所在行上方新增一行(并进入输入模式)
======================================================

关于撤销

u: 撤销上一次的更改
=======================================================

关于替换

r*egexp:是要匹配的式样
replacement: 是要替换的字符串*
*:s /regexp/replacement -------------------------替换当前行出现的第一个式样
:s/regexp/replacement/g-------------------------替换当前行所有的匹配
:%s/regexp/replacement/g-----------------------替换文件中所有匹配式样
==========================================================

*PS: 还有一个重要的命令就是"." 命令,这个命令是用来重复上一命令的*

参考资料:
http://bbs.chinaunix.net/thread-1952349-1-1.html

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据