vi/vim常用命令 zz

http://blog.sina.com.cn/s/blog_492101c70100o10c.html

最近整理的vi/vim常用命令,有需要的童鞋拿去用吧

(本来是在excel中的,但是没有地方上传,所以就直接贴过来了。)

正常模式 命令行模式(需回车确认) 其他
操作功能同义示例/变种 操作功能同义示例/变种 操作功能
移动光标 文件操作 命令行
w到下一个单词的第一个字符处,标点符号也算一个单词   :q不保存并退出   set -o editor按<Esc>后在命令行使用指定的编辑器模式,如set -o vi
W到下一段单词的第一个字符处,标点符号不算单词   :q!并保持并强制退出   vi file打开文件,并定位于第一行
b到上一个单词的第一个字符处,标点符号也算一个单词   :w保存修改   vi +n file打开文件,并定位于第n行
B到上一段单词的第一个字符处,标点符号不算单词   :w!保存修改;若有重名则覆盖   vi + file打开文件,并定位于最后一行
e到下一个单词的最后一个字符处,标点符号也算一个单词   :wq保存并退出ZZ
:x
  vi -R file以只读模式打开文件
E到下一个单词的最后一个字符处,标点符号不算单词   :m,nw file把m行到n行写入一个文件 :1,10w tmp vi -r file打开上次vi时系统崩溃的文件。
h向左   :e file读入文件;若不存在则创建   vi *.txt打开多个文件(多文件编辑)
l向右<SP>  :e!丢弃修改,并重新载入文件   多文件编辑
j向下   文本编辑 :n打开下一个文件
k向上   :%!xxd以十六进制查看   :e#打开上一个文件
0到行首   :%!xxd -r从十六进制返回   <C-S-6>打开上一个文件
^到行内非空格的第一个字符   :n1,n2 co n3将n1行到n2行之间的内容拷贝到第n3 行下。   :argdo %s/pat1/pat2/ge | update在所有打开的文件中把str1替换成str2
$到行尾   :n1,n2 m n3将n1行到n2行之间的内容移动到第n3 行下。   列模式
+到下一行的非空白处<CR>  :r! cmd将cmd的输出插入到当前行 :r! date
:r! cat tmp
 <C-v>切换到列模式
