blog-web/source/_posts/linux/vim学习手记(2).md
2019-04-01 00:49:39 +08:00

4.6 KiB

title date tags categories
vim学习手记(2) 2019-03-30 20:45:01
linux
vim
linux

修改 查找 替换

大小写的转换

  • ~ - 转换当前光标所在的字符( 如果是小写就转为大写, 反之转为小写, 下同 )
  • 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 ,分别代表竖直分屏和水平分屏

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