基本 vi 命令

前言

本文内容翻译 Basic vi Command, Colorado State University, 翻译原文的大部分内容。

本文介绍的是 UNIX 下的 vi 编辑器,和 Linux 下常用的 vim 会略有不同。由于 vim 是从 vi 发展而来的文本编辑器,所以本文的内容也值得一读。

我把新学到的或者值得注意的命令用黄色高亮了出来

什么是 vi ?

  UNIX 操作系统的默认编辑器就是 vi (visual editor)。可见 vi 是可视化编辑器的缩写。UNIX 环境下可替换的编辑器还包括 pico 和 emacs,emacs 是 GNU 的产品。

  UNIX 的 vi 编辑器有是一个全屏编辑器,有两个操作模式:

  1. 命令模式 (Command mode), 发送命令可以操作文件。

  2. 插入模式 (Insert mode),可以对当前文件插入文本。

  在命令模式下,每一个输入的字符都是一个命令,操控着当前被编辑的文本;在命令模式下,一个输入的字符可能使得 vi 编辑器进入插入模式。在插入模式,每一个输入的字符都会添加到文件文本中;按 <Esc> (Escape) 可以关闭插入模式。

  在下面的表格中,最基本的有用的命令使用星号(*) 标识出来。

  注:UNIX 和 vi 都是大小写敏感的。请注意使用正确的大小写,避免出现无法预计的结果。

  下面记录一下基本的 vi 命令:


开始、结束 vi

启动 vi 

  输入 vi filename 启动 vi 。如果文件 filename 已存在,则该文件的第一页会被显示出来。如果该文件不存在,则创建一个空文件,你可以在里面输入文本。

  *  vi filename  // 从第 1 行开始编辑文件 filename

编辑 vi

  通常,在你离开 vi 时候,新建或被修改的文件会被保存。当然,也可以不保存就离开 vi 。

  注意,无论什么时候按下冒号(:),光标都会移到屏幕的底部。这类命令在按下回车<Return>(or <Enter>) 键结束。

  *  :x<Return>  // 退出 vi, 把修改的文件保存为原来调用时的文件名

  *  :wq<Return> // 同时

    :q<Return>  // 退出 vi

  *  :q!<Ruturn>  // 不保存最后修改的内容,直接退出


移动光标

  不像 windows 和 Mac 的编辑器,鼠标无法移动 vi 编辑器屏幕内的光标。你必须使用下面列出的命令。在一些 UNIX 平台,方向键也可以使用,但是,由于 vi 是基于 Qwerty 键盘(没有方向键的键盘)设计的,所以在 vi 上,方向键有时会产生奇怪的效果,应当避免使用。

  如果你在 windows 和 UNIX 之间来回切换,你可能会觉得,移动光标方式的不同是是两个环境间最令人沮丧的不同点。

  在下面列表中,字母前面的符合 ^ 代表输入该字母的同时要按下 <Ctrl> 键。

  *  j or <Return> [or ↓]   // 光标向下移动一行

  *  k [or ↑]         // 光标向上移动一行

  *  h or <返回> [or ←]   // 光标向左移动一位

  *  l or <空格> [or →]    // 光标向右移动一位

  *  0(零)          // 光标移动到当前行开始

  *  $            // 光标移动到当前行末尾

    w            // 光标移动到下一个单词开始位置

    b            // 光标移动到前一个单词开始位置

    :0<Return> or 1G    // 光标移动到文件第一行

    :n<Return> or nG    // 移动光标到第 n 行

    :$<Return> or G     // 移动光标到文件最后一行


屏幕操作

  下面命令使得 vi 编辑器的屏幕上下移动多行,或者刷新。

  ^f  // 向前(forward)移动一屏

  ^b  // 向后(backward)移动一屏

  ^d  // 向下(down / forward)移动半屏

  ^u  // 向上(up / backward)移动半屏

  ^l  // 重绘(redraw)屏幕

  ^r  // 重绘(redraw)屏幕,移除已删行


增,改,删文本

  不像 windows 编辑器,你无法把鼠标覆盖的文本替换,或删除。而是使用下面的命令进行操作。

插入添加文本

  下面的命令允许你添加插入文本。每一个命令都 vi 编辑器进入插入模式;因此,必须按<Esc>键来结束文本输入,把 vi 编辑器变回命令模式。

  *  i  // 在光标前插入文本,直到按下 <Esc>

    I  // 在当前行的开始位置插入文本,直到按下 <Esc>

  *  a  // 在光标后面插入文本,直到按下 <Esc>

    A  // 在当前行末尾插入文本,直到按下 <Esc>

  *  o  // 在当前行下面插入一行,并输入文本,直到按下 <Esc>

  *  O  // 在当前行上面插入一行,并输入文本,直到按下 <Esc>

