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
38、vim的配置文件:全局的:/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:在某一行或者某几行前面添加字符串.