Vim学习笔记

vim学习笔记

 之前总觉得vim使用起来很麻烦, 但因为其在文本编辑上的先天性优势, 又可以脱离鼠标操作而无形装逼. 另外, VS Code或者Sublime等轻量级编辑器配合着vim插件使用很是酸爽, 在无聊的时候还是很值得学习一下vim这个古老的文本编辑器的.

 vim共分为三种模式, 分别是命令模式(Command mode), 输入模式(Insert mode)底线命令模式(Last line mode).

命令模式

 用户刚刚启动vim, 便进入了命令模式.

 此状态下敲击键盘动作会被vim识别为命令, 而非输入字符. 比如我们按下 i , 并不会输入一个字符, i 被当作了一个命令. 以下是常用的几个命令:

  • i 切换到输入模式, 以输入字符
  • x 删除当前光标所在处的字符
  • : 切换到底线命令模式, 以在最底一行输入命令

 命令模式只有一些最基本的命令, 因此仍要依靠底线命令模式输入更多命令.

输入模式

 在命令模式下按下 i 就进入了输入模式, 按下 a 就进入输入模式且光标后移一个, 按下 o 就进入输入模式且光标跳转到下一行.

 在输入模式中, 可以使用以下按键:

  • 字符键以及Shift组合 输入字符
  • ENTER 换行
  • BACK SPACE 删除光标前一个字符
  • DEL 删除光标所在字符 (命令模式下也行)
  • HOME/END 移动光标到行首/行尾 (命令模式下也行, END有一点差别)
  • Page Up/Page Down 上/下翻页 (命令模式下也行)
  • Insert 切换光标为输入/替换模式
  • ESC 退出输入模式, 切换到命令模式

底线命令模式

 在命令模式下按下 :, 就进入了底线命令模式.

 底线命令模式可以输入单个或多个字符的命令, 可用的命令非常多.

 在底线命令模式中, 基本的命令有:

  • q 退出程序
  • w 保存文件
  • wq 保存并退出

 按ESC键可随时退出底线命令模式.
vim test.txt 可以新建一个名为test.txt的文件.

移动光标

  • n↓ 向下移动n行
  • n<Enter> 光标向下移动n行
  • n<space> n表示数字, 例如20. 按下数字后再按空格键, 光标会向右移动这一行的n个字符.
  • 0/HOME 移动到这一行最前面字符处
  • $/END 移动到这一行最后面字符处
  • H 光标移动到这个屏幕的最上方那一行的第一个字符
  • M 光标移动到这个屏幕的中央那一行的第一个字符
  • L 光标移动到这个屏幕的最下方那一行的第一个字符
  • G 移动到这个档案的最后一行
  • nG 移动到这个档案的第n行(可配合: set nu)
  • gg 移动到这个档案的第一行, 相当于1G

搜索替换

  • /word 向光标之下寻找一个名为word的字符串
  • ?word 向光标之上寻找一个名为word的字符串

删除、复制与粘贴

  • x,X 在一行字当中, x为向后删除一个字符(相当于Del), X为向前删除一个字符(相当于backspace)
  • nx 在某一行中, 连续向后删除n个字符
  • dd 删除光标所在的那一整行
  • ndd 删除光标所在的向下n行
  • d1G 删除光标所在到第一行的所有数据
  • dG 删除光标所在到最后一行的所有数据
  • d$ 删除光标所在处到该行的最后一个字符
  • d0 删除光标所在处到该行的最前面一个字符
  • yy 复制光标所在的那一行
  • nyy 复制光标所在的向下n行
  • y1G 复制光标所在行到第一行的所有数据
  • yG 复制光标所在行到最后一行的所有数据
  • y0 复制光标所在的那个字符到该行行首的所有数据
  • y$ 复制光标所在的那个字符到该行行尾的所有数据
  • p,P p将已复制的数据在光标下一行粘上, P则为粘在光标上一行
  • J 将光标所在行与下一行的数据结合成同一行
  • u 复原前一个动作
  • Ctrl+r 重做上一个动作

替换

  • r,R r取代光标所在处的一个字符, R连续取代
  • :s/from/to/ 将当前行第一个from替换成to
  • :s/from/to/g 将当前行所有from替换成to
  • :s/from/to/gc 将当前行所有from替换成to, 且替换之前都会询问请求用户确认此操作
  • :.s/from/to/g 在当前行进行替换操作
  • :33s/from/to/g 在第33行进行替换操作
  • :$s/from/to/g 在最后一行进行替换操作
  • :10,20s/from/to/g 对第十行到第二十行的内容进行替换
  • :1,$s/from/to/g or :%s/from/to/g 全文替换
  • :1,.s/from/to/g 第一行到当前行进行替换
  • :.,$s/from/to/g 当前行到最后一行进行替换

批量处理(以注释为例)

批量处理

  • 块选择模式
    • 批量注释
      ctrl+v进入块选择模式, 然后移动光标选中要注释的行, 再按大写的I进入行首插入模式输入注释符号如 // 或 #, 输入完毕之后, 按两下ESC, Vim 会自动将你选中的所有行首都加上注释, 保存退出完成注释.
    • 取消注释
      ctrl+v进入块选择模式, 选中你要删除的行首的注释符号, 注意 // 要选中两个, 选好之后按d即可删除注释, ESC 保存退出.
  • 替换命令
    • 批量注释
       使用名命令格式:起始行号,结束行号s/^/注释符/g
    • 取消注释
       使用名命令格式:起始行号,结束行号s/^注释符//g

例:

  • :10,20s#^#//#g 在 10-20行添加 // 注释
  • :10,20s#^//##g 在 10-20行删除 // 注释
  • :10,20s/^/#/g 在 10-20行添加 # 注释
  • :10,20s/#//g 在 10-20行删除 # 注释
  • :w! 若文件属性为只读时, 强制写入该文档
  • :q! 若曾修改过文档, 又不想存储, q!为强制离开而不存储文档
  • :w !sudo tee % 对于一些只读文件的强制写入

set nu 显示行号

set nonuset nu相反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值