目录
  1. 1. VIM 模式
  2. 2. 操作文件
  3. 3. 游标移动
  4. 4. 进入 i-mode 模式 指令
  5. 5. 删除指令
  6. 6. 取代&还原指令
  7. 7. 数目字
  8. 8. 重排功能
  9. 9. 复制
  10. 10. 666 重复上次编辑动作指令
  11. 11. 查找
  12. 12. 替换
  13. 13. 书签功能
  14. 14. 离开
  15. 15. 加密
  16. 16. 標示指令
vim 快速入门

VIM 模式

  • Normal mode(common mode,以下簡稱 c-mode):
    您一進入 VIM 就是處於 c-mode,只能下按鍵指令,不能輸入文字。這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。
  • Insert mode(i-mode):
    按 i 就會進入 i-mode,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到 c-mode。
  • Ed mode(common-line mode,e-mode):
    按冒號:(別忘了 Shift 鍵)就會進入 e-mode,左下角會有一個冒號:出現可下 ed 指令。也是按 Esc 回 c-mode。反正正常狀態都是處於 c-mode,這樣才不會把您辛苦打字的文章給隨便搞亂掉。

操作文件

  • 打开文件
1
vim demo.txt

该模式下,如果存在文件则编辑文件,否则新增一个“demo.txt”的文件

  • 编辑文件
    进入 vim 后,键盘键入“i”则进入“i-mode”模式。游标由方向键控制。通过 del 键可以删除字符

  • 存档离开
    编辑好文件后,输入“Esc”离开回到“c-mode”模式。“:w”写入文件,但不会离开 vim。“:q”离开 vim。“:wq”则表示保存并离开。(q-quit-离开,w-write-写入)

游标移动

基本移动

  • h 左,或 Backspace 或方向鍵
  • j 下,或 Enter 或 +(要 Shift 鍵),或方向鍵
  • k 上,或 方向鍵或 -(不必 Shift 鍵)
  • l 右,或 Space 或方向鍵

进阶移动

  • 0 是數目字 0 而不是英文字母 o。或是 Home 鍵,移至行首,
    (含空白字元)。
  • ^ 移至第一個非空白字元,注意,要 Shift 鍵。
  • $ 移至行尾,或 End 鍵。要 Shift 鍵。
    (在 regexp 中 ^ 是匹配行首,$ 是匹配行尾)
  • G 移至檔尾(最後一行的第一個非空白字元處)
  • gg 移至檔首(第一行之第一個非空白字元處)
  • n| 移至第 n 個字元(欄)處。注意,要用 Shift 鍵。n 是從頭起
    算的。
  • :n 移至第 n 行行首。或 nG。

特殊移动

  • ) 移至下一個句子(sentence)首。

  • ( 移至上一個句子(sentence)首。

  • } 移至下一個段落(paragraph)首。

  • { 移至上一個段落(paragraph)首。

    (sentence 是以 . ! ? 為區格。paragraph 是以空白行為區格。)

进入 i-mode 模式 指令

  • i 在游标所在字符前开始输入文字(insert)
  • a 在游标所在字符后开始输入文字(append)
  • o 在游标所在行下新开一行开始输入文字(open)
  • I 行首开始输入文字
  • A 行尾开始输入文字
  • O 在游标所在行上新开一行开始输入文字(open)
  • J 将一行整行连接本行(join)

删除指令

  • dd 删除整行(delete line)
  • dw 删除当前字(delete word)
  • dG 删至档底
  • dlG 删至档首
  • D 删至行尾 或 d$
  • d0 删至行首 或 d^

取代&还原指令

  • r 取代当前所在字符
  • R 取代字符直至 Es 吃为止
  • cc 取代整行内容 或大写 S
  • C 取代至行尾
  • c0 取代至行首
  • s 替换一个字符为当前输入的字符,与 R 不同,R 是覆盖而 s 是插入式。
  • u undo,撤销改动
  • U 在游标没有离开本行之前,撤销所有编辑动作
  • (window - Crtl+r) (mac- control + r) redo 恢复撤销的编辑内容

数目字

  • 5dd 删除游标所在行起算以下 5 行内容
  • 3r 按下 3r 后,你输入的字符则会替换当前游标所在的三个字符
  • 5J 5 行合并成一行

重排功能

  • “>>” 整行向右移一個 shiftwidth(默认 8 字符,可配置)
  • “<<” 整行向左移一個 shiftwidth(默认 8 字符,可配置)

设置 shiftwidth
:set shiftwidth=4, shiftwidth 可缩写成 sw。

1
:set shiftwidth=4  // :set sw=4
  • :ce(nter) 本行文字置中。注意是冒号命令!
  • :ri(ght) 本行文字靠右。
  • :le(ft) 本行文字靠左。

复制

  • yy 复制游标所在行整行
  • 2yy(y2y)复制两行
  • y^ (y0)复制至行首。不含游标所在字符
  • y$ 复制至行尾。含游标所在处字符
  • y2w 复制 2 个字符
  • yG 复制至档尾
  • y1G 复制至档首
  • p(小写 p)代表贴至游标后(下)
  • P(大写 P)代表贴至游标前(上)

注意: 整行的复制,按 p 或 P 時是插入式的贴在下(上)一行。非整行的复制則是贴在游标所在处之后(前)。

  • “ayy 將本行文字复制到 a 缓存区 (26 字母都行)
  • “ap 将 a 缓冲区的内容贴上

666 重复上次编辑动作指令

  • . 英文句号。重复上一次的编辑动作(游标移动,冒号命令不算)

查找

在 c-mode 模式下操作,按下”/“会在左下角出现”/“,然后输入你要查找的字符输入 enter 开始查找

  • / 向前(下)查找 xxx
  • ? 向后(上)查找 xxx
  • n 继续查找
  • N 继续查找(反向)

替换

:[range]s/pattern/string/[c,e,g,i]

rang 指范,1,7 表示 1 到 7 行,1,$表示第一行到最后一行,也可以用%表示
pattern 要被替换的字符串,可以用 regexp 表示
string 将 pattern 替换成 string
c confirm 每次替换前询问
e 不显示 error
g global 全局替换
i ignore 忽略大小写

书签功能

mx x 代表 26 个小写字母,游标所在处会被 mark

  • `x 回到标签设定位置
  • ‘x 回到标签设定行行首

离开

  • :q 如果本文有修改且没有存档,会警告且无法离开
  • :q! 丢弃所有修改,强制离开
  • :wq 存档并离开。纵使存档未曾修改也会再存档一次
  • :x 也是存档并离开。但存档未曾修改则不会再存档一次
  • ZZ 跟:x 一样
  • :w 档名 另存它档。如果不加档名则写入愿档

加密

  • vim -x [档名]

標示指令

  • v 小写 v,标示当前字符,按下 v 后移动游标可以把走过的地方标示起来。再按一个 v 退出
  • V 大写 V,标示当前行,按下 V 后会整行标示起来包括前后空白。上下移动会标示多行
  • ctrl + v 方块标示,可纵向标示矩形区域
  • d 删除标示区内容
  • y 复制标示去内容
  • Shift + > 标示区內容向右移一个 Tab。
  • Shift + < 标示区內容向左移一个 Tab。
文章作者: Joe
文章链接: http://zhuowenzhou.com/2020/08/11/vim/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 前端彼岸

评论