# 2006-06-12  vi cheatsheet

编辑: 把下一行挪到当前行的末尾，在Windows下很简单--在当前行末尾按del或者在下一行的开头按bs就可以了， 而在vi里面是要在当前行任意位置按J（大写的J，也就是Shift+j）

快速保存退出： 很多人习惯用标准的 :wq！ 保存退出，不过我更喜欢按Shift+z+z，也就是ZZ，一样的。

查找: /sometext 从当前向后找 ?sometext 从当前向前找 (这两个命令执行后 按n继续向后找 按N继续向前找) :g/sometext/

前者直接定位到单词上，后者仅仅是定位到那一行上

ex命令扩展：

vi下有一个ex命令模式可以用ex命令来进行快速编辑操作，基本的模式是：

\[范围] g\[lobal] /模式/ \[ex命令] 在指定的"范围"内，对匹配"模式"的行执行"ex命令"

\[范围] v\[lobal] /模式/ \[ex命令] 在指定的"范围"内，对不匹配"模式"的行执行"ex命令"

如果没有指定"范围"，则默认为全部。 如果没有制定"ex命令"，则默认是显示结果。 "模式"即正则表达式。 "ex命令"在编辑方面，大致有 m（移动）s（替换）d（删除）

例子：

:g/^/m0 会从第一行开始把每一行移动到第一行之后，结果就是所有行逆序反转

:g/127.0.0.1/s/http/ftp/g 对包含127.0.0.1的行，将http替换为ftp

:g/127.0.0.1/s/^/\t/g 对包含127.0.0.1的行，每行之前加一个制表符（TAB）

:g/127.0.0.1/d 删除包含127.0.0.1的行

如果命令的内容中包含/字符，可以选择转义 \\/ 或者把ex的命令分隔符/换成别的字符（例如\~@#$%等）。例如要把包含/home的行中的/simon删除：

:g/\\/home/ s/\\/simon//g 用转义字符输入/

:g#/home#s#/simon##g 用#作为命令分隔符，则字符/可以直接使用了

查找-替换: 通常情况下查找替换的ex命令是 :%s/oldtext/newtext/g

下面是对这个命令的解释 : 表示进入ex的命令模式 % 是表示ex命令的source的范围. 后面的命令在该范围内执行. 该范围有多种表达方式: % 表示全文 $ 表示到行尾 . 表示当前行 x,y 表示从第x行到y行, 例如 10,20s/oldtext/newtext/ 此外还可以用其它的ex搜索命令表达范围 g/sometext/ 表示包含sometext的行

s 是ex的替换命令 /.../.../ 表示"搜索-替换"的内容. g 是表示替换所有. 默认s只执行一次

-= 例子1 =- :10,20s/^/ / 把第10到20行的前面加上4个空格 可以分解为 : 10,20 s /^/ /

-= 例子2 =- :g/small/s/^/#/ 把所有包含small的行都加上注释# g/small/ 查找包含small的行 /^/ 表示第一个非空白字符 可以分解为 g/small/ s /^/#/


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.log4think.com/vi-cheatsheet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
