Vim 水平移动详解

回忆上节课内容🤔

图片描述

素材文件

  • 首先我们打开一个绕口令
    • git clone http://github.com/overmind1980/oeasyvim.git
    • vi -u NONE raokouling.txt
    • 打开绕口令
    • 需要单行的长度超过 80 个字符
  • 设置不换行
    • :set nowrap
  • 设置状态条
    • :set statusline=%f-[%l,%c]
    • :set laststatus=2
  • 把模式设置为非兼容
    • :set nocompatible

图片描述

横向滚动

  • 一路l 到屏幕的尽头
  • 到 [1,80] 时候再按下 l
  • 整个屏幕发生横向滚动
  • 然后光标移动到屏幕中心位置
  • 光标坐标显示为 [1,81]
  • 如果要回来的话也需要移动到左边缘
  • 然后再按 h️
  • 整个屏幕滚动回来了

图片描述

  • 反复横跳

横滚幅度

  • 横滚的幅度可以通过 sidescroll 来控制
    • 默认 0 是横向屏幕 80 字符的一半 40 字符
    • 如果我设置为 10 的话
    • 在最右边缘再向右的话,屏幕位置滚动 10 个字符
    • 从 [1,80] 到 [1,81] 的时候发生
  • :h sidescroll

图片描述

  • 我们如果把 sidescroll 变成 1,屏幕横滚就会很柔和🤪
  • 还是设置回10吧
  • 反复横跳

横滚留位

  • 每次我们的横滚都是在屏幕边缘发生的
  • 能否到达边缘之前就能看见那边有什么?
  • :h sidescrolloff
    • 默认是 0,到边缘才滚动
    • 如果我们设置为 20
    • 到 [1,60] 的时候,距离有边缘有 20
    • 这个时候 l️整个屏就会向右滚动幅度
    • 也就是 sidescroll 所对应的 10

图片描述

  • sidescrolloff 设置成 99,光标在横向总在中心位置🤪

横滚屏快键

图片描述

  • 其实横向滚动我们用的比较少
  • 但在一屏中滚动比较常见

屏内跳转

图片描述

  • 可以参照全屏跳转
  • 前面加个 g
    • g0 就是跳到屏幕第一个字符
    • g^ 就是本屏幕内第一个非空字符
    • gm 跳到屏幕中间
    • gM 跳到整个文本中间
    • g$ 跳到屏幕末尾

自动换行

  • 如果一行太长了我们可以让他 :set wrap 自动换行
  • :h wrap 可以查看帮助手册📕
  • :set nowrap 可以取消自动换行

图片描述

向上一行

  • 我们一般用 jk 上下移动
  • 但是如果自动换行之后,这上下就不只是一行了
  • 先把行号显示出来 :set nu
  • 我们可以通过 g jg k 来自动换行的一行内上下移动

换行字符

  • 我在行头句尾的时候
  • 如果我想按方向键 hl 换行
    • 结果是有效的
  • 如果我用 BackSpace
    • 结果是有效的
  • 但是有的机器上,却无效
  • 为什么呢?
  • 这是一个属性option
    • whichwrap
  • 先看看这个东西现在的值
    • :set whichwrap?

图片描述

  • 把他设置回默认的值
    • :set whichwrap&
    • & 表示设置为默认值
    • 然后再观察现状

图片描述

  • b,s 是什么意思呢

选项细节

  • :h 'whichwrap'

图片描述

  • 默认只有两个
    • b 是 退格
    • s 是 空格
  • 理论上hl 不好使
  • vi oeasy.java
    • 重新用vi打开
    • hl 好使
    • 那他是在那里设置了 hl 呢?

查找根源

vim ~/.vimrc
  • /whichwrap

图片描述

总结

  • 我们这次了解了横向滚动的相关信息
    • 横滚幅度 - sidescroll
    • 横滚留位 - sidescrolloff
    • 自动换行 - wrap
  • g jg k 可以逐行上下移动
  • 可以控制切换行的控制键 whichwrap
  • 这就是横向移动的内容
  • 不过程序中一般一行不会超过80个字符
  • 纵向移动更为普遍
  • 纵向移动有什么好玩的吗?🤔
  • 下次再说 👋

教程来源于Github,感谢overmind1980大佬的无私奉献,致敬!

技术教程推荐

朱赟的技术管理课 -〔朱赟〕

TypeScript开发实战 -〔梁宵〕

编译原理实战课 -〔宫文学〕

OAuth 2.0实战课 -〔王新栋〕

如何看懂一幅画 -〔罗桂霞〕

说透芯片 -〔邵巍〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

人人都用得上的数字化思维课 -〔付晓岩〕

零基础GPT应用入门课 -〔林健(键盘)〕