vim

 

204624_9MMH_3127489.png204622_aUMI_3127489.png204623_AH0f_3127489.png204622_OyTc_3127489.png204623_iBLs_3127489.png204622_9UMV_3127489.png204622_9jCq_3127489.png

204646_4goq_3127489.png204646_wQ9t_3127489.png204646_JWXA_3127489.png204646_qpF8_3127489.png204646_sDwa_3127489.png204646_JhKi_3127489.png204646_Y4PN_3127489.png204646_WLl6_3127489.png

204658_lv7Z_3127489.png204658_nvrs_3127489.png204658_g4Pf_3127489.png204658_m1yy_3127489.png204658_TRxt_3127489.png204658_POHT_3127489.png

204711_sWsA_3127489.png204711_D4Es_3127489.png204711_AEVh_3127489.png

 

接下来,我们来完成一个稍稍复杂一点的任务,当然这个任务也将涉及到 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/gn1 与 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复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制
20 列(常用)
p, Pp 为将已复制的数据在光标下一行贴上, 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] 亦即是
退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续
删除 10 个字符, 『10x』。
dd删除游标所在的那一整列(常用)
nddn 为数字。删除光标所在的向下 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 autoindentautoindent 就是自动缩排, 不想要缩排就 :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 在编辑文件时发生意外崩溃或者退出后再打开同一文件

转载于:https://my.oschina.net/u/3127489/blog/1623740

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值