接下来,我们来完成一个稍稍复杂一点的任务,当然这个任务也将涉及到 vim
更加高级的一些命令。 我们要完成的任务是这样的:
1. 请在 /tmp 这个目录下建立一个名为 vimtest 的目录, 进入 vimtest 这个目
录当中, 将 /etc/man.config 拷贝到本目录底下, 使用 vim 打开这个文本文
件;
2. 在 vim 中设定一下行号;
3. 移动到第 58 行行首, 再向右移动 30 个字符,移动到第 8 行行尾,再向左
移动 3 个单词;
4. 移动到第一行行首,并且向下搜寻一下『man 』这个字符串;
5. 将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修
改
6. 复制 51 到 60 行这十行的内容,并且贴到最后一行之后;
7. 删除 11 到 30 行之间的 20 行;
8. 去第 29 行首,并且删除 15 个字符;
9. 修改完之后,突然反悔了,要全部复原;
10. 将这个文件另存成一个 名为 man.config.bak 的文件;
11. 在最后一行后插入错误!未找到引用源。 中所示的字样,并保存;
12. 在不关闭 man.config.bak 的文件情况下,再次打开 man.config;
13. 将步骤 11 中在 man.config.bak 中输入的字样的第 1 列到第 10 列拷贝并粘
贴到 man.config 中;
14. 储存两个文件后离开 vim。
1. 打开文件
[root@localhost ~]# mkdir /tmp/vimtest
[root@localhost ~]# cd /tmp/vimtest
[root@localhost ~]# cp /etc/man.config .
[root@localhost ~]# vim /tmp/vimtest/man.config
2. 设置行号
用“:set nu”命令来设置行号,设置后应如下所示, 可以用“:set nonu”来
取消行号设置。
3. 移动
用“数字+移动方向”来进行快捷移动,如我们可以用“3j” 来从当前行向下
移动 3 行,也可以用“数字+G”或者“数字+$”指定移动到某行行首或者行尾,
如我们可以用“3G”来移动到第 3 行行首。
用“gg”移动到首行行首,再用“57j”移动到第 58 行行首;也可以使
用“58G”直接移动到第 58 行行首;
用“40l”向右移动 40 个字符;
用“7G”移动到第 7 行行首,用“$”移动到本行行尾,“3b”向左移动
3 个单词。
表 vim 移动命令
命令键 命令用途 h 或 (←) 光标向左移动一个字符 j 或 (↓) 光标向下移动一个字符 k 或 (↑) 光标向上移动一个字符 l 或 (→) 光标向右移动一个字符 [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键
(常用)[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键
(常用)[Ctrl] + [d] 屏幕『向下』移动半页 [Ctrl] + [u] 屏幕『向上』移动半页 0 光标移动到这一行的最前面字符处 (常用) $ 光标移动到这一行的最后面字符处(常用) H 光标移动到这个屏幕的最上方那一行 M 光标移动到这个屏幕的中央那一行 L 光标移动到这个屏幕的最下方那一行 G 光标移动到这个文件的最后一行(常用) gg 光标移动到这个文件的第一行 (常用) <Enter> 光标向下移动 1 行(常用) w 光标向右移动 1 个单词 b 光标向左移动 1 个单词 其中 h、 j、 k、 l、 $、 <Enter>、 G、 w、 b 均可以与数字组成组合键,如
“30j”表示向下移动 30 行, 30G 表示移动到本文件的第 30 行。
4. 查找替换
用“gg”移动到首行行首,用键入“/man” 来查找“man”字符串,用
“n”和“N”来遍历所有的“man”字符串;
用“:50,100s/man/MAN/gc”来用 MAN 替换 50 到 100 行之间的 man,
vim 会逐个在替换前询问你是否替换。
替换字符串
表 vim 查找和替换命令
命令键 命令用途 /word 从光标所在往下查找一个名为 “word” 的字符串。
如要在文件内查找“man”这个字符串,就输入
/man (常用)?word 向光标所在往上查找一个名为 “word” 的字符串。 n 表示重复前一次查找。如果刚刚我们执行 /man 去
向下查找“man”这个字符串,则按下 n 后,会向
下继续查找下一个名为“man”的字符串“。如果
是执行 ?man 的话,那么按下 n 则会向上继续查
找名为“man”的字符串N 表示“反向”执行前一次查找。 例如 /man 后,
按下 N 则表示从光标处向上查找 “man” 。:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间查找
word1 这个字符串,并用 word2 来替代, 例如在
100 到 200 行之间搜寻 man 并取代为 MAN 则可
以写作:“:100,200s/man/MAN/g”。 (常用):1,$s/word1/word2/g 在整个文件中查找 word1 这个字符串,并用
word2 来替代(常用):1,$s/word1/word2/gc 在整个文件中查找 word1 这个字符串,并用
word2 来替代, 且在取代前显示提示字符给使用者
确认 (conform) 是否需要取代! (常用)
5. 复制粘贴
用“50G”来到文本的第 50 行,再用“10yy”复制 51 行到 60 行;
用“G”来到文件的最后 1 行,再用“p”进行粘贴。
在最后粘贴了 51 到 60 行之间的内容
表 vim 复制和粘贴命令
命令键 命令用途 yy 复制游标所在的那一行(常用) nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制
20 列(常用)p, P p 为将已复制的数据在光标下一行贴上, P 则为贴在游标上
一行! 举例来说,我目前光标在第 20 行,且已经复制了
10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20
行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么
原本的第 20 行会被推到变成 30 行。 (常用)
6. 删除
用“10G”来到文本的第 10 行,再用“20dd”复制 11 行到 30-行;
用“29G”来到文本的第 29 行首,再用“15x”删除 15 个字符。
表 vim 删除命令
命令键 命令用途 x, X 在一行字当中, x 为向后删除一个字符 (相当于 [del] 按
键), X 为向前删除一个字符(相当于 [backspace] 亦即是
退格键) (常用)nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续
删除 10 个字符, 『10x』。dd 删除游标所在的那一整列(常用) ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删
除 20 列 (常用)
7. 撤销和重复
用“u”来撤销直到所有操作都被恢复(或者直接用“:e!”来恢复);
表 vim 撤销和重复命令
命令键 命令用途 u 撤销前一个动作。 (常用) [Ctrl]+r 重做上一个动作。 (常用) :e! 将文件还原到最原始的状态
8. 打开、保存和退出
用“:w man.config.bak” 将文件另存;
用“i”切换到编辑模式, 将错误!未找到引用源。 中所示的字样输入,用“w”
保存;
表 vim 打开、保存和退出命令
命令键 命令用途 :w 将编辑的数据写入硬盘档案中(常用) :w! 若档案属性为『只读』时,强制写入该档案。不过,到底能
不能写入, 还是跟您对该档案的档案权限有关啊!:q 离开 vi (常用) :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存
档案。:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用) ZZ 若文件没有更动,则不储存离开,若文件已经经过更动,则
储存后离开:w [filename] 将编辑的数据储存成另一个文件(类似另存新文件)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将
『filename』 这个档案内容加到游标所在行后面:n1,n2 w
[filename]将 n1 到 n2 的内容储存成 filename 这个文件。
9. 同时编辑多个文件
vim 提供了同时编辑多个文件的功能,在 vim 后面同时可以接多个文件名,
用户来同时打开多个文件。 vim 同时提供了在多个窗口打开文件的功能,输入
“:sp 文件名”命令即可在不关闭当前文件的情况下打开新文件。
可用“ZZ” 先退出 vim,然后用“vim 文件名 1 文件名 2… 文件名 n”
打开多个文件,如这里可以用“vim man.config.bak man.config”同时打
开这两个文件,然后用“:n”和“:N”在这两个文件间切换。
或者用“:sp man.config”直接打开此文件,并用“[ctrl]+wj”和“[ctrl]+wk”,
在这两个文件间切换。
表 vim 打开多个文件命令
命令键 命令用途 :n 编辑下一个文件 :N 编辑上一个文件 :files 列出目前这个 vim 的打开的所有文件 :sp [filename] 开启一个新窗口,如果有加 filename, 表示在新窗口开启
一个新文件,否则表示两个窗口为同一个文件内容(同步显
示)。[ctrl]+wj 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有
的按键,然后再按下 j ,则光标可移动到下方的窗口。[ctrl]+wk 同上,不过光标移动到上面的窗口。 [ctrl]+wq 要结束下方窗口,那么利用 [ctrl]+wj 移动到下方窗口,按
下 :q 即可, 也可以按下 [ctrl]+wq
10. 可视模式
vim 提供了一种可视模式,按 Esc 键,然后按 Ctrl+v 就进入可视模式。可视
模式为我们提供了极为友好的选取文本范围,以高亮显示;在屏幕的最下方显示
有-- 可视 -- 或--VISUAL--进入可视模式,我们就可以用前面所说的命令行模式
中的光标移动指令,可以进行文本范围的选取。
切换到 man.config.bak 中;
按下“ctrl+v” 进入可视模式下的区块选择模式,用光标选中要拷贝的区
域(这些区域会反白);
按下“y”进行拷贝;
切换到 man.config 中,按“G”来到最后一行,按下“p”进行粘贴。
表 vim 可视模式下的选择、复制和删除命令
命令键 命令用途 v 字符选择,会将光标经过的地方反白选择 V 行选择,会将光标经过的行反白选择 [Ctrl]+v 区块选择,可以用长方形的方式选择文本 y 将反白的地方复制起来
d 将反白的地方删除掉
可视模式下的区块选择和粘贴
11. 环境配置
vim 提供了环境设定功能,利用 vim 的环境设定,可以给我们的工作提供非
常大的一个帮助。 vim 的环境设定参数有很多,可以在一般模式时输入:“ :set
all” 来查阅,这里仅列出一些平时比较常用的一些简单的设定值。
表 vim 的环境配置命令
命令键 命令用途 :set nu 设定行号,取消的话,就是 :set nonu :set hlsearch 是否将搜寻的字符串反白。 默认值就是 hlsearch ,如果
不想要反白,就 :set nohlsearch 。:set autoindent autoindent 就是自动缩排, 不想要缩排就 :set
noautoindent 。:set backup 是否自动储存备份档,一般是 nobackup 的, 如果设定
backup 的话,那么当你更动任何一个档案时,则源文件会
被另存成一个档名为 filename~ 的档案。:set ruler 右下角是否显示状态列说明 :set
showmode这个则是,是否要显示 --INSERT-- 之类的字眼在左下角的
状态列。:set all 显示目前所有的环境参数设定值。 :syntax (off|on) 是否依据程序相关语法显示不同颜色? 举例来说,在编辑
一个纯文字文件时,如果开头是以 # 开始,那么该行就会
变成蓝色。 但是, 如果您仅是编写纯文本文件,要避免颜
色对您的屏幕产生的干扰,则可以取消这个设定 :syntax
off 。
12. 暂时存档文件和恢复
当编辑一个文件时,在这个文件所处的目录底下就会有一个临时文件,文件
名为“编辑的文件名.swp”这是一个隐藏文件, 所有修改都会暂时存在这个文件
中。 在编辑过程中,系统或者 vi 非正常关闭了,那么再重新用 vi 打开这个文件
时时,系统就会询问要回复『Recovery』。按下 (R) ,就可以将数据回复到修改
过程的样子,再将 swp 文件删除。
vim 在编辑文件时发生意外崩溃或者退出后再打开同一文件