修改文本

  下面命令运行你修改文本

  *  r  // 替换光标下的一个字符( 无需 <Esc>)

    R  // 替换字符,从光标位置开始,直到按下 <Esc>

删除文本

  下面命令允许你删除文本

  *  x  // 删除光标下的一个字符

    Nx  // 从光标位置开始,删除 N 个字符

    dw  // 删掉光标下的一个单词

    dNw  // 删掉光标位置开始后的 N 个单词,例如,d5w 删除 5 个单词

    D   //  删除光标位置开始的行尾部分

  *  dd  // 删除当前行

    Ndd  // 删除 N 行,从当前行开始

复制粘贴文本

  下面命令运行你复制粘贴文本

    yy  // 复制(yank)当前行到缓存(buffer)

    Nyy or yNy  // 把当前行后面的 N 行复制到缓存(buffer)

    p       // 在当前行后面粘贴(paste)缓存中的文本


其他命令

搜索文本

  替换一个单词或者短语,这在文本编辑中经常出现。需要定位一个指定的字符串,可以使用下面的命令:

    /string  // 在文本中,向前搜索 string 的出现位置

    ?string  // 在文本中,向后搜索 string 的出现位置

    n    // 查找下一个

    N    // 查找上一个

确定行号

   有时,能够确定当前行行号或者文件的总行数是很有用的。

    :.=  // 在屏幕底部,显示当前行行号

    :=  // 在屏幕底部,显示文件的总行数

    ^g  // 在屏幕底部,即显示当前行行号,右显示文件总行数


保存,读取文件

  下面的命令允许你读取其他文件到当前文件,或者把当前文件另存为其他文件

    :r filename<Return>  // 读取文件 filename,然后把读取的内容插入到当前行后面

    :w <Return>      // 保存当前内容到原始文件

    :w newfile<Return>  // 把当前内容到另存为 newfile

    :12,35w smallfile<Retrun>  // 把 12 行到 15 行的内容保存到名为 smallfile 的文件中

    :w! prefile<Return>      // 把当前内容写入到之前已存在的文件 prefile 中。

时间: 2024-10-25 14:50:25

基本 vi 命令的相关文章

linux/mac vi命令详解

转自  http://blog.csdn.net/youngkingyj/article/details/22713965 刚开始学着用Linux,对vi命令不是很熟,在网上转接了一篇. vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令.由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它.Vi也是Linux中最基本的文本编 辑器,学会它后,您

linux vi 命令大全

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

Linux vi 命令

来学一个vi的命令.要完成的是在一个只读文件中,删掉一行,然后插入两行. 那只读文件你要修改,用sudo vi 总可以了吧.首先 vi命令进入编辑模式. 在非插入模式中: h 光标左移  l 光标右移  j 光标上移 k 光标下移 d 删除光标所在行 o在当前行之下新开一行 那我就先d了一下, 然后i了一下,然后啪啦啪啦输入一行,完事o了一下,在新开的一行又啪啦啪啦.最后 esc  :wq .大功告成! 我想进去看一下,到底改了没有,于是又vi了一下,发现改好了,然后不让退出,我特么随手就是一个

linux下vi命令大全

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

Unix Linux 通用vi命令,使用帮助手册【珍藏版

Unix Linux 通用vi命令,使用帮助手册[珍藏版] Vi 简介 Vi 是 Unix 世界里极为普遍的全萤幕文书编辑器,几乎可以说任何一台 Unix 机器都会提供这套软体.Linux 当然也有,它的 vi 其实是 elvis(版权问题),不过它们都差不多.熟悉 DOS 下的文书处理後,也许会感到 vi 并不好用:Unix 上也已经发展出许多更新.更好用的文书编辑器,但是并不一定每一台 Unix 机器上都会安装这些额外的软体.所以,学习 vi 的基本操作还是有好处,让你在各个不同的机器上得心

linux修改文件内容 vi命令

vi编辑器是所有Unix及Linux系统下标准的编辑器,介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它.Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻. 在所有的命令执行前,先按Esc1.vi的基本概念  基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功

linux下vi命令大全 转

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

Vi命令大全

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

Linux vi命令详解

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令.由于  对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它.Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻. 1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last li

从简入难makefile文件编写,Linux C++编程,简单vi命令

 1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件 6.最终的makefile文件 总结:makefile是通过.o文件是否存在已经.cpp最后的修改时间来判断是否重新编译.o文件. 7.makefile不管理.h文件,它是编译器来进行管理的. vi: i在光标之前插入 a在光标后面插入 x删除后面的字符 dd删