• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 修改 查找 替换
    1. 1.1. 大小写的转换
    2. 1.2. 查找
    3. 1.3. 替换(substitute)
  2. 2. 缓冲区
    1. 2.1. 缓冲区切换
    2. 2.2. 缓冲区列表操作
  3. 3. 分屏
    1. 3.1. 添加分屏
    2. 3.2. 焦点切换
    3. 3.3. 调整大小

vim学习手记(2)

2019-03-30 20:45:01
总字数 1.2k
预计阅读时间 4 分钟

修改 查找 替换

大小写的转换

  • ~ - 转换当前光标所在的字符( 如果是小写就转为大写, 反之转为小写, 下同 )
  • g~w - 当前光标之后的一个单词转换大小写 这里同样是 操作+动作 的组合方式
    比如g~$就是对当前位置到行尾进行大小写转换

~表示的是小写转大写, 大写转小写
如果要全部转大写, 就是U, 全部转小写, 就是u
比如gU$就表示从当前位置到行尾全部转大写
gu$就表示从当前位置到行尾全部转小写

按下.就是重复上一个修改操作
比如上一个操作是执行了g~w, 按下.就是再次执行转换单词的大小写

查找

/{string}是用于查找指定字符串
如果设置了ignorecase , 查找时会忽略大小写
如果设置了hlsearch, 会同时高亮所有匹配的位置

之后按Enter再按n, 就可以将光标切换到下一个匹配的位置
N是切换到上一个匹配的位置

查找

替换(substitute)

替换需要使用命令模式执行, 也就是先输入:
格式统一为[range]s/from/to/[flags]

range是搜索范围

  • 1,10 - 表示1到10行
  • 10 - 只有第10行
  • % - 所有整篇文档
  • 10,$ - 从第10行到文档末尾

flags是替换方式的标识

  • c confirm 每次替换都询问
  • e error 不显示错误
  • g global 在当前指定的范围内全局替换
  • i ignore case 忽略大小写

例如

  • s/str1/str2/g - 将当前行中的str1替换为str2
  • %s/str1/str2/g - 将整篇文档所有的str1替换为str2

from的位置是可以使用正则表达式的
与通用的正则元字符基本相同, 但是大部分要加\转义
比如\d+在通用的正则结构当中表示匹配至少1个的数字
在vim当中要写作\d\+
除了[]不需要, \d\+同样可以写作[0-9]\+

缓冲区

缓冲区是vim进行多文件编辑的一个基础功能

所有的文本编辑器在对文件进行编辑的时候, 都是先把文件的内容读到内存当中
只有在进行修改后保存时才写入到磁盘
缓冲区中的就是此时读取到内存的文件

我们可以使用vim命令同时打开多个文件
比如vim buf-*.txt或者是vim buf-1.txt buf-2.txt buf-3.txt

此时主界面显示出的是其中的第一个文件
执行:ls或者:buffers或者:files可以查看缓冲区当中的文件
缓冲区

其中的 %a 是缓冲区的标记
有以下几种

  • a - 激活的 ( active )
  • h - 隐藏的 ( hidden )
  • % - 当前
  • # - 交换
  • = - 只读
  • + - 已经更改的
  • - - 不可更改的

其中交换代表的意思就是当前缓冲区的上一个
比如从第二个切换到了第三个, 那么当前的是第三个, 交换是第二个

缓冲区切换

  • :bp - 上一个 ( buffer previous )
  • :bn - 上一个 ( buffer next )
  • :bf - 第一个 ( buffer first )
  • :bl - 最后一个 ( buffer last )
  • :b {序号}/{文件名} - 切换到指定缓冲区
  • :ball - 同时激活所有缓冲区
  • :b# - 切换到交换缓冲区

缓冲区列表操作

添加文件到缓冲区 ( buffer add )
:badd {文件名}
( 这个文件不是必须存在, 不存在的话相当于创建新文件 )

删除缓冲区中的文件 ( buffer delete )
:bd {序号}/{文件名}

  • :qall - 退出全部缓冲区
  • :wall - 写入全部缓冲区
  • :bufdo {命令} - 对所有缓冲区执行该命令, 比如 :bufdo set number
    ( 所以退出全部缓冲区也可以写:bufdo q )

分屏

只有缓冲区的操作, 毕竟一次只能看到一个文件
vim还提供了分屏的支持
使用参数-O/o ,分别代表竖直分屏和水平分屏

1
vim -O buf-1.txt buf-2.txt

竖直分屏

添加分屏

  • :sp - 添加水平分屏
  • :vsp - 添加竖直分屏
    添加分屏

此时分屏出来的窗口当中打开的还是同一个缓冲区
之后可以通过缓冲区切换来打开不同的缓冲区

焦点切换

ctrl+w h 跳转到左边的窗口
ctrl+w j 跳转到下面的窗口
ctrl+w k 跳转到上面的窗口
ctrl+w l 跳转到右边的窗口

ctrl+w t 跳转到最顶上的窗口
ctrl+w b 跳转到最底下的窗口

调整大小

高度调整
ctrl+w {数字}+ 增大当前窗口的高度(行数), 默认是1
ctrl+w {数字}- 减小当前窗口的高度(行数), 默认是1

宽度调整
ctrl+w {数字}> 增大当前窗口的宽度(列数), 默认是1
ctrl+w {数字}< 减小当前窗口的宽度(列数), 默认是1

  • linux
  • vim
  • linux

扫一扫,分享到微信

gitlab调用jenkins实现自动构建
vim学习手记(1) 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