21 Vim 基本操作(一)

1. 简介

Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件。进入Vim编辑程序,可以在终端输入下面的命令:

$vim [filename]

其中filename是要编辑器的文件的路径名。如果文件不存在,它将为你建立一个新文件。Vim编辑程序有三种操作模式,分别称为 编辑模式插入模式命令模式,当运行Vim时,首先进入编辑模式。

2. 编辑模式

Vim编辑方式的主要用途是在被编辑的文件中移动光标的位置。一旦光标移到到所要的位置,就可以进行剪切和粘贴正文块,删除正文和插入新的正文。当完成所有的编辑工作后,需要保存编辑器结果,退出编辑程序回到终端,可以发出ZZ命令,连续按两次大写的Z键。

2.1 跳转

如果键盘上有上、下、左、右箭头的导航键,就由这些键来完成光标的移动。另外,可以用下面的键完成同样的 按字符移动 功能:

k   上移;
j   下移;
h   左移;
l   右移。

上面这4个键将光标位置每次移动一行或一个 字符 。Vim还提供稍大范围移动光标的命令:

ctrl+f    在文件中前移一页(相当于 page down);
ctrl+b   在文件中后移一页(相当于 page up);

更大范围的移动:

*       当光标停留在一个单词上,* 键会在文件内搜索该单词,并跳转到下一处;
#       当光标停留在一个单词上,# 在文件内搜索该单词,并跳转到上一处;
(/)     移动到 前/后 句 的开始;
{/}     跳转到 当前/下一个 段落 的开始。
g_      到本行最后一个不是 blank 字符的位置。
fa      到下一个为 a 的字符处,你也可以fs到下一个为s的字符。
t,      到逗号前的第一个字符。逗号可以变成其它字符。
3fa     在当前行查找第三个出现的 a。
F/T     和 f 和 t 一样,只不过是相反方向;
gg      将光标定位到文件第一行起始位置;
G       将光标定位到文件最后一行起始位置;
NG或Ngg 将光标定位到第 N 行的起始位置。

在屏幕中找到需要的 一页 时,可以用下面的命令快速移动光标:

H 将光标移到屏幕上的起始行(或最上行);
M 将光标移到屏幕中间;
L 将光标移到屏幕最后一行。

同样需要注意字母的大小写。HL命令还可以加数字。如 :

2H    表示将光标移到屏幕的第2行,
3L    表示将光标移到屏幕的倒数第3行。

当将光标移到所要的行时,行内移动 光标可以用下面的命令来实现:

w   右移光标到下一个字的开头;
e   右移光标到一个字的末尾;
b   左移光标到前一个字的开头;
0   数字0,左移光标到本行的开始;
$   右移光标,到本行的末尾;
^   移动光标,到本行的第一个非空字符。

2.2 搜索匹配

和许多先进的编辑器一样,Vim 提供了强大的字符串搜索功能。要查找文件中指定字或短语出现的位置,可以用Vim直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符/, 后面跟以要搜索的字符串,然后按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的开头;键入n 命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符 ?取代 /,可以实现反向搜索(朝文件开头方向)。例如:

/str1       正向搜索字符串 str1;
n           继续搜索,找出 str1 字符串下次出现的位置;
N           继续搜索,找出 str1 字符串上一次出现的位置;
?str2       反向搜索字符串 str2 。

无论搜索方向如何,当到达文件末尾或开头时,搜索工作会循环到文件的另一端并继续执行。Vim中执行搜索匹配最强大的地方是结合 正则表达式 来搜索,后续将会介绍。

2.3 替换和删除

Vim常规的删除命令是 dx(前者删除 行,后者删除 字符),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行。例如:

