vim(编辑器之神)01基础篇(三) vim指令补充说明

在前面一篇中,对vim中涉及到的基本指令都进行了介绍说明。本文就vim涉及到的较实用的几个指令进行系统的介绍。

1. 书签

书签的作用是对某个位置进行标记(例如,ma就将当前光标位置标记为书签a);当我们在其他位置,并且想快速到之前所标记的位置时,就可以通过书签进行跳转(例如,'a就可以跳转回书签a)。

m{a-zA-Z}  保存书签。例如,ma是保存书签a;而mA则是保存书签A。  
    (01) 小写书签是局部书签,它仅在编辑当前文件时才有效。例如,vim中同时编辑了3个文件,而且"文件1"中有局部书签a;则"文件2"和"文件3"无法识别到"文件1的书签a"。注意:"文件2"和"文件3"都可以有自己的局部书签a。  
    (02) 大写书签是全局书签,它在编辑任何文件时都有效。例如,vim中同时编辑了3个文件,而且"文件1"中有全局书签A;则"文件2"和"文件3"也能识别到书签A;在编辑"文件2"时,也可以跳转到书签A。  
'{a-zA-Z}  跳转到某个书签;并且光标位于书签行的行首。
`{a-zA-Z}  跳转到某个书签;并且光标位于书签行中"标记书签时光标所在位置"。
'0  跳转到上一次退出vim时编辑的文件中
''  跳转到上一次跳转时的位置;并且光标位于行首。
``  跳转到上一次跳转时的位置;并且光标位于"上一次跳转是的位置处光标所在位置"。
g'{mark}  跳转到书签
:delm{marks}  删除一个书签 。例如,delma那么就删除了书签a
:delm!  删除全部书签。
:marks  显示系统全部书签。

2. 复制/粘贴

2.1 基本的复制/粘贴

示例:如果我们想拷贝vim中的某行到指定位置。先将光标移动到被拷贝的地方,然后按yy进行拷贝。接着,将光标移到到粘贴位置,按p进行粘贴。

yy只能拷贝单行内容。如果想要拷贝多行,则可以通过nyy进行拷贝;其中,n是整数。例如,5yy就拷贝5行内容。

缺点:通过yy或nyy拷贝的内容,不能够重复使用!准确点说,假如执行了两次yy,即执行了两次拷贝动作;那么,第二次的拷贝会将第一次的拷贝覆盖!
那么有没有办法让被拷贝的内容可以被重复使用呢?答案是有!这就需要了解系统粘贴板。

2.2 系统复制/粘贴

vim提供了系统粘贴板,系统呢粘贴板可以重复使用。系统粘贴板的使用示例如下:

(01) 拷贝5行内容,并将这5行内容放到系统粘贴板a中。

"a5yy

说明:"a的意思是将后面存储到系统粘贴板a中。当然,这里的a可以是{a-z}中的任意一个字母!

(02) 将系统粘贴板a的内容粘贴到光标所在位置。

"ap

3. 文本搜索

在当前文本中查找某个关键字,通常有两种方式:光标定位 或 输入定位。

3.1 光标定位搜索

光标定位搜索很简单,先将光标移到要搜索的文本上。然后按*或#进行搜索。
(01) 按*是向下搜索。接着,按n将光标定位到下一个匹配文本处,按N将光标定位到上一个匹配文本处。
(02) 按#是向上搜索。接着,按n将光标定位到下一个匹配文本处,按N将光标定位到上一个匹配文本处。

3.2 输入定位搜索

输入定位搜索的操作方式也比较简单。例如,要搜索"hello",输入/hello即可;具体步骤如下。

(01) 输入斜杠,即/  
(02) 输入待搜索文本,即hello。
(03) 按回车进行搜索。  
(04) 接着,按n将光标定位到下一个匹配文本处,按N将光标定位到上一个匹配文本处。  

上面的搜索方式将所有包含hello的关键字都会搜索出来,而且不会区分大小写,即会将hello, HELLO, header_hello, HELLO_tail都搜索出来。如果想执行比较特殊的搜索,可以通过以下方式实现:
第一, 完全匹配搜索
     即,只想搜索hello,而不是所有包含hello的关键字。则可以通过输入/\<hello>来实现。
第二, 区分大小写
     区分大小些,输入指令:set noignorecase。不区分大小写,则输入指令:set ignorecase

光标定位搜索和输入定位搜索相比各有所长。光标定位的优点是快捷、方便,缺点是只能进行关键字查找,不能进行文本搜索;而输入定位虽然没有光标定位快捷,但是它支持文本搜索,而且支持正则表达式!

4. 替换

以几个示例来对替换进行介绍。

4.1 示例一

将所有的hello替换到成hi。通过指令:%s/hello/hi/g来实现。

4.2 示例二

将完全匹配hello的关键字替换到成hi。通过指令:%s/\<hello\>/hi/g来实现。

4.3 示例三

将第20~30行中完全匹配hello的关键字替换到成hi。通过指令:20,30s/\<hello\>/hi/g来实现。

4.4 示例四

将当前行完全匹配hello的关键字替换到成hi。通过指令:.s/\<hello\>/hi/g来实现。

by skywang
Previous     Next