Source : https://www.cs.colostate.edu/helpdocs/vi.html

What is vi?

The default editor that comes with the UNIX operating system is called vi (visual editor). [Alternate editors for UNIX environments include pico and emacs, a product of GNU.]
The UNIX vi editor is a full screen editor and has two modes of operation:
Command mode commands which cause action to be taken on the file, and
Insert mode in which entered text is inserted into the file.
In the command mode, every character typed is a command that does something to the text file being edited; a character typed in the command mode may even cause the vi editor to enter the insert mode. In the insert mode, every character typed is added to the text in the file; pressing the <Esc> (Escape) key turns off the Insert mode.
While there are a number of vi commands, just a handful of these is usually sufficient for beginning vi users. To assist such users, this Web page contains a sampling of basic vi commands. The most basic and useful commands are marked with an asterisk (* or star) in the tables below. With practice, these commands should become automatic.
NOTE: Both UNIX and vi are case-sensitive. Be sure not to use a capital letter in place of a lowercase letter; the results will not be what you expect.
To Get Into and Out Of vi

To Start vi

To use vi on a file, type in vi filename. If the file named filename exists, then the first page (or screen) of the file will be displayed; if the file does not exist, then an empty file and screen are created into which you may enter text.
*    vi filename    edit filename starting at line 1
     vi -r filename    recover filename that was being edited when system crashed
To Exit vi

Usually the new or modified file is saved when you leave vi. However, it is also possible to quit vi without saving the file.
Note: The cursor moves to bottom of screen whenever a colon (:) is typed. This type of command is completed by hitting the <Return> (or <Enter>) key.
*    :x<Return>    quit vi, writing out modified file to file named in original invocation
     :wq<Return>    quit vi, writing out modified file to file named in original invocation
     :q<Return>    quit (or exit) vi
*    :q!<Return>    quit vi even though latest changes have not been saved for this vi call
Moving the Cursor

Unlike many of the PC and MacIntosh editors, the mouse does not move the cursor within the vi editor screen (or window). You must use the the key commands listed below. On some UNIX platforms, the arrow keys may be used as well; however, since vi was designed with the Qwerty keyboard (containing no arrow keys) in mind, the arrow keys sometimes produce strange effects in vi and should be avoided.
If you go back and forth between a PC environment and a UNIX environment, you may find that this dissimilarity in methods for cursor movement is the most frustrating difference between the two.
In the table below, the symbol ^ before a letter means that the <Ctrl> key should be held down while the letter key is pressed.
*    j or <Return>
  [or down-arrow]    move cursor down one line
*    k [or up-arrow]    move cursor up one line
*    h or <Backspace>
  [or left-arrow]    move cursor left one character
*    l or <Space>
  [or right-arrow]    move cursor right one character
*    0 (zero)    move cursor to start of current line (the one with the cursor)
*    $    move cursor to end of current line
     w    move cursor to beginning of next word
     b    move cursor back to beginning of preceding word
     :0<Return> or 1G    move cursor to first line in file
     :n<Return> or nG    move cursor to line n
     :$<Return> or G    move cursor to last line in file
Screen Manipulation

The following commands allow the vi editor screen (or window) to move up or down several lines and to be refreshed.
     ^f    move forward one screen
     ^b    move backward one screen
     ^d    move down (forward) one half screen
     ^u    move up (back) one half screen
     ^l    redraws the screen
     ^r    redraws the screen, removing deleted lines
Adding, Changing, and Deleting Text

Unlike PC editors, you cannot replace or delete text by highlighting it with the mouse. Instead use the commands in the following tables.
Perhaps the most important command is the one that allows you to back up and undo your last action. Unfortunately, this command acts like a toggle, undoing and redoing your most recent action. You cannot go back more than one step.
*    u    UNDO WHATEVER YOU JUST DID; a simple toggle
The main purpose of an editor is to create, add, or modify text for a file.
Inserting or Adding Text

The following commands allow you to insert and add text. Each of these commands puts the vi editor into insert mode; thus, the <Esc> key must be pressed to terminate the entry of text and to put the vi editor back into command mode.
*    i    insert text before cursor, until <Esc> hit
     I    insert text at beginning of current line, until <Esc> hit
*    a    append text after cursor, until <Esc> hit
     A    append text to end of current line, until <Esc> hit
*    o    open and put text in a new line below current line, until <Esc> hit
*    O    open and put text in a new line above current line, until <Esc> hit
Changing Text

The following commands allow you to modify text.
*    r    replace single character under cursor (no <Esc> needed)
     R    replace characters, starting with current cursor position, until <Esc> hit
     cw    change the current word with new text,
starting with the character under cursor, until <Esc> hit
     cNw    change N words beginning with character under cursor, until <Esc> hit;
  e.g., c5w changes 5 words
     C    change (replace) the characters in the current line, until <Esc> hit
     cc    change (replace) the entire current line, stopping when <Esc> is hit
     Ncc or cNc    change (replace) the next N lines, starting with the current line,
stopping when <Esc> is hit
Deleting Text

The following commands allow you to delete text.
*    x    delete single character under cursor
     Nx    delete N characters, starting with character under cursor
     dw    delete the single word beginning with character under cursor
     dNw    delete N words beginning with character under cursor;
  e.g., d5w deletes 5 words
     D    delete the remainder of the line, starting with current cursor position
*    dd    delete entire current line
     Ndd or dNd    delete N lines, beginning with the current line;
  e.g., 5dd deletes 5 lines
Cutting and Pasting Text

The following commands allow you to copy and paste text.
     yy    copy (yank, cut) the current line into the buffer
     Nyy or yNy    copy (yank, cut) the next N lines, including the current line, into the buffer
     p    put (paste) the line(s) in the buffer into the text after the current line