rc       用 c 替换光标所指向的当前字符;
nrc      用 c 替换光标所指向的前 n 个字符;
5rA      用 A 替换光标所指向的前 5 个字符;
x        删除光标所指向的当前字符;
nx       删除光标所指向的前 n 个字符;
3x       删除光标所指向的前 3 个字符;
dw       删除光标右侧的字;
ndw      删除光标右侧的 n 个字;
3dw      删除光标右侧的 3 个字;
db       删除光标左侧的字;
ndb      删除光标左侧的 n 个字;
5db      删除光标左侧的 5 个字;
dd       删除光标所在行,并去除空隙;
ndd      删除(剪切) n 行内容,并去除空隙;
3dd      删除(剪切) 3 行内容,并去除空隙;

其他常用的删除命令有:

d$      从当前光标起删除字符直到行的结束;
d0      从当前光标起删除字符直到行的开始;
J       删除本行的回车符(CR),并和下一行合并。

Vim常规的替换命令有 c和 s,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由 编辑模式 进入 插入模式

s       用输入的正文替换光标所指向的字符;
S       删除当前行,并进入编辑模式;
ns      用输入的正文替换光标右侧 n 个字符;
nS      删除当前行在内的 n 行,并进入编辑模式;
cw      用输入的正文替换光标右侧的字;
cW      用输入的正文替换从光标到行尾的所有字符(同 c$ )
ncw     用输入的正文替换光标右侧的 n 个字;
cb      用输入的正文替换光标左侧的字;
ncb     用输入的正文替换光标左侧的 n 个字;
cd      用输入的正文替换光标的所在行;
ncd     用输入的正文替换光标下面的 n 行;
c$      用输入的正文替换从光标开始到本行末尾的所有字符;
c0      用输入的正文替换从本行开头到光标的所有字符。

2.4 复制粘贴

从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。完成这一操作的命令是:

p       小写字母 p,将缓冲区的内容粘贴到光标的后面;
P       大写字母 P,将缓冲区的内容粘贴到光标的前面。

如果缓冲区的内容是字符或字,直接粘贴在光标的前面或后面;如果缓冲区的内容为整行正文,执行上述粘贴命令将会粘贴在当前光标所在行的上一行或下一行。注意上述两个命令中字母的大小写。
Vim 编辑器经常以一对大、小写字母(如 p 和 P)来提供一对相似的功能。通常,小写命令在光标的后面进行操作,大写命令在光标的前面进行操作。
有时需要复制一段正文到新位置,同时保留原有位置的内容。这种情况下,首先应当把指定内容复制(而不是剪切)到内存缓冲区。完成这一操作的命令是:

yy       复制当前行到内存缓冲区;
nyy      复制 n 行内容到内存缓冲区;
5yy      复制 5 行内容到内存缓冲区;
“+y      复制 1 行到操作系统的粘贴板;
“+nyy    复制 n 行到操作系统的粘贴板。

2.5 撤销和重复

在编辑文档的过程中,为消除某个错误的编辑命令造成的后果,可以用撤消命令。另外,如果用户希望在新的光标位置重复前面执行过的编辑命令,可用重复命令。

u       撤消前一条命令的结果;
.       重复最后一条修改正文的命令。

3. 插入模式

3.1 进入插入模式

在编辑模式下正确定位光标之后,可用以下命令切换到插入模式:

i      在光标左侧插入正文
a      在光标右侧插入正文
o      在光标所在行的下一行增添新行
O      在光标所在行的上一行增添新行
I      在光标所在行的开头插入
A      在光标所在行的末尾插入

3.2 退出插入模式

退出插入模式的方法是,按 ESC
键或组合键 Ctrl+[
,退出插入模式之后,将会进入编辑模式 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,118评论 9 467
  • 公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础。在网上搜集各方资料,按照...
    甲鱼阅读 160,660评论 43 686
  • 公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础。在网上搜集各方资料,按照...
    夏时花开阅读 2,458评论 1 31
  • ljZhang416阅读 469评论 0 0
  • 被誉为拥有黄金之眼的奥布女神——卡嘉莉.尤拉.阿斯哈,自当选为奥布首长代表后因为卓越的领导能力和二次大战累积的居高...
    吃货吃多了阅读 1,467评论 0 48