-到上一行的非空白处   :nr    <Esc>退出列模式
)到下一句首   :set cursorline高亮当前行   nk,nl.. 
(到上一句首   :set cursorcolumn高亮当前列   c,I,a,d.. 
}到下一段首   替换 宏操作
{到上一段首   :s/pat1/pat2用pat2替换当前行中与pat1匹配的每个内容,需要确认   1.使用命令qa(其中的a为寄存器名,可自由指定),将结果保存至寄存器a中,其中a可为从a到z的任意字母
2. 输入需要执行的命令
3. 键入q,结束操作的录制
4. 输入@a,这里的a为第一步中指定的寄存器名,执行先前录制的操作,我们可以在@a前加数字,例如4@a等。
]]到下一个章节/函数   :%s/pat1/pat2用pat2替换整个文件中与pat1匹配的每个内容   
[[到上一个章节/函数   :s/pat1/pat2/g用pat2替换当前行中与pat1匹配的每个内容,不需要确认   
nG到第n行:n1G :%s/pat1/pat2/g用pat2替换整个文件中与pat1匹配的每个内容,不需要确认   
gg到第一行1G
:1
  :m,ns/pat1/pat2/g用pat2替换m行到n行中与pat1匹配的每个内容,不需要确认   其他
G到文档底部   :m,ns/^/#/g在m行到n行的行首添加字符#   功能操作
<C-g>显示行号等信息   :m,ns/^#//g删除m行到n行行首的字符#   在行首插入行号g/^/exec"s/^/".strpart(line(".")."", 0, 4)
mx用字符x标记当前位置 mk :g/^$/d删除所有空行   复制m到n行的内容到寄存器a1. 定位到第m行并按下mk
2. 定位到第n行并按下"ay'k
`x定位到字符x标记的位置   :%s/<C-v><C-CR>//g删除^M   运行TMS result script进行TMS update:!tmsrun -S %
'x定位到字符x标记的位置行首   :ab str1 str2在键入str1并按<Esc>后把str1替换成str2   列出当前文件中所有的DNSlog:!grep ADNS %
''定位到上一个标记位置   系统 列出当前文件中所有的REGISTER:!cgrep -R "\[REGISTER " % |less
·.定位到上一次修改点   :h cmd查看cmd的帮助     
‘.定位到上一次修改行   :!cmd执行命令cmd :!sort   
TAB :sh打开shell并运行命令,exit返回     
<<当前行左移一个TAB n<< :n定位到第n行 :1   
>>当前行右移一个TAB n>> :reg查看所有寄存器     
:m,n>m行到n行右移一个TAB :1,10> :set all查看set所有子命令     
屏幕操作 :set nu显示行号     
H到屏幕的第一行   :set nonu不显示行号     
M到屏幕的中间行   :set ai自动缩进     
L到屏幕的最后一行   :set ic忽略大小写     
z<CR>将光标所在的那一行移至屏幕顶部   :set so=n总是保持上下n行 :set so=4   
z-将光标所在的那一行移至屏幕底部   :nmap key1 key2把key1映射成key2 :nmap <F9><C-w>w   
z.将光标所在的那一行移至屏幕中部 zn. :his历史命令     
/pat/z-将pattern行移至屏幕底部 /ERROR/z- 多窗口/文件操作   
<C-f>向下滚动一屏   :sp file分割出一个横向窗口并打开文件     
<C-b>向上滚动一屏   :vsp file分割出一个纵向窗口并打开文件     
<C-d>向下滚动半屏   :S在另外一个窗口中打开当前文件     
<C-u>向上滚动半屏   <C-w>w在所有窗口间切换     
<C-e>向下滚屏一行   <C-w>p在最近两个窗口间切换     
<C-y>向上滚屏一行   <C-w>h移到左面的窗口     
<C-R>刷新屏幕   <C-w>l移到右面的窗口     
编辑文本-插入 <C-w>j移到下面的窗口     
a从当前光标所在的位置的下一个字符开始输入   <C-w>k移到上面的窗口     
A从当前行尾开始输入   <C-w>+扩大当前窗口     
i从当前光标所在的位置开始输入   <C-w>-缩小当前窗口     
I从当前行首开始输入   <C-w>=使窗口大小一致     
o在当前行的下一行增加一个新行,并定位到新行的行首   <C-w><C-r>交换两个窗口位置     
O在当前行的上一行增加一个新行,并定位到新行的行首   :ls列出vim当前打开的所有文件     
<C-h>插入模式下退格   :b number在当前窗口打开ls出的指定文件     
<C-w>插入模式下删除最后一个单词   :set diff比较用vsp打开的并列的文件     
<C-d>插入模式下将当前行向左缩进一个TAB   :q关闭当前窗口     
编辑文本-复制,粘贴     
y复制当前字符 :m,ny
:m,y
:,ny
        
yy复制当前行 nyy        
yw复制光标所在位置到整个单词结束的字符 nyw        
"ayy把当前行内容复制到a寄存器          
"Ayy把当前行内容追加到a寄存器          
p粘贴(复制或删除的内容)          
”ap粘贴a寄存器中的内容          
编辑文本-删除/剪切        
d删除 nd
d),d(,d},d{
        
d←删除光标前的字符          
d→删除光标处的字符          
d↑删除当前行以及上一行          
d↓删除当前行以及下一行          
d0删除至行首          
d$删除至行尾D         
D删除至行尾d$         
dG删除至文档尾          
dd删除当前行 ndd        
ddp交换上下两行          
dw删除至当前单词尾 ndw        
“add删除当前行,并把内容放到a寄存器          
x删除光标所在位置的字符 nx        
xp交换前后两个字符          
X删除光标所在位置的前一个字符d←nX        
编辑文本-替换        
r更改当前字符,并保持在正常模式          
R连续替换当前光标下的字符,按<Esc>结束          
c替换          
C替换当前行后面的部分Da         
cc替换当前行S
ddO
         
cw替换当前单词          
s替换当前字符并进入插入模式,按<Esc>结束          
S替换当前行cc         
~更改当前字符的大小写          
guw单词小写          
gUw单词大写          
g~w单词大小写反转          
guu把当前行小写          
gUU把当前行大写          
g~~把当前行大小写反转          
J将当前行和前一行连接起来,并删除因此而来的空行          
编辑文本-查找        
/pat向前查找pattern /ERROR        
/pat/+n定位到pattern后的第n行 /ERROR/+3        
?pat向后查找pattern          
?pat?-n定位到pattern前的第n行          
n继续向前查找          
N继续向后查找          
*向下查找当前的单词。与n/N搭配使用。          
#向上查找当前的单词。与n/N搭配使用。          
g*向下查找当前的单词,不完全匹配。与n/N搭配使用。          
g#向上查找当前的单词,不完全匹配。与n/N搭配使用。          
gd查找当前的单词,并定位在非注释段中第一次出现该单词的地方          
fx向右定位到字符x f0        
Fx向左定位到字符x          
tx向右定位到字符x前          
Tx向左定位到字符x后          
;继续向下找,与f/F结合使用          
,继续向上找,与f/F结合使用          
定位到上一个标记处,与g/*结合使用          
%定位到匹配的括号 d%        
编辑文本-还原        
u还原上次操作          
U还原当前行          
<C-r>恢复被u撤销的操作          
补齐        
<C-n>插入模式下向下搜索补齐当前输入          
<C-p>插入模式下向上搜索补齐当前输入          
<C-x><C-l>补齐整行,在当前窗口中搜索          
<C-x><C-f>自动补齐,在当前目录下的文件名中搜索          
<C-x><C-k>使用字典文件进行自动补齐。
前提是在~/.vimrc中进行如下设置:
set dictionary+=/usr/share/dict/words
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值