鸟哥的linux私房菜读书笔记10

来源:互联网 发布:mac怎么调节字体大小 编辑:程序博客网 时间:2024/06/06 02:04

第十章:vim程序编辑器

学习vim的原因:所有的unixlike系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;很多软件的编辑接口都会主动调用vi;vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;程序简单,编辑速度相当快速;

vim是vi的升级版本,可以用颜色或底线等方式来显示一些特殊的信息;

vi分为三种模式:分别是一般模式、编辑模式和命令行模式分别如下;

一般模式:以vi打开一个文件就直接进入一般模式了。可以上下左右移动光标,也可以删除字符或整行,也可以复制和粘贴;

编辑模式:在一般模式中可以进行删除、赋值、粘贴等操作,但是却无法编辑文件内容。要等到按下“i、I、o、O、a、A、r、R”中任意一个才能进入编辑模式,退出编辑模式按esc;

命令行模式:在一般模式,输入“:、/、?”3个中任意一个就可以将光标移动到最下面那一行,在这个模式可以提供你查找数据的操作,而读取、保存、大量替换字符、离开vi、显示行号等操作则是在此模式下完成的;

使用vi进入一般模式:vi  test.txt

按下i进入编辑模式,开始编辑文字

按下esc键回到一般模式

在一般模式中输入:wq保存后离开vi

vim按键说明:

第一部分:一般模式可用的按键说明,光标移动、复制粘贴、查找替换等;

ctrl+f:屏幕向下移动一页,相当于pagedown;

ctrl+b:屏幕向上移动一页,相当于pageup;

ctrl+d:屏幕向下移动半页;

ctrl+u:屏幕向上移动半页;

+:光标移动到非空格符的下一行;

-:光标移动到非空格符的上一行;

n<space>:n表示数字,按下数字后再按空格键,光标会向右移动这一行的n个字符;

0或者功能键[Home]:移动到这一行的最前面字符处;

$或者功能键[End]:移动到这一行的最后面字符处;

H:光标移动到这个屏幕的最上方那一行的第一个字符;

M:光标移动到这个屏幕的中央那一行的第一个字符;

L:光标移动到这个屏幕的最下方那一行的第一个字符;

G:移动到这个文件的最后一行;

nG:n为数字。移动到这个文件的第n行;

gg:移动到这个文件的第一行,相当于1G;

N[Enter]:n为数字。光标向下移动n行;

 

查找与替换

 

/word:向下寻找一个名称为WORD的字符串;

?word:向上寻找一个字符串名称为word;

n:这个n是英文按键;代表重复前一个查找的操作;向下继续查找;

N:这个N是英文按键;与n刚好相反,向上继续查找;

使用/word配合n及N是非常有用的,可以重复第找到一些关键字;

:n1,n2s/word1/word2/g:n1与n2为数字。在第n1与n2行之间寻找一个word1这个字符串,并将该字符串替换为word2。

:1.$s/word1/word2/g:从第一行到最后一行查找word1字符串,并将该字符串替换为word2;

:1,$s/word1/word2/gc:从第一行到最后一行查找word1字符串,并将该字符串替换为word2。且在替换前显示提示字符给用户确认是否需要替换;

删除、复制和粘贴;

x、X:在一行字当中,x为向后删除一个字符(相当于del),X为向前删除一个字符(相当于backspace);

nx:n为数字,连续向后删除n个字符;

dd:删除光标所在的那一整行;

ndd:n为数字,删除光标所在的向下n行;

d1G:删除光标所在到第一行的所有数据;

dG:删除从光标所在到最后一行的所有数据;

d$:删除从光标到该行的最后一个字符;

d0:0是数字;删除从光标所在处到该行的最前面一个字符;

yy:复制光标所在的一行;

nyy:n为数字,复制光标所在处的向下n行;

y1G:复制光标所在行到第一行的所有数据;

yG:复制光标所在行到最后一行的所有数据;

y0:复制光标所在的那个字符到该行行首的所有数据;

y$:复制光标所在的那个字符到该行行尾的所有数据;

p,P:p为将以复制的数据在光标的下一行粘贴,P为粘贴在光标的上一行;

J:将光标所在行与下一行的数据结合成一行;

c:重复删除多个数据,例如向下删除10行,[10c];

u:复原前一个操作;

ctrl+r:重做前一个操作;

