十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
命令模式:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入插入模式下,活着到末行模式。
成都创新互联专注于企业成都营销网站建设、网站重做改版、菏泽网站定制设计、自适应品牌网站建设、HTML5、商城网站制作、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为菏泽等各大城市提供网站开发制作服务。编辑模式:在编辑模式下,可以使用键盘输入文本,按Esc退出编辑模式返回到命令模式。
末行模式:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
vi
如果filename文件存在则打开该文件。
如果filename文件不存在则创建一个新文件。
移动光标:
h 或 向左方向键(←) 光标向左移动一个字符
j 或 向下方向键(↓) 光标向下移动一个字符
k 或 向上方向键(↑) 光标向上移动一个字符
l 或 向右方向键(→) 光标向右移动一个字符
注意 : Unix 系统不支持上, 下, 左, 右四个方向键, Linux 系统为方便用户,在 vi 中支持上述方向键
在一行中移动
0(数字):使光标移动到当前行的开头
$:使光标移动到当前行的末尾
w:向前移动一个单词(光标定位在单词的开头)
b:向后移动一个单词(光标定位在单词的开头)
e:光标定位到单词的末尾
从一行移动到另一行
k:向上移动一行
j:向下移动一行
Ctrl+u:向上翻一页
Ctrl+d:向下翻一页
gg:使光标移动到文档第一行的第一个字符处
G:使光标移动到文档最后一行的第一个字符处
进入编辑模式
从命令模式输入命令: a, A, i, I进入到编辑模式。
i(insert):在当前光标位置的前面进入到编辑模式
a(append):在当前光标位置的后面进入到编辑模式I:在当前行的开头进入到编辑模式
A:在当前行的末尾进入到编辑模式
o:在当前行之后插入一个新行,并进入到编辑模式O:在当前行之前插入一个新行,并进入到编辑模式
r:替换单个字符,光标放置在要替换的字符上,按r之后vi自动进入编辑状态,输入一个需要的字符后,vi自动返回命令模式(不需要按Esc返回),非常方便。
cw:(change word)替换整个单词(光标在单词的第一个字符上),如果光标在单词的中间位置将替换光标到单词结尾之间的所有字符
删除文本
lx, X : 删除当前光标所在字符 / 前一个字符
lnx, nX : 删除从当前光标位置开始后 n 个字符 (包括当前字符) / 前 n 个字符(不包括当前字符)
lD : 删除当前光标位置开始后的该行所有字符(包括当前字符)
ldd, ndd : 删除当前光标所在行 / 当前光标所在行l开始的后 n 行
复制
yy, nyy : 复制光标所在当前行 / 光标所在当前行开始的后 n 行 (包括当前行)
yw : 复制光标位置到单词结束的字符
y$:复制光标位置到行尾的所有字符
粘贴
p (paste ): 在当前光标后粘贴
P(大写): 在当前光标前粘贴
dd+p:剪切并粘贴一行——首先dd删除当前行,把光标移动到需要粘贴的位置按p进行粘贴。
x+p:剪切并粘贴一个字符
dw+p:剪切并粘贴一个单词
d$+p:剪切并粘贴光标到行尾的所有字符
退出编辑模式
按Esc键退出编辑模式,返回到命令模式。
在命令模式下,可输入 /, ?, :, !等头的操作指令,完成相应的功能
/ 向前查找字符串
? 向后查找字符串
: 执行文件相关操作命令
! 启动一个 shell 指令
保存文件
:w 将编辑的数据写入硬盘文件中(常用)
:w!强制写入该文件。
:q 退出编辑(常用)
:q!不保存强制退出
:wq 写入并退出
:wq! 强制写入并推出(常用)
:x 写入并退出(与wq区别:当文件没有修改时,x不更新修改时间,wq刷新文件,更新修改时间)
:e!打开新文件到vi编辑器,并放弃对当前文件的修改
ZZ 写入并退出(不加“:”,命令模式下)
保存文件(另存)
:w [filename] 将编辑的数据储存成另一个文件(类似另存新文件)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将【filename】这个文件内容加到游标所在行后面
:n1,n2 w [filename] 将n1到n2行的内容储存成 filename 这个文件。
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号
:! Command 暂时离开 vi 到指令列模式下执行command 的显示结果
例如 【:! ls /home】即可在 vi 当中察看 /home 底下以 ls 输出的文件信息
/word 向光标之下寻找一个字符串名称为 word 的字符串
?word 向光标之上寻找一个字符串名称为 word 的字符串
n 重复前一个搜寻的动作
N 为反向进行前一个搜寻动作,与n相反
:s/word1/word2 在当前行搜索word1,并将第一个word1替换为word2
:n1,n2 s/word1/word2/g
在第 n1 与 n2 行之间寻找 word1 这个字符串,并将所有word1取代为 word2 ,g(global)代表全局
举例来说,在 100 到 200 行之间搜寻 test 并取代为 TEST 则:【:100,200s/test/TEST/g】(常用)
:1,$ s/word1/word2/gc
从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给使用者确认 (conform) 是否需要取代!(常用)
vi中的撤销undo和重做redo
u(undo):撤销
Ctrl+r(redo):重新执行
vi重复执行上次命令
.(句号):再次执行上一条vi命令