ex命令

    技术2022-05-11  41

    ex命令 ex 是一个行编辑器。如同对文件调用vi编辑器一样,也可以对文件调用ex行编辑器。 $ which ex /bin/ex 在RHELV4U2 中的路径 $ex practice "practice" 6 lines, 320 characters : 显示该文件的行数,多少个字符。停止在:冒号命令提示符。 :1p With a screen editor you can : p 打印到屏幕 1p 打印第1行到屏幕。实际上可以去掉p,因为行号本身就等价于打印该行的命令。 :1,3 With a screen editor you can scroll the page, move the cursor, delete lines, insert characters, and more, : 用逗号隔开,中间空格可有可无。打印1到3行。 如果没有行号就认为作用于当前行。 :1 With a screen editor you can :/screen/line/ With a line editor you can 命令修改后行将会重新显示。 :1s/screen/line/  With a line editor you can 作用是相同的。只是在一个命令中完成。 在vi的冒号提示符下输入:6。也可以跳到第6行。这跟vi在编辑模式中使用6G作用是相同的。在ex 中的冒号命令提示符后输入vi,可以调用vi编辑器。在vi中输入Q可以调用ex。                        使用ex进行编辑 许多ex命令完成的编辑操作在vi中都有更简单的等价命令可以完成。我们可以用dw和dd来删除一个单词和一行。但在ex命令中可以使用单个命令对 大的文本块进行修改,因此在想对 许多行进行修改时,ex命令会更有用。 记住在vi中每个ex命令前必须有:冒号。           delete          d         删除行           move            m         移动行           copy            co        复制行                           t         复制行 行地址 对于ex编辑器命令,必须给出ex所要编辑的行。对于ex的move和copy必须给出ex移动或 复制文本的目标位置。             1   使用明确的行号           2   使用能帮助你指定相对于文件中当前位置的行号的符号           3   使用搜索模式作为标识所要编辑的行的地址 定义行的范围 你可以使用行号明确地定义一行或行的范围。使用明确数字的地址称为绝对行地址。 example :3,18d       删除3到18行 :160,224m23  将160到224行间的内容移动到23行的后面 :23,29co100  将23到29行间的内容复制到100行的后面 可以使用:set number 简写为:set nu 显示行号。显示行号在写文件的时候并不能保存,如果打印文件,也不能打印它们。行号会一直显示直到退出vi会话或取消set选项 :set nonumber 或简写为 :set nonu 。 注:本次设置了:set number 在下次打开vi编辑器时设置将会丢失。需要修改vi的配置文件才可以在默认情况下显示行号。:1,10#  #可以暂时地显示部分行的行号。但只是显示,无法在显示上作业。CTRL+G 可以显示当前行的行号。在:set ruler 时显示的信息比:set noruler的要少很多。CTRL+G是一个vi快捷键。 :=  显示总行数 :.= 显示当前行的行号 :/pattern/= 显示一个与模式相匹配的行的行号 行地址符 表示行地址的符号叫行地址符。点(.)表示当前行,$表示文件的最后一行。%表示文件中的每一行,它等同与1,$的组合。这些符号也可以与绝对行地址组合使用。 example :.,$d      删除当前行到最后一行的文本 :20,.m$    将20行到当前行的文本移动到最后一行后面 :%d        删除说有的行 :%t$       将所有的文本复制一份拷贝到文本的末尾 除了绝对地址以外,也可以指定一个相对当前行的地址。用符号+和-就像数字运算符一样,当将其方置在数字前面时,这些符号就会加上或减去跟在它们后面的数值。 example :.,.+20d   删除当前行开始下面的20行 :226,$m.-2 将226行到文件末尾的文本移动到当前行的上2行的下面 :.,+20#   显示当前行和下面20行的行号 实际上,由于当前行是假定的开始位置,因此你在使用+或-时不需要输入圆点(.)。 如果在+和-的后面没有跟数字,它们就分别相当于+1和-1. 注意不能把加号跟减号与其后面的数字分开。否则会发生歧意。 ++ 代表 当前行+1+1 就是当前行+2 --代表 当前行-1-1 就是当前行-2 数字0代表文件开头(虚构的0行).0等同与1-。这些命令允许移动或复制行到文件的真正开始位置,即现有文本第一行的前面 example :-,+t0   将当前行的上一行和下一行加上当前行复制到文本的开头部分 搜索模式 example :/pattern/d  删除一个包含pattern的行 :/pattern/+d  删除一个包含pattern的行的下面的行 :/pattern1/,/pattern2/d 删除从第一个包含pattern1的行到第一个包含pattern2的行之间的文本。 :.,/pattern/m23 移动当前行到第一个匹配pattern的行之间的行到23行的后面 注意 模式的前面和后面要用斜杆来定界vi中用模式匹配进行删除操作与在ex中使用模式匹配删除操作的不同点exampled/while 删除从当前光标到光标后第一个匹配while字符之间的所有字符。但是除这些字符以外在同一行上的字符会被保留:.,/while/d  ex会删除指定行的全部。只要是在匹配间的行都会被删除。同一行上的所有字符也会被删除重新定义当前行的位置example:100,+5 pFirst address exceeds second  第一地址在第二地址以后出现这种情况的原因是+5是当前光标所在位置+5的行的行号。这个值在比100要小。比如当前光标在第1行。那+5就是第6行。100,6就是错误的。我们需要的是使命令把第100行当作是"当前行"的方法,即使光标位于第一行时也时如此。:100;+5 p当你使用;好时,就会将第一个行地址当成当前行而重新计算。:/pattern/;+10 p打印第一个匹配/pattern/的行跟它下面10行的内容你可以使用空格来分隔ex命令中的不同元素,这样可以更容易阅读命令。但是不能在模式里把空格作为分隔符或在替换命令的结尾使用空格。                        全局搜索在vi中使用/ 来搜索文件中的字符模板,ex也有全局命令g,可以让你搜索模板并显示找出的所有包含该模式的行。命令:g!的作用与:g相反,使用:g! 的作用与:g相反,使用:g!可以搜索不包含模板的行。可以对文件中的所有行使用全局命令,也可以使用行地址把全局搜索限制在指定的行或行范围。:g/pattern      寻找移动到模板最后出现的位置:g/pattern/p    寻找并显示文件中所有符合模板的行:g!/pattern/nu  寻找并显示所有不包含模板的行,同时显示这些行的行号:60,124g/pattern/p  寻找并显示60行到124行之间所有符合模板的行                        组合ex命令在ex中可以使用竖直条(|)。它允许用户把多个命令组合在同一个ex提示符下。在使用|时,要注意所指定的行地址。如果一个命令影响到文件中的顺序,那么下一个命令将使用新的行位置进行工作。注 :| shell中的管线命令,在这里起到的作用跟shell中的;作用很象:1,3d | s/thier/their/把第一行到第三行删除。然后在当前行进行替换:1 , 5 m 10 | g/pattern/nu把第一行和第五行之间的内容移动到第10行的后面,然后显示所有包含模板的行并列出行号注:在命令中使用空格会使命令更容易阅读。但要注意加的位置不能产生歧异                        保存和退出文件ZZ 在vi中退出并保存文件 zz 将当前行移动到屏幕中央可以使用ex中的命令更好的控制保存与退出。:w 把缓冲区的内容写到磁盘中但不退出。可以在编辑期间使用:w保护编辑操作以避免系统瘫痪或重大的编辑错误。:q 退出编辑器 如果对文件做了修改,在退出时会被阻拦并跳出提示。只有在没有做任何修改的情况下才能顺利的用:q退出:wq 保存并退出,即使文件没有修改,写操作也会无条件的执行:x  写文件并退出,只有修改了文件写操作也能进行:wq 和 :x 虽然都是写文件并退出。但是:wq是我条件的,而:x是在修改过的前提下No write since last change. 没有写入最后一个改变:w! 强行保存 可以在只读方式下写入,但必须具有写入的权限:q! 强行退出 不做任何修改 缓冲区内容被删除:w practice.new我们可以将当前缓冲区中的内容保存到一个新的文件中:230,$w newfile也可以选择缓冲区中的部分文本保存到一个新的文件中:340,$w >>newfile可以将缓冲区的部分内容追加到一个文件的尾部。很想shell中的输出重定向符                     把文件复制到另一个文件中:read filename       缩写为  :r filename在当前文件中读入一个新的文件,默认插入在当前光标的下一行:185r filename  在当前文本的185行插入一个新的文件:$r filename在文件尾部插入一个新的文件:0r filename在文件的首部插入一个新的文件:/pattern/r filename在匹配模板的下一行插入新的文件                      编辑多个文件编辑多个文件不用频繁的关闭和开启vi。并且可以保留已指定的缩写和命令序列,以及复制缓冲区,这样可以在文件间复制文本。vi file1 file2首先屏幕上显示的是file1中的内容。对file1编辑结束后,:w 保存file1,:n 命令调用下一个文件file2:args 缩写:ar 列出在命令行上指定的文件,当前文件使用方括号括起来:rewind 缩写 :rew 命令把当前文件重新设置为命令行上指定的第一个文件                       调用新的文件不用在开始就用vi调用多个文件。可以在ex中用:e 命令在任何时候切换到另一个文件:e filename 调用了新的文件后vi把两个文件名记为当前文件名和备份文件名,也可以通过使用符号%和#来表示。:e # 返回上一个编辑的文件          :r # 读取上一个编辑的文件:e! # 放弃对当前文本的修改,返回到上一个文件:n! # 放弃对当前文件的修改,返回到上一个文件:e!   放弃对当前文件的修改重新载入当前文件上次保存过的版本:w %.new  保存当前修改到当前文件名.new的一个文件中去如果没有首先保存当前文件,并且没有在:e和:n后面添加!来命令vi变换当前文件,那么将不允许使用上述命令来文件之间切换。在vi中也可以使用CTRL+^ 在文件间来回切换。这个命令与:e #相同。但是对当前文件也要保存或者放弃保存,否则vi将不允许切换到前面的文件中去。                    在文件之间进行编辑当为复制缓冲区指定了单字母名时,就拥有了把文本从一个文件移动到另一个文件的便捷方法。当使用:e命令把一个新的文件加载到vi缓冲区时,将不会清除命名的缓冲区。因此,通过从一个文件中复制和删除文本,使用:e调用新的文件,然后把命名缓冲区展提到新的文件中,这样就可以在文件间传输文本了。"f4yy  复制四行到缓冲区f"fp    把缓冲区中的文本粘贴到当前光标的下面" 是什么??没有讲啊 另一个方法 :ya 复制 :pu 粘贴example:160,224ya a 讲160行到224行之间的文本复制到缓冲区a中,接下来可以使用:e命令移动到想要放置这些行的文件:pu a  把缓冲区a中的内容粘贴到当前行的后面

    最新回复(0)