进入插入模式, 输入文本

进入vim以后,处于普通模式,敲i键就启动插入模式,可以输入文字,

输入一些文字后, 输入ESC, 回到普通模式

删除字符

假设我们的文本内容是

1
2
3
4
5
6
+-----------------------------------+
|A very young intelligent turtle    |
|Found programming UNIX a hurlde    |
|                                   |
|                                   |
+-----------------------------------+

在普通模式下,移动光标到文章开头A上,输入x可以删除一个字符 连续输入x6次,就是xxxxxx, 将删除文章开头的A very, 看起来这样

1
2
3
4
5
6
+-----------------------------------+
| young intelligent turtle          |
|Found programming UNIX a hurlde    |
|                                   |
|                                   |
+-----------------------------------+

进入普通模式, 将光标移动某处字符后,输入a,可以在当前字符后输入新字符

移动光标

在普通模式下(无论你在什么模式下,要回到普通模式, 敲ESC键就可以. 有时需要敲2下,如果vim发出’嘀’的一声,就表示您在普通模式了)

基本移动

  • h 向左
  • j 向下
  • k 向上
  • l 向右

这几个键位于右手本位,可以以最快速度执行移动操作,特别是比箭头键快:) (需要禁用箭头键么?强迫自己使用hjkl, 不建议那样做, 慢慢熟悉, 一点点的进步积累起来的成就感才长久, 尽量使用hjkl好了先)

在单词间移动

在普通模式下, 游移在单词间的快捷键

  • w 移动到下一个词首, 标点符号被认为是单词词首

  • b 移动到前一个词首

  • e 移动到下一个词末

  • ge 移动到前一个词末

  • B 移动到前一个词首 忽略标点符号?

  • W 移动到下一个词首, 忽略标点符号?

  • E 移动到下一个词末 忽略标点符号?

1
2
This is a line with example text
This is a "line" "with/example/words!" text

大写的命令忽略单词间的标点符号, 只要不是空的字符,就认为还是一个单词

比如 上面的"line", “with/example/words!”,

使用大写移动命令W E B时, 被分别认为是单词

而使用小写移动命令 w e b时,被认为时好几个词 比如 “line”, 前后两个引号"“和中间line都是一个单词

1
2
3
4
5
This is a line with example text
This is a "line" "with/example/words!" text
----->-->->--->-->------------------->
  w    w w  e   W        E            

我们在编程等需要跳转到{ } < > = ;等标点符号时, 可以使用小写的w e b跳转到标点符号。

在文本处理时不需要处理标点符号时,可以使用W E B跳转到 单词的词首或词尾

句子、行内、段落移动

  • 0 移动到行首

  • ^ 移动到行首(不包含空白符号)

  • $ 移动到行尾(包含空白)

  • g_ 移动到行尾(不包含空白)

  • fx 向前到本行中字符x

  • Fx 向后到本行字符x

1
2
3
4
To err is human.  To really foul up you need a computer.
---------->----------------->------->
   fh            ff             fy
                          <-----Fy---            
  • tx 向前到本行中字符x前一个字符
  • Tx 向后到本行字符x后一个字符

页面、文档快速移动

快速移动的快捷键

  • Ctrl-d 向下半页

  • Ctrl-u 向上半页

  • Ctrl-f 向下一页

  • Ctrl-b 向上一页

  • zt 移动屏幕后当前行位于视窗的头部

  • zb 移动屏幕后当前行位于视窗的尾部

  • zz 移动屏幕后当前行位于视窗的中间

  • H 移动cursor到视图头部

  • M 移动cursor到视图中间

  • L 移动cursor到视图底部

  • gg 文件开头

  • 4gg 文件开头第4行

  • G 文件末尾

  • 4G 文件开头第4行:)

  • % 跳转到匹配的(),[],{}

  • 50% 跳转到文件行数的50%行

  • :NUM 跳转到第NUM行

  • ( 移动到前一个句子

  • ) 移动到下一个句子

  • { 移动到段落开始

  • } 移动到段落结尾

  • [( 跳转到向前一个存在的括号

  • ]) 跳转到向后一个存在的括号

  • [{ 跳转到向前一个存在的大括号

  • ]} 跳转到向后一个存在的大括号

数字和命令混合

1
2
3
4
5
6
7
8
2h 向前2个字符
2j 向下2行
2w 移动2个单词词首
2e 移动到2个单词词末
6gg 移动到开头第六行
3( 移动到前3个句子开头
2]) 跳转到后两个存在的括号

有点晕啊,

普通学习者的要点大概是循序渐进 日积月累:)

在插入模式中快速移动

  • Shift-Right -> 向右移动, 逐词
  • Shift+Right <- 向左移动, 逐词

TODO