📄 vi文本编辑器的使用.txt
字号:
作者:何志强
email: hhzqq@chinaweal.com
日期:1999-12-26 下午 10:41:01
1、规则
vi中命令的规则如下:
[n] command
n表示命令重复次数
2、切换模式
vi有两种模式:插入模式和命令模式。
在插入模式下,你所键入的字符(除Esc)都将插入到正在编辑的文件中,直到你键入Esc退出插入模式。
在命令模式下,你可以剪切、粘贴、移动光标、搜索、删除文字、修改文字等,直到你键入i(在光标所在位置插入字符)或a(在光标所在位置后插入字符)进入插入模式。
3、文件操作命令(命令模式)
:q 退出(注意必须是对文件没有做任何修改)
:q! 不保存最近一次保存后对文件的任何修改并退出
:w 保存最近一次保存后对文件的任何修改
:wq 保存最近一次保存后对文件的任何修改并退出
:w <filename> 另存为<filename>(注意<filename>必须不存在)
:w! <filename> 强制性地另存为<filename>
:w >> <filename> 追加到<filename>(注意<filename>必须存在)
:w! >> <filename> 强制性地追加到<filename>
4、光标移动命令(命令模式)
[n]h 光标向左移一[n]个字符(不能越过本行)
[n]Backspace、[n]ctrl-h 光标向左移一[n]个字符(能越过本行)
[n]l 光标向右移一[n]个字符(不能越过本行)
[n]空格 光标向右移一[n]个字符(能越过本行)
[n]j、[n]回车、[n]+ 光标向下移一[n]行
[n]k、[n]-、[n]ctrl-p 光标向上移一[n]行
0、^ 光标移动到本行的第一个字符上
$ 光标移动到本行的最后一个字符上
[n]H 光标移动到本屏幕第1[n]行的第一个字符上
[n]L 光标移动到本屏幕从后往前第1[n]行的第一个字符上
M 光标移动到本屏幕中间一行的第一个字符上
:<n>、<n>G 光标移动到文件的第<n>行的第一个字符上
[n]| 光标移动到当前行的第1[n]列
:$、G 光标移动到文件的最后一行的第一个字符上
[n]b、[n]B 光标移动到光标前一个位置所在的第1[n]个词的第一个字符上
[n]e、[n]E 光标移动到光标后一个位置所在的第1[n]个词的最后一个字符上
[n]w、[n]W 光标移动到光标所在的下1[n]个词的第一个字符上
[n]( 光标移动到上1[n]句的第一个字符上
[n]) 光标移动到下1[n]句的第一个字符上
[n]{ 光标移动到上1[n]段落的第一个字符上
[n]} 光标移动到下1[n]段落的第一个字符上
[n]ctrl-b 回到上1[n]页,光标移动到上1[n]页最后一行的第一个字符上
[n]ctrl-f 往下滚1[n]页,光标移动到下1[n]页第一行的第一个字符上
[n]ctrl-d 若有n则往下滚n行,光标不动,并且设置向下滚的缺省行数为n行,若无n则往下滚动缺省行
[n]ctrl-e 往下滚1[n]行,光标不动
[n]ctrl-u 若有n则往上滚n行,光标不动,并且设置向上滚的缺省行数为n行,若无n则往上滚动缺省行
[n]ctrl-y 往上滚1[n]行,光标不动
5、编辑命令(命令模式)
a 从光标下一个位置插入字符
A 从光标所在行未插入字符
i 从光标所在位置插入字符
I 从光标所在行首插入字符
o 在光标当前行后插入一新行
O 在光标当前行前插入一新行
[n]dd 删除从光标所在行开始往下的1[n]行
[n]D、[n]d$ 删除从光标所在位置开始往下1[n]行
d^ 删除光标所在前一个位置到行首的字符
[n]x 删除从光标所在位置开始向右的1[n]个字符
[n]X 删除从光标所在前一个位置开始向左的1[n]个字符
[n]dw、[n]dW 删除从光标所在位置开始向右的1[n]个词
[n]C 修改从光标所在位置开始向下1[n]行
[n]cw、[n]cW 修改从光标所在位置开始向右1[n]个词
[n]u 取消前1[n]次所作的修改
U 取消对光标所在行的所有修改
[n]p 将最近删除的字符或行粘贴到光标所在字符或行后1[n]遍
[n]P 将最近删除的字符或行粘贴到光标所在字符或行前1[n]遍
[n]J 将光标所在行的下1[n]行移动到光标所在行未
r<c> 用<c>代替光标所在位置字符
R<c...> 用<c...>代替光标所在位置及其后的若干字符
s<c...> 用<c...>代替光标所在位置字符
S<c...> 用<c...>代替光标所在行
[n]xp 将从光标所在位置开始向右1[n]个字符与后面的字符交换位置
[n]yw 将从光标所在位置开始向右1[n]词拷贝到缓冲区
[n]Y 将从光标所在行开始向下1[n]行拷贝到缓冲区
. 重复上一个修改命令
[n]:co <n> 将从光标所在行开始向下1[n]行拷贝到第<n>行后
[n]:m <n> 将从光标所在行开始向下1[n]行移动到第<n>行后
:r <filename> 将文件<filename>插入到当前行后
[n]<< 将从光标所在行开始向下1[n]行左移(移动的字符数用:set shiftwidth=<n>来设置)
[n]< 将从光标所在行开始向下或上1[n]行左移(移动的字符数用:set shiftwidth=<n>来设置,由Down或Up键来确定向下或上)
[n]>> 将从光标所在行开始向下1[n]行右移(移动的字符数用:set shiftwidth=<n>来设置)
[n]> 将从光标所在行开始向下或上1[n]行右移(移动的字符数用:set shiftwidth=<n>来设置,由Down或Up键来确定向下或上)
~ 切换光标所在字符的大小写
6、搜索命令(命令模式)
/<pattern> 在全文范围内向下搜索
?<pattern> 在全文范围内向上搜索
n 重复上一个/或?搜索,方向不变
N 重复上一个/或?搜索,但方向相反
f<c>、t<c> 在当前行中向下搜索一个字符<c>
F<c>、T<c> 在当前行中向上搜索一个字符<c>
; 重复上一个f、F、t或T搜索,方向不变
, 重复上一个f、F、t或T搜索,但方向相反
:<n1>,<n2>g/<pattern>/p 列出<n1>和<n2>行之间符合条件的所有行,:1,$g/compiler/p将列出包含compiler的所有行
:<n1>,<n2>s/<pat1>/<pat2>/g 用pat2代替<n1>和<n2>行之间符合<pat1>的<pat1>
:set ignorecase 不匹配大小写
:set noignorecase 匹配大小写
7、特殊字符(用于搜索)
^ 行首(放在一个搜索表达式前)
$ 行未(放在一个搜索表达式后)
. 匹配一个字符
* 匹配任何字符
[...] 匹配或不匹配一组表达式,如/f[iae]t将匹配fit、fat、fet,而/a[^bcd]将不匹配ab、ac、ad
\<、\> 例/\<the\>将匹配the,但不匹配there、other等
8 、其他命令
ctrl-l 刷新当前页面
ctrl-g 显示当前行号、列号和总行数等信息
:set、:set all 显示配置信息
:set nu 在每一行前显示行号
:set nonu 在每一行前不显示行号
:set list 显示文件中的特殊字符
:set nolist 不显示文件中的特殊字符
:set shiftwidth=<n> 设置<<(左移)和>>(右移)字符数
参考资料:
vi Basics
http://www.msn.fullfeed.com/faq/vi.help
A Beginner's guide to vi and ex
http://www.cs.umr.edu/unixinfo/general/packages/viguide.html
Mastering the VI editor
http://www.eng.hawaii.edu/Tutor/vi.html
the VI editor faq
http://www.edu.physics.uch.gr/~danalis/manuals/vi/faq_frames.html
VI Lovers Home Page
http://www.cs.vu.nl/~tmgil/vi.html
VI Tutorial
http://ecn.www.ecn.purdue.edu/ECN/Documents/VI/
vi Reference
http://www.cs.wustl.edu/~jxh/vi.html
the VI editor
http://www.edu.physics.uch.gr/~danalis/manuals/vi/vi_front.html
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -