Linux 指令详解 vi 交互式文本编辑器

vi是’Visual interface’的简称,是Linux下标配的一个纯字符界面的交互式文本编辑器。可以执行输出、删除、查找、替换、块操作等众多文本操作,用户还可以根据自己的需要对其进行定制。其所有操作都需要通过键盘指令来完成,如果可以熟练应用,将会是十分的方便——————————————————————–工作模式:vi有三种工作模式,,Command mode,Insert mode,Last line modeCommand mode : 命令模式。(默认模式) 进入到vi编辑器时,默认在此模式下 在此模式下可以控制屏幕光标的移动,字符或行的复制粘贴删除在此模式下输入的命令是不可见的Insert mode : 插入模式。 只有在此模式下才能够输入文字一般在此模式下添加删除修改文本内容Last line mode : 末行模式。(特殊的命令模式) 在此模式下的操作需要回车才能执行 在此模式下可以保存文件退出vi在此模式下可以设置环境变量在此模式下可以进行查找替换 此模式执行完毕后自动回到命令模式vi可以简化成两个模式,Command 和Insert mode。Last line可以算是特殊的Command mode——————————————————————–进入vi:1:# vi filename : 打开(或新建)文件,将光标置于第一行2:# vi +n filename : 打开文件,将光标置于第n行3:# vi + filename : 打开文件,并将光标置于最后一行4:# vi +/word1 filename : 打开文件,并将光标置于第一个word15:# vi -r filename : 恢复filename(若上次使用vi编辑时发生系统崩溃)6:# vi filename1 filename2 filename3 : 打开多个文件,依次编辑Ps:1:如果filename存在,则打开filename。如果不存在,则新建filename(保存时创建)2:每行前显示波浪符号的表示该行为空行3:若不对文件的修改进行保存,则不改变原文件的内容4:多个用户可以同时使用vi编辑一个文件,最后保存的版本将被保存——————————————————————–三种模式切换:命令模式 到 插入模式 : ‘i’ ‘a’ ‘c’ ‘o’ ‘r’ ‘s’等插入模式 到 命令模式 : ‘Esc’命令模式 到 末行模式 : ‘:’ ‘/’ ‘?’末行模式 到 命令模式 : ‘Esc’插入模式到末行模式得先切换到命令模式——————————————————————–帮助:F1:help查看版本:# vi –version——————————————————————–屏幕翻页:Ctrl + f: 屏幕向'前'移动一页(常用)Ctrl + b: 屏幕向'后'移动一页(常用)Ctrl + d: 屏幕向'前'移动半页Ctrl + u: 屏幕向'后'移动半页Ctrl + e: 屏幕向前滚一行Ctrl + y: 屏幕项后滚一行——————————————————————–光标移动:Ctrl+G : 显示光标所在位置的行数和列数0: 光标移动到当前行首(数字零)^: 移到该行第一个非空白的字符$: 光标移动到当前行尾(常用)n$: 光标移至第n行尾(: 到句子的开头): 到句子的末尾{: 到段落的开头}: 到段落的末尾G: 光标移至文章的最后一行(常用)nG: 光标移至第n行首 gg: 移动文章的开头h 或 向左方向键: 光标向左移动一个字符l 或 向右方向键: 光标向右移动一个字符k 或 向上方向键: 光标向上移动一个字符j 或 向下方向键: 光标向下移动一个字符Ctrl+p: 光标上移一行(同k)Ctrl+n: 光标下移一行(同j)Enter: 光标下移一行n<Enter>: 光标向下移动n行space: 光标右移一个字符n<space>: 光标向右移动n个字符Backspace: 光标左移一个字符n<Backspace>: 光标向左移动n个字符b: 光标左移到上个词的开头B: 光标左移到上个空格分隔的词开头w: 光标右移到下个词的开头W: 光标右移到下个空格分隔的词开头e: 光标右移到下个词的结尾E: 光标右移到下个空格分隔的词结尾H: 光标移至当前屏幕顶行nH: 光标移动到屏幕的第n行L: 光标移至当前屏屏幕最后行内容超过一个屏幕时,光标移至屏幕上的最底行内容不足一个屏幕时,光标移至文件的最后一行nL: 光标移动到屏幕的倒数第n行M: 光标移至当前屏幕中间行内容超过一个屏幕时,光标移至屏幕的中间行内容不足一个屏幕时,光标移至文本的中间行dH: 删除从光标所在行至屏幕首行的全部内容dM: 删除从光标所在行至屏幕(文件)中间行的全部内容dL: 删除从光标所在行至屏幕最后一行的全部内容+: 光标移动到下一行的第一个非空白字符n+: 光标下移n行 -: 光标移动到上一行的第一个非空白字符n-: 光标上移n行z.: 把当前行作为屏幕的中间行v: 选取文本内容——————————————————————–插入文本a: 在当前光标后插入字符A: 在当前行末后插入字符i: 在当前光标前插入字符I: 在当前行首前插入字符(第一个非空白字符前)o: 在当前行后面插入一空行,从光标所在处的下一行行首开始输入字符O: 在当前行前面插入一空行,从光标所在处的上一行行首开始输入字符r: 替换当前光标所在字符(替换后即结束)R: 替换当前字符及后面的字符,直至按ESC键结束替换 J: 把光标所在行的下一行追加到本行行尾:r filename 将filename中的内容添加到当前光标的下一行:r!command 将指令shell命令command的输出结果添加到当前行xp: 交换光标位置的字符和它右边的字符~: 改变光标所在出字符的大小写——————————————————————–删除:dd: 删除光标所在行ndd: 删除从光标所在行开始的n行 D: 删除光标所在行光标后面的内容x: 删除光标所在的字符X: 删除光标前面的字符nx: 删除从光标位置开始的n个字符nX: 删除光标之前的n个字符dw: 删除光标所在的单词(实际为从光标位置开始到单词结束)(包含空格)de: 删除光标到单词尾所有字符(不包含空格)d0: 删除光标所在行光标之前的所有内容d^: 删除当前字符到行首的所有字符(同d0)d$: 删除光标所在行光标到行尾的所有内容d1G: 删除光标所在行到第一行的所有数据dG: 删除光标所在行到最后一行的所有数据dfa: 删除从光标到第一个a字符之间的内容(包括a):nd: 删除第n行:n1,n2d: 将第n1行到第n2行之间的内容删除s: 删除光标所处位置的字符,然后在后面追加任意字符S: 删除当前行,然后在追加任意字符nS:删除n行,然后在追加任意字符cw: 删除光标到所在单词尾部的字符ce: 删除光标到所在单词尾部的字符(和cw一样)c$: 删除光标到当前行行尾的字符C: 删除光标到当前行行尾的字符(和c$一样)c^: 删除光标之前到行首的字符(不包括光标上的字符)cc: 删除光标所在行(与dd不同的是cc进入insert状态)cb: 删除光标所在单词的光标前的字符——————————————————————–撤销与重复u: 撤销上一个操作(可以执行多次)U: 撤销对当前行的所有操作.: 重复上一个操作Ctrl + R : 还原被撤销的操作——————————————————————–查找:/word : 从光标开始向后查找word(若遇到文件尾,则从头再开始)?word : 从光标开始向前查找word(若遇到文件头,则从尾再开始)n: 在同一方向执行上次定义的查找N: 在相反方向执行上次定义的查找/: 向后重复查找上次定义的查找:set ic : 查找时不区分大小写:set noic : 查找时区分大小写——————————————————————–替换::s/word1/word2/c将word1换成word2,并在替换前让用户进行确认:s/word1/word2/g将当前行中所有word1换成word2:n1,n2s/word1/word2/g 将第n1行到第n2行中所有word1换成word2:1,$s/word1/word2/g将第一行到最后一行行中所有word1换成word2:g/word1/s//word2/g将文件中所有word1换成word2:%s/word1/word2/g 将文件中所有word1换成word2:n1,n2s/^/word1/g 将第n1行到第n2行所有开头加入word1:%s/ *$//将所有行结尾的空格删除(超级常用):%s#/dodo/1#/dodo/2更换隔离符不加g,只对搜索字符串的第一次出现进行替换g在命令最后,对搜索字符串所在行的每次出现进行替换g在命令开头,对文中所有的行进行替换——————————————————————–保存退出::w : 保存当前文件:q : 直接退出(对文件没有修改的前提):wq : 保存并退出:x : 保存并退出:q! : 不保存直接退出(不想保存文件的修改):w! : 强制保存该文件(对于只读文件)SHIFT+zz : 保存并退出(其实就是ZZ):w filename将修改后的文件保存到filename中(若filename存在则会报错):n1,n2w filename 将第n1行到第n2行的内容保存filename文件中——————————————————————–隐藏显示行号::set nu 显示行号:set nonu 取消显示行号Ctrl+G : 列出光标所在行的行号——————————————————————–复制粘贴:yy: 复制光标所在行(常用)nyy:复制从光标所在行开始向下n行y1G:复制从光标所在行到第一行的所有行yG: 复制从光标所在行到最后一行的所有行yw: 复制单词从光标所在位置开始到单词尾字符y$: 复制从光标开始到行尾的内容y^: 复制从光标开始到行首的内容y0: 复制从光标开始到行首的内容(同y^)p: 粘贴在当前行的下一行(小写)P: 粘贴在当前行的上一行(大写)注:所有’y’的复制都必须与’p’结合才能完成复制与粘贴:n1,n2 co n3 将n1~n2的内容复制到第n3行。:n1,n2 co $ 将n1~n2行的内容复制到最后一行。:n1,n2 mo $ 将n1~n2行的内容移动到最后一行。buffer使用(要注意buffer名字不要和指令名冲突)vi中有buffer功能,可将数据存在buffer中cyy: 复制当前行放入buffer c中cp: 粘贴放在buffer a中的内容

做对的事情比把事情做对重要。

Linux 指令详解 vi 交互式文本编辑器

相关文章:

你感兴趣的文章:

标签云: