快捷键(待整理)

基础快捷键
  • 基本命令

    • i, I 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。
    • a, A 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。
    • o, O 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!
    • r, R 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;
    • u 复原前一个动作。
    • Ctrl+r 重做上一个动作。
    • . 重复前一个动作的意思
  • 翻页

    • Ctrl+f 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
    • Ctrl+b 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    • Ctrl+d 屏幕『向下』移动半页
    • Ctrl + u 屏幕『向上』移动半页
  • 光标移动

    • h:左移光标。
    • j:向下移动光标。
    • k:向上移动光标。
    • l:右移光标。
    • 0:移动到行首。
    • ^:移动到本行第一个非空字符。
    • $:移动到行尾。
    • gg:移动到文件首行。
    • G:移动到文件末行。
    • w:移动到下一个单词的开头。
    • b:移动到前一个单词的开头。
    • e:移动到当前单词的结尾。+ 光标移动到非空格符的下一行
    • - 光标移动到非空格符的上一行
    • n < space > 按下n(数字)后再按空格键,光标会向右移动这一行的 n 个字符。
    • H:移动到屏幕顶部。
    • M 光标移动到这个屏幕的中央那一行的第一个字符
    • L 光标移动到这个屏幕的最下方那一行的第一个字符
    • G 移动到这个档案的最后一行(常用)
    • nG n 为数字。移动到这个档案的第 n 行。(配合 :set nu)
    • n< Enter > n 为数字。光标向下移动 n 行
  • 文档查询替换

    • 查找:

      • /word 向光标之下寻找一个名称为 word 的字符串。
      • ?word 向光标之上寻找一个字符串名称为 word 的字符串。
      • n 代表重复前一个搜寻的动作。
      • N 与 n 刚好相反,为『反向』进行前一个搜寻动作。
    • 替换:

      • :n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
      • :1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !
      • :1,$s/word1/word2/gc 或 :%s/word1/word2/gc 替换整个文件所有的 word1word2,每次替换时确认。
  • 编辑文本

    • x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符( 相当于 [backspace] 亦即是退格键)

    • nx n 为数字,连续向后删除 n 个字符。

    • dd 删除游标所在的那一整行
    • ndd n 为数字。删除光标所在的向下 n 行
    • d1G 删除光标所在到第一行的所有数据
    • dG 删除光标所在到最后一行的所有数据
    • dw:删除从光标到单词结尾的内容。
    • d$ 删除游标所在处,到该行的最后一个字符
    • d0 删除游标所在处,到该行的最前面一个字符
    • D:删除从光标到行尾的所有内容。
    • yy 复制游标所在的那一行
    • yw 就是复制一个单词(word)
    • y+n 复制n行
    • nyy n 为数字。复制光标所在的向下 n 行
    • y1G 复制游标所在行到第一行的所有数据
    • yG 复制游标所在行到最后一行的所有数据
    • y0 复制光标所在的那个字符到该行行首的所有数据
    • y$ 复制光标所在的那个字符到该行行尾的所有数据
    • p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
    • J 将光标所在行与下一行的数据结合成同一行
    • c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    • cw:删除从光标到单词结尾并进入插入模式。
    • C:删除从光标到行尾并进入插入模式。
  • 其他

    • :w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
    • :r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
    • :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
    • :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!
  • 可视化模式

    • v 进入字符可视化模式

    • V 进入行可视化模式

    • Ctrl+v 进入块可视化模式,块选择在表格中删除指定列非常有用

使用鼠标或者hjkl即可选中字符/行/块,然后可以y,x…
更有用的是对块批量操作,例如批量注释可以这么写
批量注释:
Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
取消注释:
Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出
还可以在选择文字后输入:然后把你在平时这么用的就怎么写,注意按:会多出一些东西不要管他,例如

`:A //这是一堆注释` 

* 1

然后Vim会根据你所写,先对每一样在Normal模式下使用A把光标移动到该行行尾,然后进入Insert模式输入//这是一堆注释对每一行都操作结束之后就会自动退出到Normal模式

按动ZZ(大写的)保存文件

进阶快捷键

窗口管理

  • :split:sp:水平分割窗口。
  • :vsplit:vsp:垂直分割窗口。
  • Ctrl + w + w:切换窗口。
  • Ctrl + w + h:移动到左侧窗口。
  • Ctrl + w + j:移动到下方窗口。
  • Ctrl + w + k:移动到上方窗口。
  • Ctrl + w + l:移动到右侧窗口。
  • Ctrl + w + q:关闭当前窗口。

标签页操作

  • :tabe:打开一个新标签页。
  • :tabngt:切换到下一个标签页。
  • :tabpgT:切换到上一个标签页。
  • :tabc:关闭当前标签页。
  • :tabo:关闭所有其他标签页。

宏录制与播放

  • q + a-z:开始录制宏,将操作记录到指定的寄存器 a-z 中。
  • q:停止录制。
  • @a:播放寄存器 a 中的宏。
  • @@:重复上一次播放的宏。

寄存器操作

  • "a + yy:将当前行复制到寄存器 a
  • "b + p:从寄存器 b 粘贴内容。

块操作

  • Ctrl + v:进入可视块模式。
  • Shift + i:进入插入模式,批量插入字符。
  • Shift + a:进入插入模式,批量在行尾追加内容。
自定义快捷键

.vimrc 中设置自定义快捷键

" 快速保存
nnoremap <C-s> :w<CR>

" 快速退出
nnoremap <C-q> :q<CR>

" 撤销高亮
nnoremap <C-l> :nohlsearch<CR>

" 快速复制到系统剪贴板
vnoremap <C-c> "+y
其他常用快捷键

自动补全

  • Ctrl + n:向下选择补全项。
  • Ctrl + p:向上选择补全项。

缩进

  • >>:将当前行右缩进。
  • <<:将当前行左缩进。
  • =:自动调整缩进(可以配合 v 可视模式选择多行使用)。