Linux中的nano、vim 和 sed

一、nano: linux中一款简单易用的全屏幕编辑器。
    1、编辑文件的方法:nano 文件名;(也可以不跟文件名,编辑完成后,保存退出时给出文件名。如果文件名为:/etc/a/b/c.txt,并且/etc目录下面没有/a和/b目录,则可以打开文件进行编辑,但是无法保存。)
    2、nano的基本操作:
1)保存:ctrl+o+enter键;(如果在未做好修改之前,按下ctrl+o键,可以在提醒保存文件名的时候,按下ctrl+c,不保存继续编辑该文件。)
2)退出:ctrl+x。
3)剪切:ctrl+k。(如果要剪切连续的多行,则连续按ctrl+k;如果需要精确剪切的话,则使用ctrl + 6+↑或者↓或者←或者→键,选择需要剪切的内容,则被选中的内容会反白,然后按下ctrl+k。如果要取消刚才的选择的话,则再次按下ctrl+6键,则反白内容消失。)
4)粘贴:ctrl+u。(也可以点击右键选择“paste”)
5)搜索:ctrl+w。(只能搜索到匹配字符的第一个。)
6)插入行:按下enter键。
7)移动光标和换行:↑↓←→键。
8)复制:用鼠标拖动需要复制的行,点击右键选择“copy”。
9)上翻页:ctrl+y。
10)下翻页:ctrl+v。
11)查看帮助文档:ctrl+g。(在帮助文档里面,^表示ctrl键,M表示alt键。)
 
二、vim:支持语法高亮和各种各样的操作命令。
     1、vi 的提升版纯文本模式化编辑器。
     2、Vim常用的模式:
         编辑模式(命令模式):
         输入模式(插入模式):
         末行模式:
     3、Vim中模式的转换:
编辑——>输入模式:按下 i   o a s  c  I O A S C (掌握住一两个即可)
         i :在当前光标前插入字符;
         I :从行首插入字符;
         o : 切换到光标所在行的下方插入;
         O :切换到光标所在行的上方插入;
         a :在当前光标所在处的后面插入;
         A :在当前光标所在行的行尾插入;
         s :删除光标所在处字符并进行插入;
         S :删除光标所在行并进行插入;
         c :双击c 删除光标所在行并进行插入;(可以跟数字结合使用)
         C :删除光标所在处以及该行后面的字符并进行插入; 
         输入模式——>编辑模式:按ESC键。                
         编辑模式——>末行模式:输入“:”。
         末行模式——>编辑模式:按下ESC键或者双击ESC键;
         末行模式——>输入模式: 通过ESC键到达编辑模式,再通过编辑模式到达 输入模式。(输入模式——>末行模式同理)
      4、vim +n 文件名:打开文件,使光标直接处于某一行内;(n表示行号)
      5、vim [options] 文件1   文件2    文件3…… 一次打开多个文件; 
            :next ,表示切换到第二个文件;
            :first ,表示切换到第一个文件;
            :last ,表示切换到最后一个文件;
            :prev ,表示切换到前面一个文件;
            :qall ,表示所有的文件都退出了;
            :wqall ,表示所有的文件都保存退出了;
      6、vim +/PATTERN/ 文件名:打开文件,使光标处在该匹配字符串的行首;(/PATTERN/表示匹配的字符串);
      7、保存退出:在末行模式下输入:wq;或者ZZ
      8、如果同时退出多个文件的话:在末行模式下输入:wqall;
      9、强行保存退出:wq!
      10、不保存退出:q
      11、不保存强行退出:q!
      13、光标移动:#h键;向左侧移动;(#表示数值,如5h,表示向左侧移动5个字符)
                    #L键:向右移动;
                    #J键:向下移动;
                    #K键:向上移动;
      14、词间跳转:w:跳到下一个单词的词首;
                    e:向后跳,跳到单词的词尾;
                    b:向前跳,跳到单词的词首;
      15、句间跳转:( 向上跳一句; )向下跳一句;(可以跟数字结合使用)
      16、段间跳转: { 向上跳一段; } 向下跳一段;(可以跟数字结合使用)
      17、0或者^ :跳到当前所在行的行首;(0表示跳到绝对行首,^表示跳到第一个非空白字符处)
      18、$:跳到当前所在行的行尾;
      19、G:跳转到文件尾部;但当跟数字结合时,表示跳转到第几行。例如:10G,表示跳转到第十行;
      20、1G: 跳到文件的首部;
      21、在末行模式下实现行间跳转:例如跳到19行,则:19,然后按enter键。
      22、ctrl+f:向后翻一屏;
          Ctrl+b:向前翻一屏;
          Ctrl+d:向后翻半屏;
          Ctrl+u:向前翻半屏;
      23、x:删除光标所在处的字符;3x:删除光标所在处的字符及其后两个字符;X:删除光标前面的内容;
      24、d:删除行;5d,向后删除5行;dw:删除一个字符;3dw:向后删除3个单词;
      25、r:在光标所在处替换。例如:r5:将光标处的字符替换为5。5rA:将光标所在处及其后四个字符都换成A;
      26、R:进入到替换模式。
      27、u:撤销最近一次的编辑操作;(默认可以撤销50次操作,该值是可以调整的);
      28、ctrl+r:撤销刚才的撤销操作;
      29、重做: . 重复执行上一条命令;
      30、y:复制,y$:复制当前光标到行尾的内容;
          yy : 复制该行内容;
         #yy:复制n行内容;
      31、当复制的内容为整行时,小p:粘贴,在当前光标所在行的下方粘贴;
          当复制的内容为整行时,大P:在当前光标所在行的上方粘贴;
     当复制的内容非整行时,小p表示在光标所在处的后方粘贴,大p表示在光标所在处的前方粘贴;
      32、剪切:d 和 p 配合使用;
      33、可视化模式:v:按字符选取;V:按行选取;可与p 、y d 等配合使用;
      34、/ 或者 ? 后跟字符或者字符串:例如:/word 或者 ?word;n或者N:查看下一个查找到的匹配字符串;
      35、s:搜索并替换;该命令要在末行模式下执行,格式为:
