vim命令

vim

vimtutor:系统自带的 vim教程

命令模式操作

  1. 移动光标

    • h-左,l-右,j-上,k-下

    • 行内定位

      • 0--行首
      • ^--行首,忽略空格
      • $--行尾
      • f 正向搜索ch字符,ch如果是字母则区分大小写
      • F 反向搜索ch字符,ch如果是字母则区分大小写
    • 单词间定位,如果是大写,则单词允许包含标点

      • w--下一个单词首字母
      • e--下一个单语尾字母
      • b--前一个单词首字母
    • 页面定位

      • gg -- 文件的开头
      • G -- 文件的末尾
      • H--定位到当前页面的顶部
      • M--定位到当前页面的中部
      • L--定位到当前页面的底部
      • nG/ngg/:n --  跳转到n行
    • 块定位

      • { --跳到上一个代码块
      • } --跳到下一个代码块
      • % --定位到另一个匹配的括号
    • m <a> -- 标记
    • '<a> -- 回到标记位置
    • gd -- 跳转到变量(方法)的定义处或者调用处
  2. 切换屏幕
    • ctrl + y --向上滚屏一行
    • ctrl+ e --向下滚屏一行
    • ctrl + u --向上滚动半屏
    • ctrl + d --向下滚动半屏
    • ctrl + b --向上滚动一屏
    • ctrl + f --向下滚动一屏  
  3. 删除内容

    • x -- 删除光标所在位置的内容,前面可以接数字,3x代表删除三个字符

    • X -- 删除光标前的内容

    • dw -- 删除单词(从光标开始删)

    • d$ / D -- 删除光标到行尾所有内容

    • d0 -- 删除从光标位置到行首所有内容,不包括光标

    • dd -- 删除光标所在行

    • d^ -- 删除到行首(第一个非零字符)
    • ndd -- 删除从光标所在行开始向下 n 行的内容

    • dt, -- 删除到逗号
    • diw -- 删除光标所处的单词
    • daw -- 删除光标所处的单词,并包含前后空格(如果有的话)
    • di" -- 删除双引号中的内容
    • di' -- 删除单引号中的内容
    • di) -- 删除小括号中的内容
    • di] -- 删除中括号中内容
    • di} -- 删除大括号中内容
    • diB -- 删除'{}'中的内容
    • dit -- 删除 xml tag 中的内容
    • dis -- 删除当前句子
    • d2w -- 删除下两个单词
    • dt( -- 删除从光标位置到小括号前内容
    • dgg -- 删除到文件头部
    • dG -- 删除到文件尾部
    • d} -- 删除下一段
    • d{ -- 删除上一段
    • J -- 连接若干行
    • gJ -- 连接若干行,删除空白字符
    • :[range]d -- 删除范围,比如 :20,30d 是删除20到30行,:10d 是删除第十行
    • ddp -- 交换两行内容:先删除当前行复制到寄存器,并粘贴
  4. 撤销操作

    • u -- 撤销操作

    • U -- 撤销整行操作
    • ctrl + r -- 反撤销

  5. 复制粘贴

    • yy -- 复制当前行

    • Y -- 复制当前行,同 yy
    • y$ -- 复制当前位置到本行结束的内容
    • yt, -- 复制到逗号
    • yiw -- 复制当前单词
    • nyy -- 复制n行内容

    • dd -- 剪切一行内容

    • 小p -- 将剪切板内容粘贴到光标所在位置的下一行

    • 大P -- 将剪切板内容粘贴到光标所在位置的上一行

    • r -- 替换光标所在字符,输入r之后,再输入一个字母

    • :[range]y -- 复制范围,比如 :20,30y 是复制20到30行,:10y 是复制第十行
  6. 可视模式

    • v -- 进入可视模式,移动光标选中内容

    • V -- 开始按行标记
    • CTRL-V -- 开始列标记
    • y -- 复制标记内容

    • d -- 删除(剪切)

    • p -- 从光标位置粘贴

    • 大P -- 从光标位置前一位开始粘贴

  7. 查找操作

    • /string -- 从文件顶部查找文件内所有的string

    • ?string -- 从文件底部查找文件内所有的string

    • # -- 将光标移到要查找字符串上后按进行查找

    • n/N -- 向上或向下对查找结果进行遍历

  8. 格式化操作

    • >> -- 当前光标所在行右移一个tab

    • << -- 当前光标所在行左移一个tab

    • n>> -- 移动光标开始n行右移一个tab

    • n<< -- 光标开始n行左移一个tab

    • gg=G -- 文件整体调整格式

    • =a{ -- 缩进光标所在代码块
    • =i{ -- 缩进光标所在代码块,不缩进"{"
    • == -- 自动缩进
  9. 查看man

    • 光标移动到函数位置,按K或者n+K切换到man帮助页

  10. 选择文本,以下如果将i换成a,则会将符号也包含进去。同理,将选择操作(v)替换成插入(c)、剪切(d)或者复制(y),也能实现类似的效果。
    • vib(选中小括号内的内容)
    • viB(选中大括号内的内容)
    • vi"(选中双引号内的内容)
    • vi'(选中单引号内的内容)
    • vi<(选中尖括号内的内容)
    • v0 -- 选中当前位置到行首
    • v$ -- 选中当前位置到行末
    • vt, -- 选中到逗号
    • viw -- 选中当前单词 
    • vi) -- 选中小括号内的东西
    • vi] -- 选中中括号内的东西
    • vis -- 选中句子中的东西
    • gv -- 重新选择上一次选中的文字

  11. 其它操作

    • .(点) -- 重复上一次操作
    • ~ -- 交换大小写
    • g~iw -- 替换当前单词的大小写
    • gUiw -- 将单词转成大写
    • guiw -- 将当前单词转成小写
    • guu -- 全行转为小写
    • gUU -- 全行转为大写
    • CTRL-A -- 增加光标所在位置的数字
    • CTRL-X -- 减少数字

编辑模式

  • i -- 在光标之前插入

  • I -- 从行首插入

  • a -- 在光标之后插入

  • A -- 从行尾插入

  • s -- 替换字符(删除光标处字符,并进入插入模式,前可接数量)

  • S -- 替换行(删除当前行,并进入插入模式,前可接数量)

  • o -- 在下一行行首插入

  • O -- 在上一行行首插入

  • r -- 替换当前字符
  • R --进入替换模式,直至 ESC 离开
  • cc -- 改写当前行(删除当前行并进入插入模式),同 S
  • cw -- 改写光标开始处的当前单词
  • ciw -- 改写光标所处的单词
  • caw -- 改写光标所处的单词,并且包括前后空格(如果有的话)
  • ct, -- 改写到逗号
  • c0 -- 改写到行首
  • c^ -- 改写到行首(第一个非零字符)
  • c$ -- 改写到行末
  • ci" -- 改写双引号中的内容
  • ci' -- 改写单引号中的内容
  • ci) -- 改写小括号中的内容
  • ci] -- 改写中括号中内容
  • ci} -- 改写大括号中内容
  • cit -- 改写 xml tag 中的内容
  • cis -- 改写当前句子
  • ciB -- 改写'{}'中的内容
  • c2w -- 改写下两个单词
  • ct( -- 改写到小括号前

多行编辑或删除

  1. 将光标移动到要插入相同内容的字符上

  2. 按下 ctrl + v 进入 可视 块 模式

  3. 上下移动光标选择要同时修改的行数

  4. 按下大写I 进入编辑模式 / 按d 删除选中的字符

  5. 输入要插入的内容

  6. 按 esc 退出,vim 会自动在选择的几行添加相同的内容

     

末行模式

  • :-- 切换到末行模式

  1. 查找替换

    • :s/src/des -- 只会替换当前行第一个匹配的src为des

    • :s/src/des/g -- 替换当前行所有匹配的src为des

    • :%s/src/des -- 只会替换所有行第一个匹配的src为des

    • :%s/src/des/g -- 替换文件内所有的src为des

    • :%s/p1/p2/gc -- 替换当前文件中的p1为p2,并且每处询问你是否替换
    • :10,20s/p1/p2/g -- 将第10到20行中所有p1替换为p2
    • :g/^\s*$/d -- 删除空行
    • :g/test/d -- 删除所有包含 test 的行
    • :v/test/d -- 删除所有不包含 test 的行
    • :%s/^/test/ -- 在行首加入特定字符(也可以用宏录制来添加)
    • :%s/$/test/ -- 在行尾加入特定字符(也可以用宏录制来添加)
    • :sort -- 排序
    • :g/^\(.\+\)$\n\1/d -- 去除重复行(先排序)
    • :%s/^.\{10\}// -- 删除每行前10个字符
    • :%s/.\{10\}$// -- 删除每行尾10个字符
  2. 保存退出

    • :w --保存

    • :wq --保存后退出

    • :q -- 退出,只有文件没有变化才能退出

    • :q! --强制退出不保存

    • :x --相当于wq

    • ZZ -- 命令模式下的保存退出

  3. vi分屏

    • :sp filename --横分,上下分

    • :vsp filename --竖分,左右分

    • ctrl + ww --切换屏幕

    • :q --退出一个文件

    • :qall -- 全部文件都退出

    • :wqall -- 全部保存退出

  4. :!command -- 末行模式下执行shell 命令

 

vim的配置文件

  • /home/user/.vimrc --本用户的配置文件(user要替换为对应的用户名)

  • /etc/vim/vimrc -- 系统vim配置文件,如果用户没有配置,默认使用系统配置

 

 

posted @ 2019-08-08 22:37  渣爷  阅读(273)  评论(0编辑  收藏  举报