San Domingo's Blog

Courage, Duty, Honor!

Vim 学习笔记(持续更新中)

| Comments

vim的操作操作是基于模式的,常见的模式包括

  • 插入模式 (INSERT)
  • 编辑模式 (NORMAL)
  • 可视模式 (VISUAL)
  • 命令行模式 (:)

Normal 模式是是最常用的模式,在normal模式下可以通过按键命令进入其他模式,在其他模式下,通过Esc可以回到Normal模式。

操作

编辑模式(Normal)下的操作

在其他模式下按Esc进入Normal模式

命令

  • hjkl –> 光标移动,对应为←↓↑→。
  • 0 –> 光标移动到行头
  • ^ –> 光标移动到本行第一个非空字符的位置
  • $ –> 光标移动到本行行末
  • g_ –> 光标移动到本行最后一个非空字符的位置>
  • f<a-char> –> 在当前行内,光标移动到下一个<a-char>字符所在位置
  • F<a-char> –> 同f<a-char>,但为反方向的移动
  • <a-num>f<a-char> –> 在当前行内,光标移动到第<a-num>个<a-char>字符所在位置
  • t<a-char> –> 在当前行内,光标移动到第一个<a-char>字符的前一个字符位置
  • T<a-char> –> 同t<a-char>, 但为反方向移动
  • <Line-Number>G –> 光标跳到<Line-Number>指定的行
  • gg –> 到第一行
  • G –> 到最后一行
  • w –> 光标移动到下一个单词(word)的开头
  • b –> 光标移动到上一个单词(word)的开头
  • e –> 光标移动到下一个单词的末尾(end)
  • ge –> 光标移动到上一个单词的末尾(end)
  • % –> 在当前行将光标移动到括号所在位置,多次按%可以在多个多个括号之间切换
  • * –> 将光标移动到当前匹配当前光标所在词的下一个
  • # –> 将光标移动到当前匹配当前光标所在词的上一个
  • u –> 撤销上一次操作(undo)
  • <C-r> –> 恢复上一次操作(redo)
  • /<a-pattern> –> 搜索匹配<a-pattern>的字符,按n可以跳到下一个匹配项
  • x –> 删除当前字符
  • dd –> 删除当前行,并保存到剪贴板
  • d<a-char> –> 在当前行内,删除光标位置到<a-char>之前的字符
  • p –> 粘贴
  • a –> 在光标后插入(append),并进入插入模式
  • A –> 在行末插入,并进入插入模式
  • o –> 在当前行前插入,并进入插入模式
  • O –> 在当前行后插入,并进入插入模式
  • cw –> 替换从光标所在位置到一个单词结尾的字符(change word),并进入插入模式
  • ZZ –> 保存并退出
  • . –> 小数点,重复上一个命令
  • <a-num><a-command> –> 重复执行<a-num>次<a-command>命令
  • gUU –> 将当前行的字符串变大写
  • guu –> 将当前行的字符串变小写
  • yy –> 拷贝当前行
  • ye –> 拷贝光标所在位置到本单词最后一个字符的字符串
  • >> –> 当前行向右缩减
  • << –> 当前行向左缩进
  • == –> 自动缩减
  • J => 删除当前行的换行符,即将下一行与当前行连接起来

插入模式下的操作

在Normal模式中输入i进入插入模式

命令

  • <C-n> –> 自动补全,next
  • <C-p> –> 自动补全,previous

可视模式下的操作

在Normal模式中输入v进入可视模式

命令

  • hjkl –> 或使用←↓↑→来创建选区
  • i<an-object> –> 区域选择,不包括<an-object>的区域,<an-object>可以为一个字符,或者一个单词
  • a<an-object> –> 区域选择,包括<an-object>的区域

命令行模式下的操作

在Normal模式中输入:进入命令行模式

命令

  • wq –> 保存并退出
  • x –> 保存并退出
  • w –> 保存,可以加文件名w filename
  • q –> 退出
  • q! –> 不保存退出
  • e –> 打开一个文件
  • saveas –> 另存为
  • n –> 切换到下一个文件
  • <Line-Number> –> 光标跳转到<Line-Number>指定行
  • %s/foo/bar/g –> 在全局(globle)替换foo为bar
  • %s/foo/bar/gcI –> 在全局(globle)替换foo为bar,需要确认(commit),并且忽略(Ignore)大小写
  • s/foo/bar/g –> 在光标当前所在行全局(globle)替换foo为bar

其他技巧

块操作

  1. <C-v> –> 开始块操作
  2. <C-n> –> 向下选择块,(也可以使用其他方式来选择)
  3. <any-command>ESC –> 执行command,ESC键使得操作对区块的每一行生效

vim

« Geek Alphabet Macbook Pro外接显示器分辨率问题 »

Comments