vim 基础使用

  • Vim 操作

运行 vimtutor zh 命令,可以进入 vim 教学

移动光标

要移动光标,请依照说明分别按下 h、j、k、l 键。

20190619095318.png

Vim 的进入和退出

  1. 按下 <ESC> 进入正常模式:help user-manual
  2. 输入
    • :q! ( 这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。)
    • :wq ( 保存改动过的文件并退出 Vim )
    • :w <filename> 将当前文件保存为 <filename>

文本编辑

在正常模式下 (如果命令输出错误,按下 重新输入)

编辑操作

  • i 进入输入模式(在光标位置前插入文字)
  • I 进入输入模式(在一行的开头插入文字)
  • a 进入输入模式(在光标位置后插入文字)
  • A 进入输入模式(在一行的结尾插入文字)
  • o 在光标下方打开新的一行,并进入插入模式。
  • O 在光标上方打开新的一行,并进入插入模式。
  • y 复制文本
  • p 将最后一次删除的内容置入光标之后(删除的内容将会放到 vim 中的一个寄存器中)
  • r 和一个字符替换光标所在位置的字符
  • R 进入替换输入方式

删除操作

  • x 删除光标所在位置的字符
  • dw 删除从光标当前位置直到下一个单词起始处
  • de 删除从光标当前位置直到单词结尾
  • d$ 从当前光标删除到行末
  • dd 删除整行 (输入 2dd 将会删除 2 行)

许多改变文本的命令都由一个操作符和一个动作构成

operator [number] motion

  • operator - 操作符,代表要做的事情,比如 d 代表删除
  • [number] - 可以附加的数字,代表动作重复的次数
  • motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。

例如:使用删除操作符 d 的删除命令的格式如:d motion

  • d 删除操作符。
  • motion 操作符的操作对象(在下面列出)。
operator 解释
d 删除操作符
v 多行选择
c 修改字符操作符
r 替换光标位置的字符但不进入插入模式

motion 解释
h 左移一个字符
l 右移一个字符
w 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。
b 移动到上一单词的开头
e 从当前当前位置直到单词末尾,包括最后一个字符。
W、B、E W、B、E 命令操作的单词是以空白字符(空格、Tab)分隔的字串
j 下一行
k 上一行
0 该行的开头
^ 该行的第一个非空字符
$ 从当前光标当前位置直到当前行末。
( 当前句子的开头
) 当前句子的末尾
{ 当前段落的开头
} 当前段落的末尾
H 屏幕的第一行
M 屏幕的中间位置
L 屏幕的最后位置
% 可以查找配对的括号 )、]、}
CTRL+f 向前翻页
CTRL+b 向后翻页
CTRL+u 向前翻半页
CTRL+d 向后翻半页
G 移到文件末尾
gg 移到文件开头
'. 跳转到最近的编辑点
`. 跳转到最近的编辑点

正常模式下面仅按代表相应动作的键而不使用操作符,您将看到光标的移动正如上面的对象列表所代表的一样。

更改类命令

  • ce 要改变文本直到一个单词的末尾(删除当前光标所在单词,并进入插入模式)
  1. 更改类操作符的工作方式跟删除类是一致的。操作格式是:c [number] motion
  2. 动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。

撤销类命令

  • u 来撤消最后执行的命令
  • U 来撤消对整行的修改。
  • CTRL-R 撤消掉撤消命令

选择多行命令

  • v 进入多行选择模式,移动光标进行选择

    在多行选择的模式下,进入命令输入 : 将会对选择的行进行操作。例如::w <filename> 将会把选择的行保存在 <filename>
    在多行选择的模式下,输入操作符,同样是对选中的字符进行操作

提取和合并文件

  • :r <filename> 可提取磁盘文件 <filename> 并将其插入到当前文件的光标位置后面。

    您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并把它放置在光标下面。

定位

定位及文件状态

  • CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
  • G 可以使得当前光标直接跳转到文件最后一行。
  • gg 使得当前光标直接跳转到文件第一行
  • 输入行号,然后输入大写 G。可以跳转到制定行数的位置
  • 输入 50% 能直接跳转到 50% 的位置

搜索

  • /(正序查找) 然后输入要查询的字符,回车

  • ? (反序查找)

  • CTRL-O 回退上一个查询位置

  • CTRL-I 前进到下一个查询位置

    要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字符串,请输入大写 N 即可。

跳转到配对括号出

  • % 可以查找配对的括号 )、]、}

替换操作

  • :s/<oldWord>/<newWord>/g 替换一行所有的 <oldWord><newWord>
命令 解释
:#,#s/old/new/g 其中 #,# 代表的是替换操作的若干行中首尾两行的行号。
:%s/old/new/g 则是替换整个文件中的每个匹配串。
:%s/old/new/gc 会找到整个文件中的每个匹配串,并且对每个匹配串提示是否进行替换。

常用快捷操作

命令 说明
. 重复上次的操作
~ 将光标下的字母切换大小写
guw 将光标所在单词转换为小写
gUw 将光标所在单词转换为大写
guu 将光标所在行转换为小写
gUu 将光标所在行转换为大写
g~w 将光标所在单词进行大小写转换
>> 缩进
* 向前搜索光标所在的单词
# 向后搜索光标所在的单词
q/ 显示搜索命令历史的窗口

其他

VIM 内执行外部命令的方法

:! 然后紧接着输入一个外部命令可以执行该外部命令

设置类命令

set xxx 可以设置 xxx 选项。一些有用的选项如下:

  • ‘ic’ ‘ignorecase’ 查找时忽略字母大小写
  • ‘is’ ‘incsearch’ 查找短语时显示部分匹配
  • ‘hls’ ‘hlsearch’ 高亮显示所有的匹配短语

在选项前加上 no 可以关闭选项: :set noic

获取帮助信息

输入 :help <回车>

或者使用 :help <command> <回车>,例如:

undefined

下一步您可以阅读 Vim 的用户手册,使用的命令是: :help user-manual