:ADDR1,ADDR2s/from/to/flags (黄色的表示分隔符,可以使用特殊字符进行替换,例如使用@ 或者#等) 
(flags:g 表示如果某行有多个都被匹配到,则多个都被替换掉;i 表示不区分大小写)
(ADDR1,ADDR2: m,n:表示第m行到第n行;1,$:表示从第一行到最后一行; . ,$:表示从光标所在行到最后一行; . ,+8:表示从当前行到后面第8行; 1,$-1:表示从第一行到倒数第二行; %s :表示全文搜索;)
(/from/的内容可以使用正则表达式匹配,/to/的内容不能使用正则表达式匹配,但可以使用\1来引用小括号的内容)。
      36、ctrl+w, s键:水平分屏;
          Ctrl+w, v键:垂直分屏;
          Ctrl+w,↑↓←→:在分屏间进行切换;
          Ctrl+w,t:切换到第一个分屏;
          Ctrl+w,b:切换到最后一个分屏;
          Ctrl+w,l:切换到左边的分屏;
          Ctrl+w,r:切换到右边的分屏;
          :q ,表示退出当前分屏;:qall,表示退出所有分屏;
          Vim –o 文件1 文件2 文件3:表示水平分割多个文件;
          Vim –O 文件1 文件2 文件3:表示垂直分割多个文件;
      37、显示行号: :set nu(如果想要其永远生效,则需要编辑vim的配置文件,在里面加上该行命令。)
          取消行号: :set nonu
      38vim的配置文件:全局的:/etc/vimrc ,该配置文件中,双引号表示注释的内容。
                          个人的:~/vimrc
      39、自动缩进: :set ai(autoindent) 取消自动缩进: :set noai
      40、语法高亮: syntax on|off 
          搜索高亮: set hlsearch   
          取消搜索高亮:set nohlsearch
 
三、sed:(stream editor)行编辑器。
   特点:1、非交互式编辑器;
         2、没有破坏性,不修改原文件,除非使用shell的重定向符来保存结果;
         3、sed也支持sed脚本。
其工作原理为:将一行文字读到内存空间(该内存空间称为sed的模式空间)里面去,做完处理之后,再输出到屏幕上。
sed 的模式空间:即能被sed匹配到的字符串被存放到的内存空间。
sed的使用格式:sed [options] [file]
1】sed  “ADDR1,ADDR2COMMAND” FILE    表示文件中被ADDR1和ADDR2匹配到的行用什么命令来处理。
       例如:sed 1,4d aa.sh————————>表示删除文件aa.sh中第一行到第四行的内容。1,4d可以加引号,也可以不加引号。
   2】sed  /PATTERN/COMMAND FILE       表示文件中被PATTERN匹配到的行采用什么命令来处理。
   3】sed /PATTERN1/,/PATTER2/COMMAND FILE     表示文件中从被PATTERN1匹配到的行开始至第一次PATTERN2匹配到的行结束采用什么命令来处理。
   4】sed /PATTERN/p FILE   表示文件中被匹配到的行重新显示一次@等特殊字符来替换/,有时会出错。,原文件也显示一次。最好不要使用
   5】sed -n /PATTERN/p FILE:只显示被模式匹配到的行而不再显示原文件。
   6】sed ‘#a\STRING’ FILE:在某一行或某几行后面添加字符串。如果字符串中有空格,必须加上‘’或者“”,否则会报错。
        例如:sed ‘2,5a\my love!\nmy big house’ d.sh (\n表示换行) 在第二行到第五行的每行后面添加两行。
   7】sed ‘#i\STRING’ FILE:在某一行或者某几行前面添加字符串。