22. Vim编辑器

Date:

2018-09-02

Vim有4种模式
  • 正常模式

  • 命令模式

  • 编辑模式

  • 末行模式

模式说明:
正常模式
  • 用vim打开文件首先进入的就是命令模式,此时可以通过 i 或者 a 等按键进入编辑模式(插入模式)

  • 此模式下输入 : 进入命令模式。

  • 此模式下可以通过快捷键移动光标位置,然后通过快捷键复制/粘贴指定一行/多行。

编辑模式
  • 编辑模式有的人也称这种模式叫插入模式。此模式下屏幕左下角有 -- INSERT -- 提示信息。

  • 此时可以通过键盘输入内容到编辑的文件。

  • 从正常模式进入编辑模式的方法是:输入 i 或者 a 其他方法略过。

  • 退出编辑模式按键 Esc

命令模式
  • 进入命令模式的方法只能通过正常模式然后按键 : 进入命令模式。此模式在屏幕左下角有 :

  • 此模式可以通过正则匹配替换文件内容或者保存文件/文件另存为 等操作。

22.1. 模式转化详解

输入模式–> 末行模式:

ESC

编辑模式–> 输入模式:

快捷键说明

a

从光标当前字符位置后面一个字符的位置插入。

A

从光标所在行的行末尾插入。

o

在光标所在行下面插入一行空行,并从空行的开始输入。

O

从光标所在行上面插入一行空行,并从空行的开始位置输入。

i

从光标的当前位置输入。

I

从光标所在行的开始位置开始插入内容。

编辑模式–> 末行模式:

ESC

末行模式–> 编辑模式:

ESC

22.2. 命令模式-退出文件

命令说明

命令

作用

:q

退出

:w

保存

:wq

保存退出

:x

保存退出

:wq!

保存退出

:w new_file_path

保存到指定的文件

22.3. 命令模式-光标移动(快捷键)

字符间移动

h

光标左移动一个字符,作用和 <- 键相同

l

光标右移动一个字符,作用和 -> 键相同

j

光标向下移动一行,作用和方向的 相同

k

光标向上移动一行,作用和方向键的 相同

单词之间移动

w

光标向右移动一个单词,移动到下一个单词的开始位置

e

光标向右移动一个单词,移动到下一个但是的末尾

b

光标向左移动一个单词,移动到上一个单词的开始位置

行内移动

^

shift+6 作用是光标移动到行的开始位置

0

光标移动到行的起始位置和 ^ 相同。

$

shift+4 光标移动到航末尾。

句子内移动

(

光标移动到句子的开始,有时候也是段首

)

光标移动到句子的末尾。

段落内移动

{

光标移动到段首位置

}

光标移动到段尾位置

行间移动

#G

其中的 # 是行号数字,即移动到指定行的起始位置

G

光标移动到文件最后一行的开始位置。

gg

光标移动到文件起始位置(即第一行的起始位置)

22.4. 正常模式-Vim的编辑命令

x

删除所在位置字符

#x

删除后续几个字符

d

删除命令,配合移动字符

dd

删除行

p

粘贴

y

复制

Y

复制当前行

c

修改,配合移动字符

u

撤销之前操作

22.5. 正常模式-Vim可视化模式

v

光标走过的字符

V

光标走过的行

22.6. 正常模式-翻屏操作

ctrl+f

文件尾部翻一屏(当前页倒数第二行成为首行,光标在一页的开始位置)

ctrl+b

文件首部翻1屏(当前页第二行成为最后最后一行,光标在一页的最后一行的开始)

ctrl+d

文件尾部翻半屏(向后),位置不变。

ctrl+u

文件首部翻半屏(向前)

22.7. 命令模式-Vim末行模式

22.7.1. 内容定界

小技巧

在正常模式输入 : 然后再输入下面表格中的内容然后回车即可。

startpos,endpos

#

第#行(掉转到第#行的开始位置)

#,#

第#到第#行(光标跳转到第二个行号的起始位置)

.

当前行(光标跳转到当前行行首)

$

最后一行(光标跳转到最后一行的起始位置)

%

全文(和$基本一样)

22.7.2. 命令模式-查找

小技巧

在正常模式下,输入 /? 进入对应的搜索的状态然后输入要查找的字符串即可。

/pathern

正向查找

?

反向查找

22.7.3. 命令模式-查找并替换

注意

s/查找模式/要替换的内容/修饰符

修饰符:
  • i 忽略大小写

  • g 全局替换

提示

一般常用g,即全局替换,例如: s/abc/test/g 把文件中所有的abc替换成test,这里面区分大小写。

22.8. 多文件模式

vim可以同时打开多个文件并在当前屏幕显示。

:next

下一个文档

:previous

前一个文档

:last

最后一个文档

:first

第一个文档

:waall

保存所有

22.9. 窗口属性设置

:set nu

显示行号

:set nonu

关闭行号显示

:set ai

打开智能提示

:set noai

关闭智能提示

:set ic

忽略大小写

:set noic

关闭忽略大小写

:set sm

括号匹配

:set nosm

关闭括号匹配

:syntax on

语法高亮

:syntax off

语法高亮关闭

:set hlsearch

高亮搜索

:set nohlsearch

关闭高亮搜索

22.10. vi打开文件即显示行号

CentOS6在用户家目录创建一个.vimrc文件,然后把 set nu 追加到这个文件即可。然后打开文件就会自动添加行号,

注意

如果不想显示行号,在命令模式输入:set nonu

1[root@zzjlogin ~]# ll .vimrc
2ls: cannot access .vimrc: No such file or directory
3[root@zzjlogin ~]# echo 'set nu'>> .vimrc
4[root@zzjlogin ~]# ll .vimrc
5-rw-r--r--. 1 root root 7 Apr 18 19:13 .vimrc

22.11. vi打开文件tab用4个空格替换

在用户家目录的 .vimrc 文件添加内容:

1set ts=4
2set expandtab

则可以在vi打开文件后插入模式下输入tab键,会用4个空格代替这个制表符。

对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
TAB替换为空格:

:set ts=4 :set expandtab :%retab!

空格替换为TAB:

:set ts=4 :set noexpandtab :%retab!

1[root@zzjlogin ~]# echo "set ts=4">>.vimrc
2[root@zzjlogin ~]# echo "set expandtab">>.vimrc