.:小数点,意思是重复前一个操作的意思,如果你想要删除、重复粘贴等操作,按下小数点就好了;

第二部分:一般模式切换到编辑模式的可用的按钮;

i,I:进入插入模式:i从目前光标所在处插入,I为在目前所在行的第一个非空格符出开始插入;

a,  A:进入插入模式:a为从目前光标所在处的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入;

o,O进入插入模式:这是英文o的大小写,o为在目前光标处的下一行插入新的一行;O为在目前光标所在处得上一行插入新的一行;

r,R:进入替换模式:r只会替换光标所在的那一个字符一次;R会一直替换光标所在处的字符,直到按下ESC键为止;

ESC键:推出编辑模式,回到一般模式;

第三部分:一般模式切换到命令行模式的可用的按钮说明;

:w:将编辑的数据写入到硬盘文件中;

:w!:若文件属性为只读时,强制写入给文件。只不过到底能不能写入,还是跟你对该文件的文件权限有关;

:q:离开vi;

:q!若修改过文件,又不想存储,使用!为强制离开不保存文件;!在vi中经常有强制的意思;

:wq:保存后离开,若为:wq!则为强制保存后离开;

ZZ:大写的Z。若文件没有改动,则不保存离开,若文件已经被改动过,则保存后离开;

:w[filename]:将编辑的数据保存成另一个文件,类似于零存文件;

:r[filename]:在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行后面;

:n1,n2 w[filename]将n1到n2的内容保存成filename这个文件;

:!command:暂时离开vi到命令行模式下执行command的显示结果;

:set nu:显示行号,设置之后,会在每一行的前缀先是该行的行号;

:set nonu:与set nu相反,为取消行号;

 

在vi中,数字是很有意义的。数字通常代表重复做几次的意思。也有可能是代表重复做几次的意思。也有可能是代表去到第几个什么的意思;

在使用vim编辑时,vim会在被编辑的文件的目录中在新建一个filename.swp的暂存文件,可以有恢复文件的功能;

块编辑;

 

多文件编辑:按键有:n编辑下一个文件;:N编辑上一个文件;:files列出目前这个vim的打开的所有文件;

将hosts中的四行复制到hosts1中:

通过vim hostshosts1命令来使用一个vim来打开两个文件;

在vim中先使用:files查看一下编辑的文件数据有什么;然后按下任意键回到vim一般模式;

在第一行输入4yy命令来复制四行;

在vim的环境下输入n回来到第二个编辑的文件,即hosts1中;

在hosts1下按G到最后一行,再输入p粘贴;

按下多次的u来还原原本的文件数据;

最终按下:q来离开vim的多文件编辑;

 

多窗口功能:在命令行模式下输入:sp[filename]即可多打开一个窗口,filename可有可无,如果想在新窗口启动另一个文件,就加上文件名;否则近输入:sp时,出现的则是同一个文件在两个窗口间;

多窗口情况下的按键功能:ctrl+w+下键或j键,光标移动到下方的窗口;ctrl+w+上键或k,光标移动到上方的窗口;ctrl+w+q其实就是:q结束离开;

重点回顾:

linux下面的配置文件多为文本文件,故使用vim即可进行设置编辑;

vim可视为程序编辑器,可用以编辑shell script、配置文件等,避免打错字;

vi为所有UNIX like的操作系统都会存在的编辑器,且执行速度快;

vi有三种模式,一般模式可变换到编辑与命令行模式,但编辑模式与命令行模式不能互换;

常用的按键有I,esc,:wq;

vi的界面大致可分为两部分:上半部的本文与最后一行的状态+命令行模式;

数字是有意义的,用来说明重复进行几次操作的意思,例如5yy为赋值5行的意思;

光标的移动中,大写的G经常使用,尤其是1G、G,表示移动到文章的头、尾功能;

vi的替换功能也很棒。:n1,n2s/old/new/g要特别注意学习起来;

小数点.为重复进行前一次操作,也是经常使用的按键功能;

进入编辑模式几乎只要记住I,o,R三个按钮即可,尤其是新增一行与替代的R;

vim会主动创建swap暂存文件,所以不要随意短线;

可以使用ctrl+v进行复制/粘贴/删除的行为;

使用:sp可以切割窗口;

vim的环境设置可以写入~/.vimrc文件中;

可以使用iconv进行文件语系编码的转换;

使用dos2UNIX及UNIX2dos可以变更文件每一行的行尾断行字符;

0 0