linux(1)----vi
最近又回到了PHP开发,由于之前做过,但是主要是在window下进行的开发,对linux还是不太熟悉,所以趁此机会学习一下。使用linux系统,首先要学会如何记录东西,书写内容,所以就学习了vi。
首先,vi编辑文档分为3种模式,。
一般模式:以vi打开一个文档就进入了一般模式,在一般模式中,可以移动光标,删除行,删除字符,复制,粘贴的等操作。
编辑模式:该模式下可以输入字符内容内容,由一般模式进入编辑模式的方式是按下【i,I,o,O,a,A,r,R】中的任何一个键,由编辑模式返回一般模式按下 【ESC】建即可。
命令模式:也就是能够让你能够保存,退出,查找等命令的模式,有一般模式进入命令模式的方式是输入【:,/,?】中的任何字符。
ok,下面就新建一个文件,咱在linux下建立一个test.txt
新建:
输入命令 vi test.txt
按回车键进入一般模式
按【i】键进入编辑模式即可进行编辑,输入内容,最下面的【-- INSERT--】是系统显示内容,表示在编辑模式。
文件编辑完成后,按【ESC】返回一般模式,并按【:】进入命令模式,输入wq,保存并退出,一个新的文件就生成了。
使用ls命令,查看我们的文件已经存在了
上面就是一个简单的创建文件的过程,编辑文件类似。vi对文件的操作还有很多命令,可参照下面:
第一部分 一般模式下:
【h或向左箭头】:光标向左移动一个字符。
【j或向下箭头】:光标向下移动一行。
【k或向上箭头】:光标向上移动一行。
【l或向右箭头】:光标向右移动一个字符。
【n<space>】:n代表数字,输入数字n,然后按空格键,表示向右移动n个字符。
0或【home】:移动到该行的头位置。
$或【end】:移动到改行的最后。
【H】:光标移动到屏幕的最上方一行的第一个字符。
【M】:光标移动到屏幕的中央一行的第一个字符。
【L】:光标移动到屏幕最下方一行的第一个字符。
【G】:移动到该文件的最后一行。
【nG】:n为数字,移动到该文件的第n行。
【gg】:移动到该文件的第一行,相当于1G。
【n<Enter>】:n为数字,向下移动n行。
查找和替换:
【/word】:从光标位置往后查找word字符串,"/aa"为查找字符串”aa“。
【?word】:从光标处向上查找word字符串。
【n】:字母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为向后删除一个字符,X为向前删除一个字符。
【nx】:n为数字,向后删除n个字符。
【dd】:删除光标所在的行。
【ndd】:n为数字,删除用从光标所在行起往下共n行。
【d1G】:删除光标所在行到第一行的数据。
【dG】:删除光标所在行到最后一行的数据。
【d$】:删除光标所在的位置到到文件最后的所有字符。
【d0】:删除光标所在处到文件开始的所有数字。
【yy】:复制光标所在的行。
【nyy】:n为数字,复制光标所在行向下n行。
【y1G】:复制光标所在行到第一行的所有数据。
【yG】:复制光标所在行到最后一行的所有数据。
【y0】:复制光标所在字符到行首的所有字符。
【y$】:复制光标所在字符到行尾的所有字符。
【p,P】:p将复制的数据粘贴到光标坐在行的下一行,P将复制的数据粘贴到光标所在行的上一行。
【J】:将光标所在行的数据和下一行的数据合并成同一行。
【u】:复原
【ctrl+r】:重复动作。
第二部分 一般模式切换到编辑模式的键:
【i,I】:进入插入模式,i为”从目前光标坐在出插入“,I为”在目前所在行的第一个非空格符处开始插入“;
【a,A】:a为”从光标所在处的下一个字符处开始插入“,A为”从光标所在行的最后一个字符处开始插入“。
【o,O】:o为”在光标坐在的下一行处插入新的一行“,O为”在光标坐在行的上一行处插入新的一行“。
【r,R】:进入替换模式,r只会取代光标所在的字符一次,R会一直取代光标所在的文字,指导按下ESC。
第三部分 命令
【:w】:将数据写入硬盘档案中。
【:w!】:当文件为只读是,强制写入该档案中。
【:q】:离开vi。
【:q!】:不存储档案,退出vi。
【:wq】:存储后离开,:wq! 为强制存储后离开。
【ZZ】:若档案没有变动,则不存储离开,若已经变动过,则存储后离开。
【:w [filename]】:将编辑的数据存储成另一个文件(另存为)。
【:r [filename]】:读入另一个档案的数据,既将filename的内容加到光标所在行后面。
【:n1,n2 w [filename]】:将n1到n2的内容存储成filename。
【:set nu】:显示行号。
【:set nonu】:取消行号。