配置文件设置
- set number (设置行号)
- set nocompatible (设置不兼容vi模式,不设置会导致许多vim特性被禁用)
- set clipboard=unnamed (设置普通的复制粘的内容和vim复制的内容相互使用)
打开、编辑,查找文件
- vim 任意文件名,如vim file.txt, 直接编辑文件, 不存在则创建文件
- 已经打开了vim的情况,使用:edit 文件名编辑其他文件, :edit file.txt
- :edit *.txt
<tab>
查找当前目录以txt结尾的文件,使用tab补全提示,左右切换选择文件 - :edit */.txt
<tab>
查找当前项目(多个目录)的所有带txt后缀的文件 - :edit ./ 列出当前目录所有的文件,edit后传目录名参数
- :find *.txt 同样是查找以txt结尾的文件
保存、退出
- :w (保存文件)
- :w file.txt (vim直接进入的终端,新建的文件保存,给出文件名)
- :wq (保存并退出vim)
- :q! (不保存强行退出)
移动命令
- h (左)
- j (下)
- k (上)
- l (右)
复制、粘贴、剪切/删除、撤销、取消撤销
- y (复制)
- yw (向右复制一个单词)
- yb (向左复制一个单词,不包含自身)
- vy (复制当前游标对应的字母)
- y$ (复制当前字符到行尾)
- y^ (复制当前字符到行首 )
- yG (从当前位置复制到文件结尾)
- yf (任意字符), (从当前字符复制到任意字符)
- yy (复制当前一整行)
- p (粘贴)
- p (粘贴到游标所在行的下方)
- shift p 或者叫大写的P (粘贴到游标所在行的上方)
- d (剪切/删除)
- vd/x (删除当前游标所在的字符)
- dw (删除游标右边的单词)
- db (删除游标左边的单词)
- d$ (删除从当前游标到行尾)
- d^ (删除当前游标到行首)
- dG (删除从当前行到文件结尾)
- df (任意字符) 或 vf (任意字符) d (删除从当前字符到任意字符)
- diw/daw (游标在单词任意位置时,可以删除完整单词)
- dd (删除当前一整行)
- d操作后,按p,就是剪切
- u (撤销)
- u (相当于ctrl z)
- ctrl r (取消撤销,相当于ctrl y)
选中
- v (选中当前游标的字符)
- ctrl v (选中多列/垂直选取)
- shift v (选中多行/水平选取)
- viw (选中当前游标位置的整个单词)
- viw d / y (选中之后可以删除、复制)
跳转
- w (向右跳转一个单词)
- b (向左跳转一个单词)
- ^ (跳到行首的非空字符)
- 0 (跳到行首的第一个字符)
- $ (跳到行尾)
- gg (跳到文件最顶部)
- shift g 或者叫 G (跳到文件最底部),引申的命令:ggvG (全选)-解释:选中最顶部到最底部,即全选
- nG (n表示行号,例:16G,表示跳到16行)
- 50% (跳到文件的中间位置)
- n% (跳到文件的对应的比例位置)
- ctrl f (向下翻页)
- ctrl b (向上翻页)
- ctrl d (向下翻半页)
- ctrl u (向上翻半页)
行内搜索
- f (任意字符), 向右搜索,(游标会跳到搜索到的第一个字符)
- shift f (任意字符), 向左搜索,(游标会跳到搜索到的第一个字符)
- f (任意字符) ; (;表示在同一行向后重复搜索匹配的字符)
- f (任意字符) , (,表示在同一行向前重复搜索匹配的字符)
换行
- o (向下换行)
- shift o 或者叫O (向上换行)
插入模式
- i (光标在游标字符的前面)
- a (光标在游标字符的后面)
大小写转换
- gU 任何位置,如:$、w、G、f 任何字符,当前选中的单词转换为大写
- gu 任何位置,如:$、w、G、f 任何字符,当前选中的单词转换为小写
文件内搜索
- / 任何字符, 从前往后搜索, (游标会停留在第一个匹配的字符,按n匹配下一个,shift n 匹配上一个)
- ? 任何字符, 从后往前搜索, (游标会停留在第一个匹配的字符,按n匹配下一个,shift n 匹配上一个)
- / 和 ? 两者是相反的操作
括号匹配
- % (当有多对括号时,会跳到对应的左括号/右括号, 适用于:(), [], {}, <>)
综合应用
- 如v f (任意字符) d / y:表示先选中当前字符,再通过f 搜索任意字符, 此时,游标会跳到匹配的字符, 按d删除,或按y复制
- v i ( 会选中小括号的内容,右括号也可以
- v i [ 会选中中括号的内容,右括号也可以
- v i { 会选中花括号的内容,右括号也可以
- di( 删除括号中的内容, 右括号也可以
- da( 删除选中的内容并且包括括号本身, 右括号也可以
退出插入模式
- ESC