Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vim 常用操作总结 #60

Open
chenxiaochun opened this issue Aug 22, 2018 · 0 comments

Comments

@chenxiaochun
Copy link
Owner

commented Aug 22, 2018

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 chenxiaochun changed the title vim 常用命令总结 vim 常用操作总结 Nov 30, 2018

@chenxiaochun chenxiaochun added the vim label Dec 6, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.