博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VI常用命令和按键
阅读量:6446 次
发布时间:2019-06-23

本文共 2575 字,大约阅读时间需要 8 分钟。

1. 存储及退出文件
:wq或者:x  存文件,并且退出vi
ZZ  保存并退出(:x 表示仅在需要时保存,ZZ不需要输入冒号并回车) ZZ = wq
ZQ  无条件退出
:e filename 打开文件filename进行编辑[相当于退出当前的并打开另一个文件]
:e! 放弃修改文件内容,重新载入该文件编辑
:e 重新载入【类似刷新】
ctrl+z/fg 暂时挂到后台/跳回编辑页面
:f 或 Ctrl-g   显示文件名及一些其他信息
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi
:r!command 将命令command的输出结果放到当前行【强大】
vim -x exam.txt 新编辑的文件加密,会提示输入密码
:X  文件加密,会提示输入密码
:map 列出当前已定义的映射(如何定义映射?)
:jumps 列出关于你曾经跳转过的位置的列表,你最后一个跳转的位置被特别以一个”>”号标记
:marks 列出自定义的标记,包含VIM内部自定义的标识
:%!nl  要对包含空行的所有行进行编号(所有行之前插入行号^I)
:version 显示VIM版本信息,包含特性、编译方式及配置文件目录
:options 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表(do what?)
:r filename 在光标所在处插入一个文件的内容(read)可加入数字 :nr filename
:f filename 改变编辑中的文件名(file)相当于复制了一个文件,执行这个命令后,新编辑不会应用于原文件
gf vim特殊打开文件的方法,打开光标所在处的 word 为名的文件,当然,这个文件要在当前目录内,否则会创建新文件
2.移动
(1)单词
w 光标跳到下个word的第一个字母 [常用]
W 移到下一个字的开头,忽略标点符号
b 光标回到上个word的第一个字母
B 移到前一个字的开头,忽略标点符号 BACK
e 光标跳到下个word的最后一个字母
E 移到下一个字的结尾,忽略标点符号 END
ge 前一个word的词尾
gE
(2)行
n+ 光标下移n行【按上档键 数字shift +】
n- 光标上移n行
[[ 文件开始位置——开始行
]] 文件结束位置——末尾行
H  光标移至屏幕顶行    HEAD
M  移到屏幕的中间行开头 Middle
L  移到屏幕的最后一行 LAST
(  光标移至句首
)  光标移至句尾
(3)段落
* 和 #  匹配光标当前所在的单词,移动光标到下(或上)一个匹配单词(*是下一个,#是上一个)
zf 折叠(需加方向键)
zo 展开(空格也可以展开)
(4)屏幕
Ctrl+u 向文件首翻半屏up
Ctrl+d 向文件尾翻半屏down
Ctrl+f 向文件尾翻一屏 forward (fact整屏去两行)
Ctrl+b 向文件首翻一屏back (fact整屏去两行)
CTRL-] 跳转到当前光标所在单词对应的主题
CTRL-O 回到前一个位置
zz 命令会把当前行置为屏幕正中央(z字取其象形意义模拟一张纸的折叠及变形位置重置)
zt 命令会把当前行置于屏幕顶端(top)
zb 命令会把当前行置于屏幕底端(bottom)
50% 光标定位在文件的中间
` 跳转到最近光标定位的位置(只能记忆最近两个位置) 反引号
3.插入
I 在当前行首开始插入字符
A 在光标所在行的最后面开始加字
s 默认删除光标所在字符,输入内容插入之 = xi
S 默认删除当前行内容,输入内容作为当前行新内容= dd+o
4.删除
(1)字符
nx 删除由光标位置起始后的n个字符(含光标位置) x =dl(删除当前光标下的字符)
nX 删除由光标位置起始前的n个字符(含光标位置) X =dh(删除当前光标左边的字符)
d0 删至行首
d$ 删至行尾
dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容
D 代表d$(删除到行尾的内容)
C 代表c$(修改到行尾的内容)
(2)单词
ndw 删除光标处开始及其后的n-1个字
ndb 删除光标处开始及其前的n-1个字
diw 删除当前光标所在的word(不包括空白字符),意为Delete Inner Word 两个符号之间的单词
daw 删除当前光标所在的word(包括空白字符),意为Delete A Word
(3) 行
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容
cw 删除当前字,并进入输入模式 【很好用,快速更改一个单词】 相当于dw+i
ncw 删除当前字及其后的n-1个字,并进入输入模式\ 修改指定数目的字
cc 删除当前行,并进入输入模式
ncc 删除当前行及其后的n-1行,并进入输入模式
guw 光标下的单词变为小写
gUw 光标下的单词变为大写
xp 左右交换光标处两字符的位置
ga 显示光标下的字符在当前使用的encoding下的内码
5.复制和黏贴
(1)复制
y0 表示拷贝从当前光标到光标所在行首的内容
y$ 复制从当前位置到行尾
yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容
yG 复制从所在行到最后一行
P 复制暂存数据在光标的上一行
:n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3+1行【n3行的下一行】
:n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下
~ 改变当前光标下字符的大小写
 
6.查找
/pattern 从光标开始处向文件尾搜索pattern
?pattern 从光标开始处向文件首搜索pattern
# 向上完整匹配光标下的单词 相当于?word
* 向下完整匹配光标下的单词 相当于/word
 
7.替换
:%s!\s*//.*!!  去掉所有的“//”注释
:%s!\s*/\*\_.\{-}\*/\s*!!g 去掉所有的“/* */”注释
:%s= *$== 将所有行尾多余的空格删除(没看懂)
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除

参考:

转载于:https://www.cnblogs.com/xkfz007/archive/2012/05/11/2496738.html

你可能感兴趣的文章
reids 安装记录
查看>>
获取androdmanifest里面的meta-data
查看>>
Centos 6.3编译安装nagios
查看>>
如何实现7*24小时灵活发布?阿里技术团队这么做
查看>>
iSCSI
查看>>
java1234_Activiti_第6讲_一般程序员使用的函数
查看>>
mysql拷贝表的几种方式
查看>>
NetApp FAS2240-4存储删除文件数据恢复
查看>>
Qt设置美观按钮
查看>>
技术人在学习爱的路上
查看>>
openvswitch安装(centos6.5)
查看>>
Windows 7 使用超级管理员
查看>>
LVS -NAT模式配置实例
查看>>
北航 2012 秋季 现代软件工程 团队项目要求
查看>>
获取通讯组属性Get-DistributionGroup
查看>>
"知识管理夏季论坛",免费,欢迎你来!
查看>>
常用DOS命令
查看>>
能上QQ上不了网的解决办法
查看>>
flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台
查看>>
【翻译】将Ext JS Grid转换为Excel表格
查看>>