光标移动
左:h
下:j
上:k
右:l
下一行行首:+
上一行行首:-
当前行行首:0
当前行行尾:$
后一个单词词首:w,W
后一个单词词尾:e,E
前一个单词词首:b,B
下一屏:CRTL+F
上一屏:CRTL+B
下半屏:CRTL+D
上半屏:CRTL+U
向上滚动屏幕: CRTL+Y
向下滚动屏幕: CRTL+E
跳到文件尾:G
跳到文件头:g
当前屏幕首行:H
当前屏幕末行:L
当前屏幕中央:M
指定行:行号G,:行号
指定字符串前:/字符串,?字符串
当前行指定字符前:f字符,F字符
文字追加和插入
当前光标右方追加:a
当前光标行尾追加:A
当前光标左方追加:i
当前光标行首追加:I
当前行下方追加行:o
当前行上方插入行:O
文字删除
删除光标位置文字:x
删除光标左方文字:X
删除当前行:dd
删除光标移动范围内的文字:d光标移动命令
文字替换
替换1文字到多文字:s
替换1文字到1文字:r
替换到当前行尾:C
替换当前行:cc
从当前位置开始替换直到输入ESC:R
文字复制和粘贴
(例)
复制光标以下3行:3yy,3Y
复制光标以后6个单词:6yw
粘贴到光标以下:p
粘贴到光标以上:P
通用替换命令
:行1,行2s/字符串1/字符串2/g
“行1,行2”指定方法例:
第5行到第30行:5,30
当前行到第30行:.,30
第5行到第末尾行:5,$
第5行到含有end的行:5,/end/
所有行:%
其他常用命令
显示行号
:set number 或者 :set nu
隐藏行号
:set nonumber 或者 :set nonu
自动缩进
:set autoindent 或者 :set ai
不自动缩进
:set noautoindent 或者 :set noai
显示Tab及行尾字符
:set list
隐藏Tab及行尾字符
:set nolist
设置Tab宽度为4个字符
:set tabstop=4
查看当前设置
:set all
:dd 删除当前行
:ndd 删除当前行以下n行(包括当前行在内)
:p 粘贴
:yy 复制当前行
:nyy 复制当前行以下n行(包括当前行在内)
:dd和ndd也可以认为是“剪切”。
:n,m co k 复制n到m行,粘贴到k行处(从下一行开始)
:n,m m k 剪切n到m行,粘贴到k行处(从下一行开始)
:n,m d 删除n到m行
注意的是,m必须大于n,而且m、n、k都在正文行号之内。比如说,如果文件有10行,而你的操作中出现了11,就会出现错误。m可以用特殊符号$,代表到结尾处。
如果要处理的文本比较多,那么可以采用标号的方法。具体如下:
光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc
然后 :'a,'b co 'c,就实现了复制粘贴。如果把co改为m,就实现了剪切粘贴。
乱序排版:
ggv=^g
ggv=G
如何在VI里使用复制粘贴的命令?
v然后选中,
Y或是yy
然后p
阅读(488) | 评论(0) | 转发(0) |