序言:
这是一个系列的博客,主要记录如何成长为一个常用的vim党。当然,这个系列的博客不会让你成为vim的专家。只是为了让你如何从一个小白成长为一个vim党。
文本编辑器是Linux操作系统中的最重要的工具,其中,vi是使用最多的文本编辑器之一,可以在任何shell中使用。vi是“visual editor”的缩写。作为系列博客的第一篇,本篇博客将带你走进vim,包括最为基本的vim的工作。当然并不会让你成为vim的专家。我也不是专家,作为最常见的vim党,一般需要了解不是很多的指令就可以完成正常的vim最为常见的工作。
vi(vim)编辑器概述
vim是从vi发展出来的一个文本编辑器,代码补完、编译及其错误跳转等方便编程的功能特别丰富。尤其是搞笑的代码读写率、高效的移动性。使其在程序员中被广泛的使用,vim和emacs并列成为UNIX/Linux系统最喜欢的编辑器。
编辑器也称为文本编辑器,用于处理文本处理的程序。而vi是一种屏幕编辑器,即一次可以看到整个屏幕的文本,可以在屏幕中随意移动的光标并选择文本的一个部分,也可以向上或者向下移动数据视图,当启动vi编辑器后,vi将指定的内容复制到缓冲区的内存空间以供用户编辑。如果没有指定打开的文件,则创建一个空的缓冲区。注意:缓冲区只是文件在内存中的临时存放处,启动vi的时候,vi将要编辑的文件从磁盘从读入缓冲区,在回话的过程中,vi将所做的修改保存在缓存区而不实时修改,因此在退出vi前如果不保存文件,对文件所做的修改将不复存在。所以在修改文件中一定要注意存盘之后在退出。
启动vim
启动vim可以直接运行vi或者vim命令。然后按下回车建,即可以出现下面的界面。
vim
注意,如果没有安装在debian中,需要使用下面的shell语法进行安装。
aptitude install vim
退出vi(vim)
退出vim先按下Esc键,然后输入下面的指令,退出vi(vim)后会立刻返回到shell提示符。
:q #退出vim
:q! #强行退出vim(不提示此次编辑的任何修改)
:wq #保存退出
:w myfilename #保存为指定的文件名退出
命令模式
用户可以输入命令,通过命令实现移动光标、删除、或者改动部分文档以及如赋值、粘贴、退出等操作。命令一经过输入就会被立即执行,不需要按下回车键。通过下面的命令可以将vi(vim)由命令模式切换到插入模式。当用户启动vi(vim)的时候,vi(vim)默认处于命令模式下。且不管在什么模式的下,用户只要按下Esc键,就会切换到命令模式下。
切换到插入模式的命令:
i #在当前字符之前插入文本
I #在当前行的行首插入文本
a #在当前字符之后追加文本
A #在当前行的行尾追加文本
o #在当前行的下面添加一新行
O #在当前行的上面添加一新行
vi(vim)中常用的命令
vim中命令很多。但是常用的命令出现的频率就是那几个,我们需要的就是熟练记忆那几个命令。
光标移动命令
光标移动命令只有在命令模式下才有效。
0 #移动光标到当前行的行首
$ #移动光标到当前行的行尾
H #将光标移动屏幕顶部的第一行的最左端
M #将光标移动屏幕中间
L #将光标移动到屏幕的尾部
突发奇想:vim对“单行”的长度是没有限制的,仅仅受限于可用的内存容量。而文件的的总长度受限于可用的磁盘和内存空间。
字符与块删除命令
在命令模式下,删除的命令分2种,一种是字符删除命令,一种是块删除命令。
删除字符使用x/X字符。
x #删除当前字符
X #删除当前光标左侧字符
D #删除到行的末尾
dd #删除一行
3dd #删除当前行开始的3行
复制文本、粘贴文本命令
复制命令实际上把指定的文本内容复制到通用的缓冲区,复制命令包含y、Y命令。都是需要在命令模式下使用。
命令yy可以复制一行,默认为当前行,如果需要赋值多行,可以在命令yy前指定行数,
3yy #复制当前行开始的3行文本
5Y #复制当前行开始的5行文本
粘贴命令实际上是把通用缓冲区的内容复制到当前的位置 ,粘贴命令包括p、P命令。都是需要在命令模式下使用。
p # 将通用缓冲区的内容粘贴到当前字符之后
P #将通用缓冲区的内容粘贴到当前字符之前
vi(vim)中的字符与文件操作
vi(vim)可以在整个缓冲区查找与正则表达式相匹配的字符串,在命令模式下,键入斜杠(/)后跟带查找的字符串(称为搜索字符串),按下回车键,vi(vim)即可开始搜索。当然,搜索成功,光标就是停留在首次匹配该字符窜的第一个字符处。如果向后搜索到文件的末尾仍然没有搜索成功,则这回到缓冲区的开始继续搜索。同样,在向前搜索的文件头仍然没有找到搜索的字符串,则返回到缓冲区的末尾继续搜索。按下n键可以向后重复上一次搜索,按下N建可以向前重复上次搜索。
替换指定的字符串
在末行模式(在命令模式下加上:)的替换命令具有查找与修改双重功能。替换命令首先查找某个字符串(匹配搜索字符串的字符串),然后修改字符串。末行模式下的替换命令s语言如下:
:[g] [address] s/search/replacement [/option]
#g 表示在所有行中进行查找和替换。address表示查找的范围,默认为当前行。
#address应用示例
3 #第三行
22,100 #从22行到100
5,. #从第5行到当前行
5,$ #从第5行到末尾
% #整个缓冲区
g/pattern/ #包括字符串pattern的所有行
/pattern #搜索到的首次包含字符串pattern的行
.,. +20 #从当前行开始向后的连续20行
.,. -10 #从当前行开始向前的连续10行
#查找与替换命令说明
:s /string1/string2 #将当前行第一次搜索到的字符串string1替换为string2
:1,.s/string1/string2/g #将当前行之前的所有行中的字符串string2替换为string2
:1,$s/string1/string2/g #将所有行中出现的字符串string1替换为strin2
:/string/s/string1/striing2/g #将首次出现字符串string的行中字符串string1替换为string2
更改大小写命令
在命令模式下,(~)可以更改字母的大小写。可以将小写字符改为大写。
显示状态信息命令
显示文件的状态信息通常有2种方式,在命令模式下,按下Ctrl + G 组合键和在末行模式下使用命令:f
通常情况下:会显示文件的状态信息,包括文件名、行数、当前行号等等。
小结:
vim是一个自由软件,但是程序的开发者建议用户在使用这写自由软件的同时,为乌干达的孩子捐一点款,通过使用命令:help uganda 可以看到有关捐助。
同时,vim中最为强大的部分我还木有讲到,因为在Linux哲学思维中有这样的一条:只做一件事情。
正是因为这样,所以vim才做的非常好。我们现在掌握了最为基本的vim知识,下系列的博客我会深入的记录vim 中如何搭建编译器?或者说vim的众多的插件功能等等!当然。这些基本都是以这篇博客为基础。