Vim 文本编辑器

in Linux with 0 comment

简介

Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。

Vim官方入门 -> vimtutor


Vim 模式

普通模式

在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

Vim强大的编辑能力来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令"dd"删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个"d",比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复"dd"两次),和"dj"的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。

在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按"a"(append/追加)键或者"i"(insert/插入)键。

插入模式

在这个模式中,大多数按键都会向文本缓冲区中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

在插入模式中,可以按ESC键回到普通模式。

可视模式

这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。

选择模式

这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。

命令行模式

在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

Ex模式

这和命令行模式比较相似,在使用":visual"命令离开Ex模式前,可以一次执行多条命令。


Vim 操作

CTRL-G 显示你所在位置与文件状态

移动

            j (上)

h (左)                    l (右)
            k (下)
w             //移动到下一个单词头部

b             //移动到上一个单词头部

e             //移动到单词末尾

0             //移动到行首

$             //移动到行尾

gg            //移动到文件起始位置

G             //移动到文件末尾

numberG       //移动到第number行

CTRL-O        //移动到最开始的位置

CTRL-I        //移动到最新的位置

%             //移动到匹配的(,),[,],{,}

复制

y        //复制文本

插入字符

a        //字符后追加

A        //行尾追加

i        //光标前插入

o        //光标下方插入一行

O        //光标上方插入一行

替换

R                  //进入替换模式

r 输入字符          //替换单个字符

:s/old/new         //替换第一个匹配到的匹配项

:s/thee/the/g      //替换本行中的匹配项

:#,#s/old/new/g    //替换多行中的匹配项,其中#,#是要进行替换的行范围的行号

:%s/old/new/g      //替换整个文件中的每个匹配项

:%s/old/new/gc     //查找整个文件中的每个匹配项,并提示是否替换

删除

x        //删除当前光标下的字符

dw       //删除当前光标下的词

d$       //删除从当前光标下的词到行尾的所有字符

dd       //删除当前光标所在整行

ce       //删除当前光标所在词并进入插入模式

c$       //删除当前光标所在到行尾的所有字符并进入插入模式

多行操作

operator   [number]   motion

operator - 操作符,如d,c,y
[number] - 重复次数选项
 motion  - 移动文本进行操作,例如w(word),$(到行尾)等。

粘贴

p        //在当前光标下一行位置放回刚刚删除的内容

撤销

u         //撤销先前的操作

U         //撤销整行的操作

CTRL-R    //撤销的撤销(重做)

查找

/keyword            //往下查找关键词

?keyword            //往上查找关键词

n                   //查找操作后移动到下一个关键词

N                   //查找操作后移动到上一个关键词

执行外部命令

:!ls            //输出ls命令

:w FILENAME     //将当前vim文件写入FILENAME文件

v :w FILENAME   //将Visual模式选中的行写入到FILENAME

:r FILENAME     //读取磁盘中FILENAME文件并将其置于光标位置下方

:r !pwd         //读取pwd命令的输出并将其置于光标位置下方

命令行模式

:set xxx

'ic'  'ignorecase'       //搜索时忽略大写/小写
'is'  'incsearch'        //显示搜索词组的部分匹配
'hls' 'hlsearch'         //高亮所有匹配的短语

:set noxxx               //在选项前加no关闭功能

退出Vim

:q!        //放弃所有更改并退出

:wq        //保存更改并退出

参考文献

Responses