blog icon indicating copy to clipboard operation
blog copied to clipboard

vim 常用操作总结

Open chenxiaochun opened this issue 7 years ago • 0 comments

1_n4hlwvdtv4ywxxgutaipbw

Vim 配置:https://github.com/chenxiaochun/editor-preferences/blob/master/.vimrc

指令列表

移动光标操作

  • ^,移动到当前行的第一个字符位置
  • $,移动到当前行的最后一个字符位置
  • 0,移动到当前行首
  • gg,移动到文件开头
  • shift+g,移动到文件末尾
  • ctrl+o,回到上一次光标的位置
  • j,往下移动一行
  • k,往上移动一行
  • l,往后移动一个字符
  • h,往前移动一个字符
  • w,向后移动一个单词,光标停留在单词首部
  • W,向后移动,忽略标点符号
  • e,向后移动一个单词,光标停留在单词尾部
  • E,向后移动,忽略标点符号
  • b,向前移动一个单词,光标停留在单词首部
  • B,向前移动,忽略标点符号
  • ge,向前移动一个单词,光标停留在单词尾部
  • :n,移动到第 n 行
  • nG,移动到第 n 行的行首。例如:10G,移动到第 10 行的行首
  • n$,移动到相对于当前行的第 n 行的行尾。例如:1$是移动到第当前行的行尾;2$是移动到下一行的行尾
  • {},以函数级上下移动
  • zz,将当前行置于屏幕中间
  • zt,将当前行置于屏幕顶端
  • zb,将当前行置于屏幕底端

翻页滚动操作

  • ctrl+b,往上翻一页
  • ctrl+f,往下翻一页
  • ctrl+d,往下滚动半屏
  • ctrl+u,往上滚动半屏
  • ctrl+e,往下滚动一行
  • ctrl+y,往上滚动一行

选择操作

  • v,进入 visual 模式,使用j/k/h/l进行文本选择
  • ctrl+v,进入 visual block 模式,使用j/k可选中一行或者多行。此时按shift+i可进入多行编辑模式,完成之后按esc
  • v+e,选择一个单词
  • vip,选中一个上下以空行分隔的段落,p是段落的意思
  • vit,用来在类 html 代码中选中标签包裹的内容,不包含标签本身,t是 tag 标签的意思
  • vat,用于在类 html 代码中选中标签本身以及它所包裹的内容
  • V,使用j/k选择多行
  • VG,选择从当前光标到文末的所有内容,并高亮显示

说明:vi命令后面可以接任意你想选择的包裹字符,比如:vi<:选中尖括号之间的内容;vi":选中双引号之间的内容,等等。可以自己探索尝试

复制粘贴操作

同一文件:

  • yw,复制光标所在位置的单词
  • yy或者Y,复制当前行
  • yG,复制从当前光标到文末的所有内容
  • y,复制文本
  • yi',复制'之间的字符
  • d,剪切文本
  • di',剪切'之间的字符
  • p,粘贴在光标后面
  • P,粘贴在光标前面

跨文件:

  • "+y,复制文本
  • "+p,粘贴文本

插入操作

  • O,在当前行的前面追加一行
  • o,在当前行的后面追加一行
  • i,在光标之前插入字符
  • I,在行首插入字符
  • a,在光标之后插入字符
  • A,在行尾插入字符

删除操作

normal 模式:

  • x,删除光标所在的字符
  • X,删除光标左边的字符
  • dd,删除当前行
  • dG,删除从光标到文末的所有内容
  • D,删除从光标到本行末尾的字符
  • s,删除光标所在的字符并开始插入
  • S或者cc,删除光标所在行并开始插入
  • :1,10d,删除指定行内容,例如删除第 1 至 10 行的内容
  • J,删除两行之间的换行符

说明:在 vim 中,.表示当前行,所以1,.表示从第 1 行到当前行,按d表示删除

insert 模式:

  • ctrl+w,删除从当前光标到单词开始位置的所有字符

修改字符操作

normal  模式:

  • r,修改光标所在位置的字符
  • R,修改光标所在位置的字符,可以一直修改,直到按下ESC
  • ci',修改'之间的字符
  • ciw,修改光标所在位置的单词

visual 模式:

  • c,删除当前选择的字符并进入插入状态

查找操作

  • /,从上往下查找
  • ?,从下往上查找
  • #,向上查找光标所在的单词
  • *,向下查找光标所在的单词
  • n,查找下一个
  • N,查找上一个
  • 在当前路径下全局查找字符,例如“foo”::vim foo src/** | copen

查找替换操作

  • :%s/foo/bar,将找到的第一个 foo 替换为 bar
  • :%s/foo/bar/g,全局替换 foo 为bar
  • :%s/foo/bar/gi,全局替换,i表示大小写不敏感
  • :%s/foo/bar/gI,全局替换,I表示大小写敏感
  • :%s/foo/bar/gc,全局替换,c表示需要对每一次替换进行确认

批量缩进

在选中相应的文本后:

  • >>,往里缩进
  • <<,往外缩进

代码折叠/展开操作

  • zf,折叠代码
  • zM,折叠所有代码
  • zo,展开代码
  • zR,展开所有折叠

文件保存操作

  • ZZ,保存并退出

撤消操作

  • u,撤消命令
  • ctrl+r,恢复撤消
  • .,重复上一次的操作

分屏操作

:sp,水平分屏 :vs,垂直分屏 ctrl+w+w,在分屏之间切换 ctrl+w+c或者:q,关闭当前分屏 ctrl+w+r,交换两个左右分屏的位置

文件路径补全操作

  • ctrl+x, ctrl+f,文件路径补全

shell 操作

ctrl+z,唤起一个临时 shell fg,退出当前临时shell

其它命令操作

  • :new filename,新建文件
  • :!mkdir name,新建文件夹

异常解决

在安装某些 vim 插件时,如果碰到了以下提示:

 requires Vim compiled with Python (2.6+ or 3.3+) support

可以尝试配置一下此参数:

let g:python3_host_prog = '/usr/local/bin/python3'

插件技巧

vim-surround

  • cst<p>,将光标所在位置的标签修改为 p 标签,同时会删除原来标签上的所有属性
  • cst<p,将光标所在位置的标签修改为 p 标签,并保留原来标签上的属性

chenxiaochun avatar Aug 22 '18 02:08 chenxiaochun