vim基本命令
vim编辑器常用命令

vim编辑器常⽤命令vi有3个模式:插⼊模式、命令模式、低⾏模式。
插⼊模式:在此模式下可以输⼊字符,按ESC将回到命令模式。
命令模式:可以移动光标、删除字符等。
低⾏模式:可以保存⽂件、退出vi、设置vi、查找等功能(低⾏模式也可以看作是命令模式⾥的)。
⼀、打开⽂件、保存、关闭⽂件(vi命令模式下使⽤)vi filename //打开filename⽂件:w //保存⽂件:w //保存⾄⽂件:q //退出编辑器,如果⽂件已修改请使⽤下⾯的命令:q! //退出编辑器,且不保存:wq //退出编辑器,且保存⽂件⼆、插⼊⽂本或⾏(vi命令模式下使⽤,执⾏下⾯命令后将进⼊插⼊模式,按ESC键可退出插⼊模式)a //在当前光标位置的右边添加⽂本i //在当前光标位置的左边添加⽂本A //在当前⾏的末尾位置添加⽂本I //在当前⾏的开始处添加⽂本(⾮空字符的⾏⾸)O //在当前⾏的上⾯新建⼀⾏o //在当前⾏的下⾯新建⼀⾏R //替换(覆盖)当前光标位置及后⾯的若⼲⽂本J //合并光标所在⾏及下⼀⾏为⼀⾏(依然在命令模式)三、移动光标(vi命令模式下使⽤)1、使⽤上下左右⽅向键2、命令模式下:h 向左、j 向下、k 向上、l 向右。
空格键向右、Backspace 向左、Enter 移动到下⼀⾏⾸、- 移动到上⼀⾏⾸。
四、删除、恢复字符或⾏(vi命令模式下使⽤)x //删除当前字符nx //删除从光标开始的n个字符dd //删除当前⾏ndd //向下删除当前⾏在内的n⾏u //撤销上⼀步操作U //撤销对当前⾏的所有操作五、搜索(vi命令模式下使⽤)/vpser //向光标下搜索vpser字符串vpser //向光标上搜索vpser字符串n //向下搜索前⼀个搜素动作N //向上搜索前⼀个搜索动作六、跳⾄指定⾏(vi命令模式下使⽤)n+ //向下跳n⾏n- //向上跳n⾏nG //跳到⾏号为n的⾏G //跳⾄⽂件的底部七、设置⾏号(vi命令模式下使⽤):set nu //显⽰⾏号:set nonu //取消显⽰⾏号⼋、复制、粘贴(vi命令模式下使⽤)yy //将当前⾏复制到缓存区,也可以⽤ "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
Linux Vim编辑命令

vim(vi)是Linux中功能强大的编辑工具。
☆vim有3中主要的模式:1.normal mode:当进入vim时,默认的模式就是normal mode。
在此模式下,无法输入任何文字,不过可以利用按键命令来执行许多操作命令,例如移动光标位置、复制、删除。
2.insert mode:进入vim输入a、i、或o键。
即可进入insert mode,此模式下可以输入文字内容。
mand-line mode:在norma lmode中输入“:”即会进入command-line mode,在此模式下,可以做一些与输入文字无关的事,例如搜索字符串、保存文件或结束编辑等。
☆在normal mode下:h:将光标向左移动一格l:将光标向右移动一格j:将光标向下移动一格k:将光标向上移动一格ctrl+b:将页面向前卷动一页ctrl+f:将页面向后卷动一页0:将光标移到该行最前面$:将光标移到该行的最后面G:将光标移到最后一行的开头we或E:将光标移到本单字的最后一个字符;如果光标所在位置为本单子的最后一个字符,则跳到下一个单字的最后一个字符。
b:将光标移到本单词的第一个字符;如果光标所在位置为本单词的第一个字符,则跳到上一个单字的第一个字符。
ctrl+u:将光标向前移动半页ctrl+d:将光标向右移动半页ctrl+e:屏幕向下卷动一行,也可以说文章和光标向上卷动一行ctrl+y:屏幕向上卷动一行,也可以说文章和光标向下卷动一行☆在command-line mode下:e 文件的路径及名称:打开指定文件a:从当前光标所在的位置的下一个字符开始输入i:在光标所在的位置插入新输入的字符o:新增加的一行,并将光标移到下一行的开头w:文件的路径及名称保存文件q:退出vim☆Vim的常用操作命令★复制文字yy:可将光标目前所在位置的正行复制,复制时不会将文字反白显示nyy:其中n为数字键,表示要复制的行数,若按3yy,则连同光标所在的位置的一行,与下面2行一起复制yw:可复制光标所在位置到整个单词结束的字符nyw:n表示要复制的单词数目,若按3yw,则会将目前光标所在位置到单词结束,以及后面的2个字一起复制p:可将复制的文字粘贴到当前光标所在的位置。
linux vim 命令大全

vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern 匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filename....filename :打开多个文件,依次进行编辑移动光标类命令h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:光标上移一行j或Ctrl+n :光标下移一行Enter :光标下移一行w或W :光标右移一个字至字首b或B :光标左移一个字至字首e或E :光标右移一个字至字尾) :光标移至句尾( :光标移至句首}:光标移至段落开头{:光标移至段落结尾nG:光标移至第n行首n+:光标下移n行n-:光标上移n行n$:光标移至第n行尾H :光标移至屏幕顶行M :光标移至屏幕中间行L :光标移至屏幕最后行0:(注意是数字零)光标移至当前行首$:光标移至当前行尾屏幕翻滚类命令Ctrl+u:向文件首翻半屏Ctrl+d:向文件尾翻半屏Ctrl+f:向文件尾翻一屏Ctrl+b;向文件首翻一屏nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令i :在光标前I :在当前行首a:光标后A:在当前行尾o:在当前行之下新开一行O:在当前行之上新开一行r:替换当前字符R:替换当前字符及其后的字符,直至按ESC键s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之ncw或nCW:修改指定数目的字nCC:修改指定数目的行删除命令ndw或ndW:删除光标处开始及其后的n-1个字do:删至行首d$:删至行尾ndd:删除当前行及其后n-1行x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本搜索及替换命令/pattern:从光标开始处向文件尾搜索pattern?pattern:从光标开始处向文件首搜索patternn:在同一方向重复上一次搜索命令N:在反方向上重复上一次搜索命令:s/p1/p2/g:将当前行中所有p1均用p2替代:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:将文件中所有p1均用p2替换选项设置all:列出所有选项设置情况term:设置终端类型ignorance:在搜索中忽略大小写list:显示制表位(Ctrl+I)和行尾标志($)number:显示行号report:显示由面向行的命令修改过的数目terse:显示简短的警告信息warn:在转到别的文件时若没保存当前文件则显示NO write信息nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始mesg:允许vi显示其他用户用write写到自己终端上的信息最后行方式命令:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下:n1,n2 d :将n1行到n2行之间的内容删除:w :保存当前文件:e filename:打开文件filename进行编辑:x:保存当前文件并退出:q:退出vi:q!:不保存文件并退出vi:!command:执行shell命令command:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command 的输入:r!command:将命令command的输出结果放到当前行寄存器操作"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字"?p:取出寄存器?中的内容并将其放到光标位置处。
vim命令大全_pdf

vim 命令(全)本章提供足够的信息使你用够使用 Vim 来做基本的编辑。
这里提供的方法不一定是高效 快捷的。
但起码是有效的。
花些时间去练习这些命令,这是后面的知识的基础。
|02.1| 第一次运行 Vim|02.2| 插入文本|02.3| 移动光标|02.4| 删除字符|02.5| 撤销与重做|02.6| 其它编辑命令|02.7| 退出|02.8| 寻求帮助下一章:|usr_03.txt| 移动前一章:|usr_01.txt| 关于本手册目录:|usr_toc.txt|--------------------------------------------------------------------------------*02.1* 第一次运行 Vim启动 Vim 的命令如下:gvim file.txt在 UNIX 操作系统中,你可以在任意命令提示符下输入这个命令。
如果你用的是 Microsoft Windows, 启动一个 MS-DOS 窗口,再输入这个命令。
无论哪一种方式,现在 Vim 开始编辑一个名为 file.txt 的文件了。
由于这是一个新建文件,你会得到一个空的窗口。
屏幕看起来会象下面这样:+---------------------------------------+|# ||~ ||~ ||~ ||~ ||"file.txt" [New file] |+---------------------------------------+('#"是当前光标的位置)以波纹线(~)开头的行表示该行在文件中不存在。
换句话说,如果 Vim 打开的文件不能充满这个显示的屏幕,它就会显示以波纹线开头的行。
在屏幕的底部,有一个消息行指示文件 名为 file.txt 并且说明这是一个新建的文件。
这行信息是临时的,新的信息可以覆盖它。
VIM 命 令gvim 命令建立一个新窗口用于编辑。
Vim编辑指令

Vim编辑指令基本命令Esc 或 Ctrl+[ 进⼊普通模式i (插⼊) a (附加) 进⼊插⼊模式wq 回车保存退出vim后⾯加上你要打开的已存在的⽂件名或者不存在(则作为新建⽂件)的⽂件名。
打开Xfce终端$ vim practice_1.txt直接使⽤vim也可以打开vim编辑器 vim进⼊命令⾏模式后输⼊:e ⽂件路径同样可以打开相应⽂件游标移动h左l右(⼩写L)j下k上w移动到下⼀个单词b移动到上⼀个单词在普通模式下使⽤下⾯的键将进⼊插⼊模式,并可以从相应的位置开始输⼊命令说明i在当前光标处进⾏编辑I在⾏⾸插⼊A在⾏末插⼊a在光标后插⼊编辑o在当前⾏后插⼊⼀个新⾏O在当前⾏前插⼊⼀个新⾏cw替换从光标所在位置后到⼀个单词结尾的字符请尝试不同的从普通模式进⼊插⼊模式的⽅法,在最后⼀⾏shiyanlou前⾯加上www.,注意每次要先回到普通模式才能切换成以不同的⽅式进⼊插⼊模式保存⽂档(命令⾏模式下保存⽂档)从普通模式输⼊:进⼊命令⾏模式,输⼊w回车,保存⽂档。
输⼊:w ⽂件名可以将⽂档另存为其他⽂件名或存到其它路径下退出vim(命令⾏模式下退出vim)从普通模式输⼊:进⼊命令⾏模式,输⼊wq回车,保存并退出编辑命令说明q!强制退出,不保存q退出wq!强制保存并退出w <⽂件路径>另存为saveas ⽂件路径另存为x保存并退出wq保存并退出普通模式下退出vim普通模式下输⼊Shift+zz即可保存退出vim删除⽂本(普通模式下删除vim⽂本信息)进⼊普通模式,使⽤下列命令可以进⾏⽂本快速删除命令说明x删除游标所在的字符X删除游标所在前⼀个字符Delete同xdd删除整⾏dw删除⼀个单词(不适⽤中⽂)d$或D删除⾄⾏尾d^删除⾄⾏⾸dG删除到⽂档结尾处d1G删⾄⽂档⾸部u撤销ndd删除光标所在位置起的多⾏n为数字yy复制光标当前所在的那⼀⾏nyy复制多⾏为n的数字p将已复制的内容粘贴到光标所在的位置的下⼀⾏⼤P将已复制的内容粘贴到光标所在位置的上⼀⾏np粘贴多⾏到光标的下⼀⾏为n的数字cttl+r重复上⼀次操作$跳到⼀⾏的尾部0跳到⼀⾏的头部gg移动到这个⽂件的第⼀⾏G跳到这个⽂件的最后⼀⾏nG跳到n⾏set nu显⽰⾏号H光标移动到屏幕的最上⽅那⼀⾏的第⼀个字符M光标移动到屏幕的中央那⼀⾏的第⼀个字符L光标移动到屏幕的最下⾯那⼀⾏的第⼀个字符vim重复命令重复执⾏上次命令在普通模式下.(⼩数点)表⽰重复上⼀次的命令操作拷贝测试⽂件到本地⽬录$ cd /home/shi$ cp /etc/protocols .游标的快速跳转普通模式下,下列命令可以让光标快速调转到指定位置,我们分别讨论快速实现⾏间跳转和⾏内跳转⾏间跳转命令说明nG(n shift+g)游标移动到第 n ⾏(如果默认没有显⽰⾏号,请先进⼊命令模式,输⼊:set nu以显⽰⾏号) gg游标移动到第⼀⾏G(Shift+g)到最后⼀⾏⼩技巧:你在完成依次跳转后,可以使⽤ Ctrl+o 快速回到上⼀次(跳转前)光标所在位置,这个技巧很实⽤,⽐如当你在写代码时,忽然想起有个 bug,需要修改,这时候你跳过去改好了,只需要按下 Ctrl+o 就可以回到你之前的位置。
vim 查询命令用法

在vim中,有多种查询命令可以用来查找文本,其中比较常用的有以下几种:1. "/pattern":这个命令可以用来在当前光标所在行中查找匹配的文本,其中"pattern"表示要查找的文本。
可以使用正则表达式来进行精确匹配。
例如,"/hello"可以查找当前光标所在行中包含字符串"hello"的文本。
2. "?pattern":这个命令与上面的命令类似,不同之处在于它是一个反向查找命令,可以在当前光标所在行之前查找匹配的文本。
例如,"?hello"可以查找当前光标所在行之前包含字符串"hello"的文本。
3. "/\p{L}":这个命令可以用来查找任何一个字符集,其中"\p{L}"表示任意一个字母字符。
例如,"/\p{L}"可以查找当前光标所在行中的任何一个字母。
4. "/\w":这个命令可以用来查找任何一个单词字符,其中"\w"表示任何一个单词字符,即字母、数字和下划线。
例如,"/\w"可以查找当前光标所在行中的任何一个单词字符。
5. "/\d":这个命令可以用来查找任何一个数字字符,其中"\d"表示任何一个数字字符。
例如,"/\d"可以查找当前光标所在行中的任何一个数字字符。
除了上述命令之外,还有一些其他的查询命令可以用来查找文本,例如"/\<pattern>"、"/=\<pattern>"、"/\zs\<pattern>"等。
具体使用方法可以参考vim的官方文档或者相关的教程。
vi编辑器常用的命令及快捷键

ttext 在当前行向前查找text,并将光标定位在text的第一个字符
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
vi的状态
选项 作用
:.= 打印当前行的行号
:= 打印文件中的行数
^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
x 删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
X 删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
0或| 移到当前行的第一列
n| 移到当前行的第n列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+或return 移到下一行的第一个字符
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感
:s/oldtext/newtext 用newtext替换oldtext
:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
在vi中复制文本
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
VIM命令大全

set nu
#行号
set ai
#设置自动缩进
syntax on #高亮
syntax off #关闭语法功能
Ctrl+o:临时变成命令模式(一次而已)
ctrl +n 自动补全 ctrl + p 也一样
启动 vim
在命令行窗口中输入以下命令即可 vim 直接启动 vim vim filename 打开 vim 并创建名为 filename 的文件
Vim 中自动补全括号,引号设置
vim ~/.vimrc 进入配置文件 在空白文件中加入下面语句保存,退出即可 inoremap ( ()<Esc>i inoremap [ []<Esc>i inoremap { {<CR>}<Esc>O autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR> inoremap ) <c-r>=ClosePair(')')<CR> inoremap ] <c-r>=ClosePair(']')<CR> inoremap } <c-r>=CloseBracket()<CR> inoremap " <c-r>=QuoteDelim('"')<CR>
s/old/new/ 用 old 替换 new,替换当前行的第一个匹配
s/old/new/g 用 old 替换 new,替换当前行的所有匹配
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vim基本命令.txt i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行其它命令使用4.:r filename#读入一个文件内容,并写入到当前编辑器中5.:w newfilename#将该编辑器中的内容写入到一个新文件中6.:w#在编辑的过程中保存文件,相当于word中的ctrl+s7.:! command暂时离开 vi 到指令列模式下执行 command 的显示结果!例如:!ls#在编辑过程中执行shell命令ls8.:sh#进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑在shell命令下,执行ctral+l完成清屏9.:wq#保存文件并退出10.ZZ#保存文件并退出,同上一个命令,注意大写11.:q!#强制退出,不保存12.:set number或者:set nu#使编辑中的文件显示行号13.:set nonumber或者:set nonu#与上一条命令相反,不显示行号14.:help i#查看插入命令帮助15.u#撤消上一步操作16./Fedora#查找Fedora字符17.:s /Fedora/Redhat#将Fedora字符替换为Redhat(只替换在光标所在的行)18.dw#删除单词dd#删除行19.o#打开空白一行20.vim + filename#进行文件最后一行进行编辑21.vim +n filename#进入文件第n行进行编辑22.:1,.s/redhat/fedora#.号表示当前行,即光标所在行#将第1行到当前行(.)第一次出现的redhat字符代替为fedora 23.:1,.s/redhat/fedora/g#将第1行到当前行(.)所有出现的redhat字符代替为fedora,g 全局标志24.:1,$s/redhat/fedora/g#$表示最后一行#将第1行到最后一行所有出现的redhat字符代替为fedora 25.:%s/redhat/fedora/g#同上一个命令26.:%s/\/fedora/g#将第1行到最后一行所有出现的redhat字代替为fedora#字,而不是字符27.:f#显示文件内容,状态等等#同ctrl+g命令28.:e!#当前文件,返回到上次保存:e file#切换编辑文件29.:n#当编辑时有多个文件(比如vim file1 file2)时切换到下一个文件,与:e file 结合使用VIM命令大全光标控制命令命令光标移动h 向左移一个字符j 向下移一行k 向上移一行l 向右移一个字符G 移到文件的最后一行w 移到下一个字的开头W 移到下一个字的开头,忽略标点符号b 移到前一个字的开头B 移到前一个字的开头,忽略标点符号L 移到屏幕的最后一行M 移到屏幕的中间一行H 移到屏幕的第一行e 移到下一个字的结尾E 移到下一个字的结尾,忽略标点符号( 移到句子的开头) 移到句子的结尾{ 移到段落的开头} 移到下一个段落的开头0(数字), | 移到当前行的第一列^ 移到当前行的第一个非空字符$ 移到当前行的最后一个字符+, Enter 移到下一行的第一个字符- 移到前一行的第一个非空字符在 vi 中添加文本命令插入动作a 在光标后插入文本A 在当前行插入文本i 在光标前插入文本I 在当前行前插入文本o 在当前行的下边插入新行O 在当前行的上边插入新行s 删除光标所在处字符,并进入插入模式S 删除光标所在的行,并进入插入模式:r file 读入文件 file 内容,并插在当前行后:nr file 读入文件 file 内容,并插在第 n 行后Esc 回到命令模式^v char 插入时忽略 char 的指定意义,这是为了插入特殊字符在 vi 中删除文本命令删除操作x 删除光标处的字符dw 删至下一个字的开头dG 删除行,直到文件结束dd 删除整行db 删除光标前面的字:n,md 从第 m 行开始往前删除 n 行d, d$ 从光标处删除到行尾^h, backspace 插入时,删除前面的字符^w 插入时,删除前面的字修改 vi 文本每个命令前面的数字表示该命令重复的次数命令替换操作rchar 用 char 替换当前字符R text escape 用 text 替换当前字符直到按下 Esc 键stext escape 用 text 代替当前字符S 或 cctext escape 用 text 代替整行cwtext escape 将当前字改为 textCtext escape 将当前行余下的改为 textcG escape 修改至文件的末尾ccursor_cmd text escape 从当前位置处到光标命令位置处都改为 text 在 vi 中查找与替换命令查找与替换操作/text 在文件中向前查找 text?text 在文件中向后查找 textn 在同一方向重复查找N 在相反方向重复查找ftext 在当前行向前查找 textFtext 在当前行向后查找 textttext 在当前行向前查找 text,并将光标定位在 text 的第一个字符Ttext 在当前行向后查找 text,并将光标定位在 text 的第一个字符:set ic 查找时忽略大小写:set noic 查找时对大小写敏感:ranges/pat1/pat2/g 用 newtext 替换 oldtext:m,ns/oldtext/newtext 在 m 行通过 n,用 newtext 替换 oldtext& 重复最后的 :s 命令:g/text1/s/text2/text3 查找包含 text1 的行,用 text3 替换 text2:g/text/command 在所有包含 text 的行运行 command 所表示的命令:v/text/command 在所有不包含 text 的行运行 command 所表示的命令在 vi 中复制文本命令复制操作yy 将当前行的内容放入临时缓冲区nyy 将 n 行的内容放入临时缓冲区p 将临时缓冲区中的文本放入光标后P 将临时缓冲区中的文本放入光标前"(a-z)nyy 复制 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行"(a-z)ndd 删除 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前在 vi 中撤消与重复命令撤消操作u 撤消最后一次修改U 撤消当前行的所有修改. 重复最后一次修改, 以相反的方向重复前面的 f、F、t 或 T 查找命令; 重复前面的 f、F、t 或 T 查找命令"np 取回最后第 n 次的删除(缓冲区中存有一定次数的删除内容,一般为 9)n 重复前面的 / 或 ? 查找命令N 以相反方向重复前面的 / 或 ? 命令保存文本和退出 vi命令保存和/或退出操作:w 保存文件但不退出 vi:w file 将修改保存在 file 中但不退出 vi:wq 或 ZZ 或 :x 保存文件并退出 vi:q! 不保存文件,退出 vi:e! 放弃所有修改,从上次保存文件开始再编辑vi 中的选项选项作用:set all 打印所有选项:set nooption 关闭 option 选项:set nu 每行前打印行号:set showmode 显示是输入模式还是替换模式:set autoindent 继承前一行的缩进方式,特别适用于多行注释:set smartindent 为C程序提供自动缩进:set list 显示制表符(^I)和行尾符号:set ts=8 为文本输入设置 tab stops:set window=n 设置文本窗口显示 n 行:set number 显示行数:set nonumber 取消显示行数vi 的状态选项作用:.= 打印当前行的行号:= 打印文件中的行数ctrl+g 显示文件名、当前的行号、文件的总行数和文件位置的百分比:l 使用字母 "l" 来显示许多的特殊字符,如制表符和换行符在文本中定位段落和放置标记选项作用{ 在第一列插入 { 来定义一个段落[[ 回到段落的开头处]] 向前移到下一个段落的开头处m(a-z) 用一个字母来标记当前位置,如用 mz 表示标记 z'(a-z) 将光标移动到指定的标记,如用 'z 表示移动到 z在 vi 中连接行选项作用J 将下一行连接到当前行的末尾nJ 连接后面 n 行光标放置与屏幕调整选项作用H 将光标移动到屏幕的顶行nH 将光标移动到屏幕顶行下的第 n 行M 将光标移动到屏幕的中间L 将光标移动到屏幕的底行nL 将光标移动到屏幕底行上的第 n 行^e(ctrl+e) 将屏幕上滚一行ctrl+y 将屏幕下滚一行ctrl+u 将屏幕上滚半页ctrl+d 将屏幕下滚半页ctrl+b 将屏幕上滚一页ctrl+f 将屏幕下滚一页ctrl+l 重绘屏幕z-return 将当前行置为屏幕的顶行nz-return 将当前行下的第 n 行置为屏幕的顶行z. 将当前行置为屏幕的中央nz. 将当前行上的第 n 行置为屏幕的中央z- 将当前行置为屏幕的底行nz- 将当前行上的第 n 行置为屏幕的底行vi 中的 shell 转义命令选项作用:!command 执行 shell 的 command 命令,如 :!ls:!! 执行前一个 shell 命令:r!command 读取 command 命令的输入并插入,如 :r!ls 会先执行 ls,然后读入内容:w!command 将当前已编辑文件作为 command 命令的标准输入并执行 command 命令,如 :w!grep all:cd directory 将当前工作目录更改为 directory 所表示的目录:sh 将启动一个子 shell,使用 ^d(ctrl+d) 返回 vi:so file 在 shell 程序 file 中读入和执行命令vi 中的宏与缩写(避免使用控制键和符号,不要使用字符 K、V、g、q、v、*、= 和功能键)选项作用:map key command_seq 定义一个键来运行 command_seq,如 :map e ea,无论什么时候都可以 e 移到一个字的末尾来追加文本:map 在状态行显示所有已定义的宏:umap key 删除该键的宏:ab string1 string2 定义一个缩写,使得当插入 string1 时,用 string2 替换 string1。