跳至主要内容

Vi

三、附件:vi详细指令表
移动到第一行:1
进入vi的命令
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi + filename: 打开文件,并将光标置于最后一行首
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename: 打开多个文件,依次进行编辑

移动光标类命令
h: 光标左移一个字符
l: 光标右移一个字符
space: 光标右移一个字符
Backspace: 光标左移一个字符
k或Ctrl+p: 光标上移一行
j或Ctrl+n: 光标下移一行
Enter: 光标下移一行
w或W : 光标右移一个字至字首
b或B : 光标左移一个字至字首
e或E : 光标右移一个字至字尾 ): 光标移至句尾 (: 光标移至句首 }: 光标移至段落开头 {: 光标移至段落结尾
nG: 光标移至第n行首
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
H: 光标移至屏幕顶行
M: 光标移至屏幕中间行
L: 光标移至屏幕最后行
0: 光标移至当前行首
$: 光标移至当前行尾

屏幕翻滚类命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行

删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本

搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索
patternn: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次

搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换

选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(ctrl+i)和行尾标志
($)number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示no write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。


#: 是指常用的命令
一般模式:光标移动h 或 -> 光标向左移动一个字符------------------------------------------------------------l 或 <- 光标向右移动一个字符------------------------------------------------------------k 或 向上方向键 光标向上移动一个字符------------------------------------------------------------j 或 向下方向键 光标向下移动一个字符------------------------------------------------------------Ctrl+f # 屏幕向前翻动一页--------------------------------------------------------Ctrl+b # 屏幕向后翻动一页--------------------------------------------------------Ctrl+d 屏幕向前翻动半页--------------------------------------------------------Ctrl+u 屏幕向后翻动半页--------------------------------------------------------+ 光标移动到非空格符的下一列------------------------------------------------------------------- 光标移动到非空格符的上一列-------------------------------------------------------------------n 按下数字键后再按空格键,光标会向右移动这一行的n个字符。 (例如20,则光标会向右移动20个字符)----------------------------------------------------------------------------------------------0 # (这是数字0)移动到这一行的第一个字符处-----------------------------------------------------------------------------$ # 移动到这一行的最后一个字符处--------------------------------------------------------------------H 光标移动到这个屏幕最上方的那一行------------------------------------------------------------------------M 光标移动到这个屏幕中央的那一行----------------------------------------------------------------------L 光标移动到这个屏幕最下方的那一行------------------------------------------------------------------------G # 移动到这个文件的最后一行----------------------------------------------------------------nG 移动到这个文件的第n行。 例如20G,则会移动到这个文件的第20行(可配合:set nu)----------------------------------------------------------------------------------------------n # 光标向下移动n行-------------------------------------------------------
一般模式:查找与替换
/word # 在光标之后查找一个名为word的字符串--------------------------------------------------------------------------?word 在光标之前查找一个名为word的字符串--------------------------------------------------------------------------:n1,n2s/word1/word2/g # 在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2----------------------------------------------------------------------------------------------------:1,$s/word1/word2/g # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2--------------------------------------------------------------------------------------------------:1,$s/word1/word2/gc # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2, 且在替换前显示提示符让用户确认(confirm)---------------------------------------------------------------------------------------------------
一般模式:删除、复制与粘贴
x,X # x为向后删除一个字符,X为向前删除一个字符--------------------------------------------------------------------------------nx 向后删除n个字符-------------------------------------------------------dd # 删除光标所在的那一整行 --------------------------------------------------------------ndd # 删除光标所在列的向下n列,例如,20dd则是删除20列---------------------------------------------------------------------------------------d1G 删除光标所在行到第一行的所有数据------------------------------------------------------------------------dG 删除光标所在行到最后一行的所有数据--------------------------------------------------------------------------yy # 复制光标所在行------------------------------------------------------nyy # 复制光标所在列的向下n列,例如,20yy则是复制20列---------------------------------------------------------------------------------------y1G 复制光标所在列到第一列的所有数据------------------------------------------------------------------------yG 复制光标所在列到最后一列的所有数据--------------------------------------------------------------------------p,P # p为复制的数据粘贴在光标下一行,P为粘贴在光标上一行------------------------------------------------------------------------------------------J 将光标所在列与下一列的数据结合成一行-----------------------------------------------------------------------------u # 恢复前一个动作------------------------------------------------------
编辑模式:
i,I # 插入:在当前光标所在处插入输入的文字,已存在的字符会向后退--------------------------------------------------------------------------------------------------a,A # 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退-------------------------------------------------------------------------------------------------------o,O # 插入新的一行:从光标所在处的下一行行首开始输入字符------------------------------------------------------------------------------------------r,R # 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止---------------------------------------------------------------------------------------------------------------------Esc # 退出编辑模式,回到一般模式------------------------------------------------------------------
命令行模式:
:w # 将编辑的数据写入硬盘文件中------------------------------------------------------------------:w! 若文件属性为只读,强制写入该文件------------------------------------------------------------------------:q # 退出vi----------------------------------------------q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件---------------------------------------------------------------------------------------------:wq # 保存后退出,若为:wq!,则为强制保存后退出---------------------------------------------------------------------------------:w[filename] 将编辑数据保存为另一个文件(类似另存为新文档):x也是保存------------------------------------------------------------------------------------:r[filename] 在编辑的数据中,读入另一个文件的数据,亦即将filename这个文件内容加到光标所在行的后面----------------------------------------------------------------------------------------------------------------------------:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号------------------------------------------------------------------------------------------:set nonu 与set nu相反,为取消行号----------------------------------------------------------------n1,n2w[filename] 将n1到n2的内容保存为filename这个文件----------------------------------------------------------------------------

评论

此博客中的热门博文

Python学习笔记20100117

映射list   Dictionary 是用{}. list 是一那个[]. turple是用() 当你定义过dictionary后,你可以使用d.keys(), d.values(),d.items()将定义后的时候分别显示出来 当然可以将list里的值加减乘除,也可以如一般的定义直接重新复制这个list. 链接与分割字符串的 li=";", join(li) 则显示的就是 分隔符为;的数 如果使用li=li.split(";")则将刚刚;的分隔符删除,而split里也可定义域,如li.split(";",1)   自省 <---这是啥 之前在使用的时候发觉有些书本上的模块不能调用,很多是py脚本定义过的函数。 下载该脚本s,然后上传至指定位置。 >>>import sys >>>sys.path >>>sys.path.append("绝对位置")然后就能调用这些脚本和参数了。 删除 >>>sys.path.pop() 定义一个参数是 def info(test, test1=10.test2=12): info是函数名,test是必备参数,因为没有定义值,test1和test2是可选参数,定义了初始值   以上是外部函数的调用,下面转到内部函数 内部函数有type,str,dir及其他   ---type 返回任意字符的类型,模块也可以。types模块 >>> type(1) <type 'int'> >>> li=[] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> type(sys) <type 'module'> >>> import types ...

Python学习笔记20100128

methodList = [method for method in dir(object) if callable(getattr(object, method))] ###插一句, ifconfig pcn0 unplumb 去禁solaris的网卡plumb起网卡   and, or  已经and-or一起用。 and 两者为真,print第二个数,一个为假一个为真返回假,三者为真返回最后一个真。 or 两个为真,返回第一个, 一个为假一个为真返回真,三者为假返回最后一个假   lambda可快速定义最小值函数   g = lambda x:x*2 g(3) 6 (lambda x:x*2)(3)   doc string print getattr(object,mothod).__doc__   ljust ljust 用空格填充字符串以符合指定的长度。info 函数使用它生成了两列输出并将所有在第二列的 doc string 纵向对齐。 如果小于的话不会从中截断   -----面向对象 首先导入,你可以选择import module or from module import module 如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import。 如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。 如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突   -----类的定义 class Lofs    pass   这个类的名字是 Loaf,它没有从其它类继承。 类名通常是第一个字母大写,如:EachWordLikeThis,但这只是一个习惯,不是一个必要条件。   这个类没有定义任何方法或属性,但是从语法上,需要在定义中有些东西,所以你使用 pass。这是一个 Python 保留字,仅仅表示 “向前走,不要往这看”。它是一条什么都不做的语句,当你删空函数或类时,它是一个很好的占位符。   你可能猜...

Back to Blog again

     My last blog was almost 6 years again.  lots of things happening those years. like marriage, and move to another country, simply relocation, something is very big in my life.      Back to now,  I guess it is a very good time to start with the blog again. no matter daily life or the tech parts.      These blog may or will contains various languages, Chinese, English or Few Japanese. The first thing, I change the profile to Kamata life, Kamata is Japanese words. "鎌田"  as Kanji. why this change happened, due to we will move from Tamagawa "玉川" to Kamata very soon. I hope I can start to write this not daily, but I hope I can do this continuously.