Other Commands

Searching Text

A common occurrence in text editing is to replace one word or phase by another. To locate instances of particular sets of characters (or strings), use the following commands.
     /string    search forward for occurrence of string in text
     ?string    search backward for occurrence of string in text
     n    move to next occurrence of search string
     N    move to next occurrence of search string in opposite direction
Determining Line Numbers

Being able to determine the line number of the current line or the total number of lines in the file being edited is sometimes useful.
     :.=    returns line number of current line at bottom of screen
     :=    returns the total number of lines at bottom of screen
     ^g    provides the current line number, along with the total number of lines,
in the file at the bottom of the screen
Saving and Reading Files

These commands permit you to input and output files other than the named file with which you are currently working.

:r filename<Return>    read file named filename and insert after current line
(the line with cursor)
     :w<Return>    write current contents to file named in original vi call
     :w newfile<Return>    write current contents to a new file named newfile
     :12,35w smallfile<Return>    write the contents of the lines numbered 12 through 35 to a new file named smallfile
     :w! prevfile<Return>    write current contents over a pre-existing file named prevfile

[Linux-vi] The simple set of vi command的更多相关文章

  1. Linux学习笔记 (三)Vi文本编辑器

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  2. linux基础知识汇总(二)-vi/vim

    转:http://blog.csdn.net/sky04/article/details/5662582 vi与vim一样都是编辑器,不同的是vim更高级一些,可以理解是vi的高级版本.vi就像Win ...

  3. 每天一个linux命令(61):vi命令 /企业常用的linux命令清单

    vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...

  4. Day 6 Linux基础之正文处理、vi编辑和系统初始化和服务

    Linux基础之正文处理.vi编辑和系统化服务 一.正文处理命令及tar命令 1.归档 定义:归档(archiving)就是将许多文件(或目录)打包成一个文件. 目的:归档的目的就是方便备份.还原及文 ...

  5. Linux / UNIX create soft link with ln command

    How to: Linux / UNIX create soft link with ln command by NIXCRAFT on SEPTEMBER 25, 2007 · 42 COMMENT ...

  6. 【Linux高频命令专题(19)】vi/vim

    概述 其实在Linux中一切命令或者软件都是文件,所以把vi/vim作为高频命令专题之一,也没什么不妥.虽然大家都称之为编辑器~~ vim是vi的高级版本,比如有代码高亮,也就是说可以把vim定位为程 ...

  7. Linux学习之CentOS(二十)------vi/vim 按键说明

    vi/vim 按键说明 除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用. 第一部份:一般模式可用的光标移动.复制粘贴.搜索替换等 移动光标的方法 h 或 向左 ...

  8. Linux入门学习笔记1:VI常用命令

    常用命令 yy 复制 p 黏贴 shift+v 多行选中 shift+ctrl+< 左移 shift+ctrl+> 右移 ndd 删除光标所在行及其后n-1行 i 进入编辑状态 esc 退 ...

  9. linux ----> centos 网络、tomcat、vi、等等的配置和使用

    网络/配置 环境: centos6.8-mini-version virtualbox 工具: FileZilla client  SecureCRT 静态ip地址 每一台计算机分配有一个固定的IP地 ...

随机推荐

  1. How to create a Virtual Machine in SmartOS

    在SmartOS中,使用vmadm创建工具创建虚拟机. 此工具需要一个JSON有效负载,并使用输入JSON中指定的属性创建“kvm”或“joyent” brand zone. 正常输出是一系列单行JS ...

  2. Ansiable Manage MySQL global variables

    mysql_variables - Manage MySQL global variables New in version 1.3. Synopsis Requirements (on host t ...

  3. 部分2020年交期的PR回写到SAP中

    描述:此问题一直存在,只是用户没有发现,最近提出,部分2020年交期的PR回写到SAP中 优化: SELECT MAX (PR.ORDERID), PR.ITEM, SUBSTR (PR.RECOMM ...

  4. java基础四 [构造器和垃圾回收](阅读Head First Java记录)

    本章讲解了对象的创建到被回收的过程,讲述了对象的生命周期   堆(heap)与栈(stack) 实例变量:实例变量是只声明在类下,方法外的变量(实例变量默认值为0/0.0/false,引用的默认值为n ...

  5. C++ auto

    auto用来声明自动变量.它是存储类型标识符,表明变量(自动)具有本地范围.块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型. 好处:auto变量在离开作用域是会变程序自动释放,不 ...

  6. 苹果 重置APPID密保问题及更新开发者协议

    [链接]重置AppleID密保问题 https://www.jianshu.com/p/37e7f2852eda [链接]苹果开发者计划许可协议更新:持续更新 https://www.jianshu. ...

  7. 41-json.decoder.JSONDecodeError: Invalid control character at: line 6894 column 12 (char 186418)

    在使用python中将单词本的单词用正则匹配成字典后,以json存储,仪json读入,但是一直报错: 原因是: 正则处理后的数据有的出了点问题,导致一个字典的 有多个相同的键!!!,则肯定会报错啊!! ...

  8. php ZeroMQ 的使用

    一.ZeroMQ简介 ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 Socket Library,他使得 Socket 编程更加简单.简洁和性能更高.是一个消息 ...

  9. C语言跳表(skiplist)实现

    一.简介 跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入.删除.查找的复杂度均为O(logN).LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也 ...

  10. Debian9开机运行Python脚本

    吾星喵 关注 2018.04.14 15:30 字数 214 阅读 202评论 0喜欢 1 Debian9开机运行Python脚本 Debian 9.x "stretch" 解决 ...