vim 中⽂⽤户⼿册
⽬录
1. Vim基础
2. 移动
3. 做⼩改动
4. 使⽤语法⾼亮
5. 分隔窗⼝
6. 做⼤修改
7. ⼩窍⻔
vim 基础
1. 第⼀次运⾏vim
2. 插⼊⽂本
3. 移动光标
4. 删除字符
5. 撤销与重做
6. 其它编辑命令
7. 退出
8. 寻求帮助
9. 返回⽬录
第⼀次运⾏vim
在 UNIX 操作系统中,你可以在任意命令提示符下输⼊这个命令。如果你⽤的是 Microsoft
Windows,启动⼀个 MS-DOS 窗⼝,再输⼊这个命令。
⽆论哪⼀种⽅式,现在 Vim 开始编辑⼀个名为 file.txt 的⽂件了。由于这是⼀个 新建⽂件,你会得
到⼀个空的窗⼝。屏幕看起来会像下⾯这样:
以波纹线 (~) 开头的⾏表示该⾏在⽂件中不存在。换句话说,如果 Vim 打开的⽂件不能 充满这个
显示的屏幕,它就会显示以波纹线开头的⾏。在屏幕的底部,有⼀个消息⾏指示 ⽂件名为 file.txt
并且说明这是⼀个新建的⽂件。这⾏信息是临时的,新的信息可以覆 盖它。
gvim 命令建⽴⼀个新窗⼝⽤于编辑。如果你⽤的是这个命令: vim file.txt ,则编辑在命令窗
⼝内进⾏。换句话说,如果你在 xterm 中运⾏,编辑器使⽤ xterm 窗 ⼝。如果你⽤的是
Microsoft Window 的 MS-DOS 窗⼝,编辑器使⽤这个 MS-DOS 窗⼝。 两个版本显示出来的⽂本
看起来是⼀样的。但如果你⽤的是 gvim,就会有其他特性,如 菜单栏。后⾯会有更多的描述。
插⼊⽂本
Vim 是⼀个 多模式 的编辑器。就是说,在不同模式下,编辑器的响应是不同的。在 普通模式 下,
你敲⼊的字符只是命令;⽽在 插⼊模式 ,你敲⼊的字符就成为插⼊的⽂本了。
当你刚刚进⼊ Vim,它处在普通模式。通过敲⼊ "i" 命令 ( i 是插⼊ ( Insert ) 的 缩写) 可以启动
插⼊模式,这样你就可以输⼊⽂字了,这些⽂字将被插⼊到⽂件中。不⽤担⼼输错了,你随后还能
够修正它。
按 <Esc> 键退出插⼊模式⽽回到普通模式,如果不清楚当前处于什么模式,可以在命令⾏模式下
输⼊以下命令查看:
你会发现当你敲⼊冒号后,Vim 把光标移到窗⼝的最后⼀⾏。那⾥是你输⼊ "冒号命令" (以冒号开
头的命令) 的地⽅,敲⼊回⻋结束这个命令的输⼊ (所有的冒号命令都⽤这种 ⽅式结束)。
现在,如果你输⼊ "i" 命令,Vim 会在窗⼝的底部显示 --INSERT-- (中⽂模式显示 的是 --插⼊--
),这表示你在插⼊模式。
移动光标
回到普通模式后,你可以使⽤如下命令移动光标:
:set showmode
按键 ⽅向
h 左
j 下
k 上
l 右
删除字符
删除⼀个字符
把光标移到它上⾯然后输⼊ "x" 。(这是对以前的打字机的⼀种回归, 那时你通过在字符上输
⼊ xxxx 删除它) 。
删除⼀整⾏
使⽤ "dd" 命令,后⼀⾏会移上来填掉留下的空⾏
删除⼀个换⾏符
在 Vim 中你可以把两⾏连起来,这意味着删除两⾏间的换⾏符。 "J" 命令⽤于完成这个 功
能。以下⾯两⾏为例:
把光标移到第⼀⾏,然后按 "J":
撤销与重做
撤销
假设现在你删得太多了。当然,你可以重新输⼊需要的内容。不过,你还有⼀个更简单的 选
择。 "u" 命令撤销上⼀个编辑操作。看看下⾯这个操作: 先⽤ "dd" 删除⼀⾏,再敲 "u" ,该
⾏⼜回来了。
再给⼀个例⼦: 把光标移到第⼀⾏的 A 上:
现在输⼊ 输⼊7次 x 命令 删除 "A young" 。结果如下:
输⼊ "u" 撤销最后⼀个删除操作。那个删除操作删除字符 g,所以撤销命令恢复这个字符:
A young intelligent
turtle
A young intelligent turtle
A young intelligent turtle
intelligent turtle
下⼀个 "u" 命令恢复倒数第⼆个被删除的字符:
下⼀个 "u" 命令恢复 u,如此类推:
注意: 如果你输⼊ "u" 两次,你的⽂本恢复原样,那应该是你的 Vim 被配置在 Vi 兼
容模式了。要修正这个问题,看看这⾥: not-compatible 。 本⽂假定你⼯作在 "Vim 的⽅
式"。你可能更喜欢旧的 Vi 的模式,但是你必须 ⼩⼼本⽂中的⼀些⼩区别。
重做
如果你撤销得太多,你可以输⼊ CTRL-R (redo) 回退前⼀个命令。换句话说,它撤销⼀
个撤销。要看执⾏的例⼦,输⼊ CTRL-R 两次。字符 A 和它后⾯的空格就出现了:
有⼀个特殊版本的撤销命令: "U" (⾏撤销)。⾏撤销命令撤销所有在最近编辑的⾏上的操 作。
输⼊该命令 两次 取消前⼀个 "U" :
"U" 命令本身就是⼀个改变操作, "u" 命令撤销该操作, CTRL-R 命令重做该操作。有点 乱
吧,但不⽤担⼼,⽤ "u" 和 CTRL-R 命令你可以切换到任何你编辑过的状态。
其它编辑命令
添加
g intelligent turtle
ng intelligent turtle
ung intelligent turtle
oung intelligent turtle
young intelligent turtle
young intelligent turtle
A young intelligent turtle
young intelligent turtle
A very intelligent turtle
xxxx 删除 very
A intelligent turtle
xxxxxx 删除turtle
A intelligent
A very intelligent turtle
⽤ "U" 恢复⾏ ⽤ "u" 撤销 "U"
A intelligent
"i" 命令在光标所在字符前⾯插⼊字符。⼀般情况下,这就够⽤了,但如果你刚好想在 ⾏尾
加东⻄怎么办?要解决这个问题,你需要在⽂本后插⼊字符。这通过 "a" (append, 附加)
命令实现。
例如,要把如下⾏
把光标移到⾏尾的句号上。然后输⼊ "x" 删除它。现在光标处于⼀⾏的尾部了,现在输⼊
添加三个感叹号到 turtle 的 "e" 后⾯:
开始⼀个新⾏
"o" 命令在光标下⽅建⽴⼀个新的空⾏,并把 Vim 切换到插⼊模式。然后你可以在这个 新
⾏内输⼊⽂本。假定你的光标在下⾯两⾏中第⼀⾏的某个地⽅:
如果你现在⽤ "o" 命令并输⼊新的⽂字:
结果会是:
"O" 命令 (⼤写) 在光标上⽅打开⼀个新⾏。
指定计数
假定你想向上移动 9 ⾏,你可以输⼊ "kkkkkkkkk" 或者你可以输⼊ "9k" 。实际上,你可
以在很多命令前⾯加⼀个数字。例如在这章的前⾯,你通过输⼊ "a!!!<Esc>" 增加三个 感
叹号。另⼀个⽅法是使⽤命令 "3a!<Esc>" 。计数 3 要求把后⾯的命令执⾏三次。同样的,
要删除三个字符,可以使⽤ "3x" 。计数总是放在要被处理多次的命令的前⾯。
退出
退出
使⽤ "ZZ" 命令可以退出。这个命令保存⽂件并退出。
and that’s not saying much for the turtle.
#改为
and that’s not saying much for the turtle!!!
a!!!<Esc>
A very intelligent turtle
Found programming UNIX a hurdle
oThat liked using Vim<Esc>
A very intelligent turtle
That liked using Vim
Found programming UNIX a hurdle