`
iuottp
  • 浏览: 171451 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

很好的vi教程(接合例子)

阅读更多

很好的vi教程(接合例子)
基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:
1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。
vi的基本操作
•进入vi
在系统提示符号输入vi及文件名称后,即可进入vi全屏幕编辑画面:
$ vi testfile
有一点要特别注意,就是您进入vi之后是处于“Command mode”下,您要切换到Insert mode才能输入文字。初次用vi的用户都会想先用上下左右键移动光标,结果电脑一直叫,把自己气个半死,所以进入vi后,先不要乱动,转换入Insert后再说。
•切换至Insert mode编辑文件
在Command mode下按‘i’、‘a’或‘o’三键就可进入Insert mode。这时候您就可以开始输入文字了。
i: 插入,从目前光标所在之处插入所输入的文字。
a: 增加,目前光标所在的下一个字开始输入文字。
o: 插入新的一行,从行首开始输入文字。
•Insert的切换→Command mode,按Esc键
您目前处于Insert mode,您就只能一直打字。假如您发现打错字了,想用光标键往回移动,将该字删除,就要按ESC键转换回Command mode,再删除文字。
•离开vi及存文件
在Command mode下,可按冒号“:”键入入Last line mode,例如:
:w filename (输入“w filename”,将文章存入指定的文件名filename)
:wq (输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:q! (输入“q!”,强制离开并放弃编辑的文件) Command mode功能键列表
在介绍command mode指令的时后,指令后面加上“常用”字眼的功能键,表示比较常用的vi指令,请读者您一定要学会、记住。
(1)I、a、o切换进入Insert mode。[超级常用]
(2)移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母
h、j、k、l,分别控制光标左、下、上、右移一格。
按Ctrl+B:屏幕往后移动一页。[常用]
按Ctrl+F:屏幕往前移动一页。[常用]
按Ctrl+U:屏幕往后移动半页。
按Ctrl+D:屏幕往前移动半页。
按 0 (数字零):移动文章的开头。[常用]
按 G:移动到文章的最后。[常用]
按 w:光标跳到下个word的开头。[常用]
按 e:光标跳到下个word的字尾。
按 b:光标回到上个word的开头。
按 $:移到光标所在行的行尾。[常用]
按 ^:移到该行第一个非空白的字符。
按 0:移到该行的开头位置。[常用]
按 #:移到该行的第#个位置,例:51、121。[常用]
(3)删除文字
x:每按一次删除光标所在位置的后面一个字符。[超常用]
#x:例如,6x 表删除光标所在位置的后面6个字符。[常用]
X:大字的X,每按一次删除光标所在位置的前面一个字符。
#X:例如,20X 表删除光标所在位置的前面20个字符。
dd:删除光标所在行。[超常用]
#dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]
(4)复制
yw:将光标所在处到字尾的字符复制到缓冲区中。
(想在和#x、#X的功能相反)
p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
yy:复制光标所在行。[超常用]
p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
#yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
“ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
“ap:将放在buffer a的数据粘贴。
“b3yy:将三行数据存入buffer b。
“b3p:将存在buffer b的资料粘贴
(5)取代
r: 取代光标所在处的字符:[常用]
R:取代字符直到按Esc为止。
(6)复原(undo)上一个指令
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
.: .可以重复执行上一次的指令。
(7)更改
cw:更改光标所在处的字到字尾$处。
c#w:例如,c3w代表更改3个字。
(8)跳至指定行
Ctrl+G:列出光标所在行的行号。
#G:例如,15G,表示移动光标至文章的第15行行首。[常用]
Last line mode下指令简介
读者您要使用Last line mode之前,请记得先按Esc键确定您已经处于Command mode下后,再按冒号“:”或“/”或“?”三键的其中一键进入Last line mode。
1.列出行号
set nu: 输入“set nu”后,会在文章的每一行前面列出行号。
2.跳到文章的某一行
#:井号代表一个数字,在Last line mode提示符号“:”前输入数字,再按Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]
3.寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按n会往下寻找到您要的关键字为止。
?关键字:先按?,再输入您想寻找的字,如果第一次找的关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。
4.取代字符串
1,$s/string/replae/g:在last line mode输入“1,$s/string/replace/g”会将全文的string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认。
%s/string/replace/c:同样会将全文的string字符串取代为replace字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。
5.存文件
w:在last line mode提示符号“:”前按w即可将文件存起来。[超常用]
#,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。
6.离开
q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件。[常用]
++++++========================================
例子
1
) 在一个新文件中读/etc/passwd中的内容,取出用户名部分
     
vi file
     
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd

      :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分 
      :3r /etc/passwd 这是在指定的行号后面读入文件内容 

      另外一种方法删掉文件中所有的空行及以#开始的注释行 
      #cat squid.conf.default | grep -v '^$' | grep -v '^#'
:.*表示从':'开始直到结尾,'*'在这里是通配符?
2) 在整个文件或某几行中在行首或行尾加一些字符串 

      vi file 

      :3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string 

      :%s/$/ some string/g 在整个文件每一行的行尾添加 some string 
^表示行首,$表示行尾
3) 替换文件中的路径

:%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin

或者用

:%s/\/usr\/bin/\/bin/g 在'/'前用\符号指出'/'是真的单个字符'/'
#表示将/理解为'/'字符
4) 同时编辑两个文件,在两个文件中拷贝剪贴文本 

      vi file1 file2 

      yy 同时打开两个文件,在文件1的光标所在处拷贝所在行 

      :n 切换到文件2 (n=next) 

      p 在文件2的光标所在处粘贴所拷贝的行 

      :N 切换回文件1 

分享到:
评论
1 楼 chgliu 2012-12-26  
谢谢~很实用

相关推荐

    Labview宝典vi和例子.zip

    Labview宝典vi和例子.zipLabview宝典vi和例子.zipLabview宝典vi和例子.zipLabview宝典vi和例子.zipLabview宝典vi和例子.zipLabview宝典vi和例子.zip

    vi使用教程,适合初学者

    ### VI编辑器使用教程知识点详解 #### 一、VI编辑器简介 - **定义与特点**:VI(Visual Editor)是一种广泛应用于Unix和类Unix操作系统(如Linux)上的文本编辑器。相较于图形用户界面(GUI)编辑器,VI在纯文本...

    如何在vi中实时读取子vi数据_vi_vi中实时读取子vi数据_

    本教程将详细讲解如何在主VI中实时读取子VI的数据。 首先,理解LabVIEW中的子VI通信机制至关重要。子VI在运行时会产生输出,这些输出可以通过连接线(wires)传递给主VI或其他子VI。当子VI完成计算或处理后,它会...

    vi.zip_vi关联的接口

    标题中的"vi.zip_vi关联的接口"可能是指一个与VI(Visual Interface)相关的软件或库,其中包含了用于处理图像的接口。VI可能是一个图形用户界面工具,或者在编程语境中,它可能指的是某些特定的编程接口。这个...

    清华版LABVIEW教程例子

    《清华版LABVIEW教程例子详解》 LABVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(NI)开发的一种图形化编程语言,广泛应用于工程、科研领域,特别是数据分析、测试测量和...

    events.vi——labview事件结构例子

    `events.vi` 是一个包含使用事件结构的实例,对于初学者或者想要深入理解LabVIEW事件编程的人来说,这是一个很好的学习资源。 事件结构在LabVIEW中扮演着异步编程的角色,它不同于传统的顺序执行流程。在事件结构中...

    vi经典教程,ppt文档方便阅读

    这个经典的vi教程通过精心设计的PPT格式,使得学习过程更为直观和便捷,特别适合教学和自我学习。 **VI概念** vi编辑器拥有三种基本模式:普通模式(Normal mode)、插入模式(Insert mode)和命令行模式(Command-...

    LabVIEW2018动态获取系统语音设备VI及例子

    本资源“LabVIEW2018动态获取系统语音设备VI及例子”提供了使用LabVIEW2018来动态获取和管理计算机系统中声音输入和输出设备的方法。这个功能对于需要实时音频处理或者依赖特定声音设备的项目来说非常有用。 首先,...

    recursive-and-reentrant-VI.zip_labview可重入VI_non-reentrant VI_vi

    例如,"Factorial.vi"可能就是一个实现递归计算阶乘的例子。通过递归,我们可以简洁地表示复杂的计算逻辑,但需要注意的是,不正确的递归可能导致无限循环,消耗大量系统资源,因此在编写递归VI时必须设定好退出条件...

    VI中文用户手册

    VI中文用户手册,使用VI进行编程时很好教程.

    界面重用_subvi_labview调用子VI_vi_shelfhts_labview_

    这个文件很可能是一个演示如何在LabVIEW中实现界面重用和子VI调用的实际例子。在这个VI中,可能会有多个子面板,每个子面板分别加载和调用不同的子VI,展示各自独立的功能。通过运行此示例,我们可以学习如何有效地...

    常用vi命令的操作

    接下来我将详细介绍vi编辑器中常用的命令和操作。 首先,移动光标是编辑文档最基本的操作。vi提供了多种方法来实现光标的移动: - 使用单个字符键`h`、`j`、`k`、`l`分别实现向左、下、上、右移动光标。 - 使用`...

    PS网页设计教程VI.pdf

    PS网页设计教程VI

    LabVIEW动态调用子VI并插入主VI前面板-编程实例

    在这个"LabVIEW动态调用子VI并插入主VI前面板"的编程实例中,我们将探讨如何在主VI(Virtual Instrument)中动态地调用子VI,并将子VI的前面板集成到主VI的前面板上,以实现更灵活的交互设计。 首先,理解"动态调用...

    labview教程和例子

    这个"labview教程和例子"的压缩包文件显然是为了帮助初学者入门LabVIEW,通过实际操作来加深对理论知识的理解。 教程部分可能涵盖了以下内容: 1. **基础概念**:解释LabVIEW的基本工作原理,包括前面板和程序框图...

    labview子VI改变主VI控件属性

    ### LabVIEW 子 VI 改变主 VI 控件属性详解 #### 一、知识点概述 在 LabVIEW 中,可以通过创建子 VI 来控制或修改主 VI 的控件属性。这种方式不仅可以提高程序的模块化程度,还能使代码更加清晰、易于维护。本文将...

    VI设计项目式教程(第2版)(微课版)-源文件与素材.zip

    VI设计项目式教程(第2版)(微课版)-源文件与素材.zip

    VI网络发布教程

    【VI网络发布教程】 在LabVIEW编程环境中,VI(Virtual Instrument)网络发布是一项重要的功能,它允许用户将自定义的LabVIEW应用程序部署到网络上,供其他用户远程访问和使用。这项技术对于协同开发、远程控制和...

    labview子VI 创建 教程和范例

    labview参考资料 ,子VI 创建 教程和范例

Global site tag (gtag.js) - Google Analytics