vim编辑器

vim的三种模式

一般指令模式(command mode)

打开文件的时候就进入了一般指令模式(这个是默认的模式),这个模式中可以移动光标,可以“删除字符”或者“删除整行”,也可以使用“复制,粘贴”来处理文件数据
但是无法编辑文件内容

常用按键说明

按键 效果
ctrl + f 屏幕向下移动一页,相当于[Page Down]按键
ctrl + b 屏幕向上移动一页,相当于[Page Up]按键
ctrl + d 屏幕向下移动半页
ctrl + u 屏幕向上移动半页
x,X 在一行字当中,x为向后删除一个字符,X为向前删除一个字符
0 数字0,移动到这一行的最前面字符处,相当与[Home]按键
$ 移动到这一行的最后面字符处,相当于[End]按键
u 复原前一个动作
G 移动到这个文件的最后一行
ctrl + r 重做前一个动作
gg 移动到这个文件的第一行,相当于1G
dd 删除游标所在的那一整行
ndd n为数字,删除光标所在的向下n行
yy 复制游标所在的那一行
nyy n为数字,复制光标所在的向下n行
p, P p为将已复制的数据在光标下一行粘贴上,P则为粘贴在游标上一行
n + Enter n为数字,光标向下移动n行
/word 向光标之下寻找一个名称为word的字符串
?word 向光标之上寻找一个字符串名称为word的字符串
:n1,n2s/word1/word2/g n1与n2为数字,在第n1和n2行之间寻找word1这个字符串,并将该字符串取代为word2
:1,$s/word1/word2/g 从第一行到最后寻找word1字符串,并将该字符串取代为word2
:1,$s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认是否需要取代

编辑模式(insert mode)

当按下(i, I, o, O, a, A, r, R)等任何一个字符之后进入编辑模式,这样就可以对文本内容进行编辑了,注意:如果要回到一般的指令模式时,则必须要按下[Esc]这个按键即可退出编辑模式

常用按键说明

按键 效果
i,I 进入插入模式(Insert mode),i为从目前光标所在处插入,I为在目前所在行的第一个非空格符处开始插入
a,A 进入插入模式(insert mode),a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入
o, O 进入插入模式(insert mode),o为在目前光标所在的下一行处插入新的一行,O为在目前光标所在处的上一行插入新的一行
r,R 进入取代模式(Replace mode),r只会取代光标所在那一个字符一次;R会一直取代光标所在的文字,直到按下Esc为止
Esc 退出编辑模式,回到一般指令模式中

指令行命令模式

在一般模式中,输入(: / ?)三个中的任何一个按钮,就可以进入指令行命令模式,这个模式中可以”查找字符”,而“读取”,“存盘”,“大量取代字符”,“离开vim”,“显示行号”等等动作都是在这个模式中达成的

按键 效果
:w 将编辑的数据写入硬盘文件中
:q 离开vim
:wq 存储后离开
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 取消行号

vim的暂存档,非正常退出的恢复

暂存档

我们在使用vim编辑的时候,vim会在与编辑的文件的目录下,再建立一个名为.filename.swap的文件,对filename做的动作就会被记录到这个.filename.swap中

非正常退出之后的恢复

当非正常推出后,vim会出现一些警告信息,以下是如何处理这些警告信息

操作 效果
(O)pen Read-Only 打开此文件成为只读档
(E)dit anyway 正常方式打开需要编辑的那个文件,并不会载入暂存盘的内容,不过很容易出现两个使用者互相改变对方的文件等问题
(R)ecover 加载暂存盘的内容,用于救回之前未储存的工作
(D)elte it 开启文件之前将暂存盘删除(.swap文件)
(Q)uit 按下q就离开vim
(A)bort 忽略这个编辑行为,与q类似

vim区块选择

操作 效果
v 字符选择,会将光标经过的地方反白选择!
V 行选择,会将光标经过的行反白选择
ctrl + v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在游标所在处贴上

vim多文件编辑与多窗口功能

多文件编辑按键

操作 效果
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个vim开启的所有文件

vim支持多文件编辑,一个vim可以运行 vim file1 file2 ...,从而打开多个文件,进行多文件编辑,操作示例如下:
现在我的目录下有两个文件如下所示

[root@localhost tmp]# ls -al
总用量 20
drwxr-xr-x.  2 root root   60 10月 17 18:53 .
dr-xr-x---. 16 root root 4096 10月 17 18:53 ..
-rw-r--r--.  1 root root   72 10月 17 18:48 bbb
-rw-r--r--.  1 root root 5172 10月 17 18:44 man_db.conf
-rw-r-

运行 vim man_db.conf bbb:files 查看可以得到如下结果

:files
1 %a   "man_db.conf"                  第 27 行
2      "bbb"                          第 0 行
请按 ENTER 或其它命令继续

这样可以回到任意文件下进行编辑,并且能够随意地切换,必要的时候可以将man_db.conf下的内容复制到bbb中。
假如我要将man_db.conf中的第一行到第四行的内容复制到bbb的末尾,进行如下操作即可:

  1. 执行 gg 到文本内容的开头
  2. 执行 4yy 复制接下来的四行
  3. 执行 :n 切换到bbb文件
  4. 执行 G 到文件末尾
  5. 执行 p 即可在文件末尾添加刚刚复制的文件了
  6. 执行 wq 保存并且退出

多窗口功能

情景描述

  • 当进行一个文件的操作时候需要对照另外一个文件的时候多窗口功能就很有必要了
  • 当一个文件非常大,查阅后面的数据时候,要对照前面的数据

    多窗口情况下的按键功能

操作 效果
:sp [filename] 开启一个新窗口,如果有filename,表示在新窗口开启一个新文件,否则表示两个窗口为同一个文件内容(同步显示)
ctrl + w + [j,↓] 光标移动到下方的窗口
ctrl + w + [k,↑] 光标移动到上方的窗口
ctrl + w + q 类似于:q,离开

vim的关键字补全

主要操作如下

组合按钮 补齐的内容
ctrl + x -> ctrl + n 通过目前正在编辑的这个文件的内容文字作为关键词,予以补齐
ctrl + x -> ctrl + f 以当前目录内的文件名作为关键词,予以补齐
ctrl + x -> ctrl + o 以扩展名作为语法补充,以vim内建的关键词,予以补齐

需要进行实验,相应的截图如下
test

vim环境设定与记录

这一节我发现就算我设置了自动缩排好像也没啥效果(或者说是在编写html的时候达不到windows那些集成工具的效果,话不多说To be continue吧)
To be continue……

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器