天天看点

vim编辑器基础

vim简介

  vim是从vi发展出来的一个文本编辑器,熟练使用会比普通编辑器更高效(全键盘操作),在程序员中被广泛使用。使用命令与组合键来代替鼠标与键盘,大大提高程序员和文字录入员的速度和效率,并且vim有很多模式可以进行转换,简单介绍经常用的其中六种模式:

普通模式(Normal mode)

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

  vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。

插入模式(Insert mode)

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

可视模式(Visual mode)

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

选择模式(Select mode)

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

命令行模式(Command line mode)

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

Ex模式(Ex mode)

  这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。这其中我们常用到就是普通模式、插入模式和命令行模式。

文件保存

  进入命令行,输入

:w

表示保存,

:q

表示退出,也可以组合为

:wq

:q!

强制退出,

:x

也为保存并退出。

  进入命令行模式后输入

:e 文件路径

同样可以打开相应文件。

  

:w 文件名或路径 //保存文件并重命名,也可以保存到某一路径下

在普通模式下的光标移动

在该模式下使用方向键或者h,j,k,l键可以移动游标,命令如下:

vim编辑器基础

进入插入模式

不同的从普通模式进入插入模式的方法:

vim编辑器基础

一般经常就是用i或a。

退出vim

以下为几种退出方式:

vim编辑器基础

普通模式下也可以用快捷键保存并退出:

Shift+zz

删除文本

进入普通模式即可使用删除,不用进入命令行模式:

vim编辑器基础

  在命令前面可以加数字,表示一次删除多个,如:

2dd

表示一次删除2行,

10x

表示连续删除10个字符,

daw

(delete a word)删除一个单词,

d5w

表示删除5个单词。

Vim重复命令

  

.

(小数点)表示重复上一个命令,比如在普通模式下使用

x

删除字符,之后可以按

.

就可以代替

x

来删除字符。

游标的快速跳转

行间跳转:

  

nG:游标移动到第n行(若没有显示行号,请先进入命令模式,输入:set nu以显示行号)

  

gg:游标移动到第一行

  

G:到最后一行

  小技巧:你在完成一次跳转后,可以使用

Ctrl+o

快速回到上一次(跳转前)光标所在位置

行内跳转(在行内按照单词为单位进行跳转):

vim编辑器基础

复制粘贴和剪贴

普通模式中使用

y

复制:

  普通模式中,

yy

复制游标所在的整行(3yy表示复制3行)

  普通模式中,

y^

复制至行首,或y0。不含光标所在处字符。

  普通模式中,

y$

复制至行尾。含光标所在处字符。

  普通模式中,

yw

复制一个单词。

  普通模式中,

y2w

复制两个单词。

  普通模式中,

yG

复制至文本末。

  普通模式中,

y1G

复制至文本开头

普通模式中使用

p

粘贴:

  普通模式中,

p(小写)

代表粘贴至光标后(下)

  普通模式中,

P(大写)

代表粘贴至光标前(上)

  前面介绍的删除行dd其实就是剪贴命令,你每次 dd 删除文档内容后,便可以使用 p 来粘贴

交换上下行:

ddp //就是删除当前行后再粘贴

字符的替换和撤销(Undo)操作

替换和Undo命令都是针对普通模式下的操作

vim编辑器基础

快速缩进

缩进操作均在普通模式下有效

  

>> 向右缩进

  

<< 向左缩进

普通模式下输入

:

进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数。

  

:set shiftwidth? //查询当前缩进值

  

:set shiftwidth=10 //缩进调整为10个字符

在命令行模式下

  

:ce //本行居中

  

:ri //本行靠右

  

:le //本行靠左

查找

快速查找:

  普通模式下输入

/

然后键入需要查找的字符串按回车后就会进行查找。

/

功能相同,只不过

是向上而

/

是向下查找。

  进入查找之后,输入n 和 N 可以继续查找。

n(小写)

是查找下一个内容,

N(大写)

查找上一个内容。

高级查找:

  普通模式下输入

\*

寻找游标所在处的单词

  普通模式下输入

\#

同上,但

\#

是向前(上)找,

\*

则是向后(下)找

  普通模式下输入

g\*

\*

,但部分符合该单词即可

  普通模式下输入

g\#

\#

,但部分符合该单词即可

  以上查找n,N 的继续查找命令依然可以用

多文件编辑

新建俩个文件,默认进入1.txt文件的编辑界面

  

vim 1.txt 2.txt

再进入命令行模式

  

:n //表示切换到下一个文件也就是2.txt,如果1.txt未保存则会提示

  

:n! //强制切换到下一个文件,如果上一个文件未保存则丢失

  

:N //切换到上一个文件

  

:N! //

进入vim后打开新文件:

  命令行模式下输入

:e 3.txt

打开新文件3.txt

  命令行模式下输入

:e#

回到前一个文件

  命令行模式下输入

:ls

可以列出以前编辑过的文档

  命令行模式下输入

:b 2.txt(或者编号)

可以直接进入文件2.txt编辑

  命令行模式下输入

:bd 2.txt(或者编号)

可以删除以前编辑过的列表中的文件项目

恢复文件

  如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入

:ewcover 1.txt

来恢复

  

vim -r 1.txt

可视模式简介

  在普通模式下输入

v(小写)

,进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。

  在普通模式下输入

V(大写)

,进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次

V

就可以取消选取。

  在普通模式下输入

Ctrl+v(小写)

,这是区域选择模式,可以进行矩形区域选择,再按一次

Ctrl+v

取消选取。

当执行一个非移动命令时,命令会被执行到这块高亮的区域上,如:

  在可视模式下输入 d 删除选取区域内容

  在可视模式下输入y复制选取区域内容

视窗操作

  vim 可以在一个界面里打开多个窗口进行编辑,这些编辑窗口称为 vim 的视窗。可以使用在命令行模式下输入

:new

打开一个新的 vim 视窗,如

  

vim 1.txt //新建一个文本

  命令行模式下输入

:new

打开一个新的vim视窗

  命令行模式下输入

:vsp 2.txt

打开新的横向视窗来编辑2.txt

  命令行模式下输入

:vsp 3.txt

打开新的横向视窗来编辑3.txt

  可以使用

Ctrl+w

进行视窗间的跳转

  分别在不同视窗的命令行模式下输入

:q!

退出多视窗编辑

文档加密

  

vim -x file1 //创建加密文档

  创建时要输入你的密码 确认密码 这样在下一次打开时,vim就会要求你输入密码。

在vim中执行外部命令

在命令行模式中输入

!

可以执行外部的shell命令,如:

  

:!ls

用于显示当前目录的内容

  

:!rm FILENAME

用于删除名为 FILENAME 的文件

  

:w FILENAME

可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件

功能设定

获取目前的设定

  命令行模式下输入

:set

或者

:se

显示所有修改过的配置

  命令行模式下输入

:set all

显示所有的设定值

  命令行模式下输入

:set option?

显示option的设定值

  命令行模式下输入:set nooption 取消当前设定值

set功能的说明

  命令行模式下输入:set autoindent(ai) 设置自动缩进

  命令行模式下输入

:set autowrite(aw)

设置自动存档,默认未打开

  命令行模式下输入

:set background=dark或light

,设置背景风格

  命令行模式下输入

:set backup(bk)

设置自动备份,默认未打开

  命令行模式下输入

: set cindent(cin)

设置C语言风格缩进

继续阅读