Vim Z 开头的视图滚动/折叠命令完整学习笔记

Vim Z 开头的视图滚动/折叠命令完整学习笔记

文章目录

  • Vim Z 开头的视图滚动/折叠命令完整学习笔记
    • 1. 核心概念
    • 2. 垂直滚动对齐命令
      • 2.1 基础对齐
      • 2.2 重画增强版
    • 3. 横向滚动命令
      • 3.1 字符级滚动
      • 3.2 半屏滚动
    • 4. 代码折叠命令
      • 4.1 基础折叠操作
      • 4.2 高级折叠操作
      • 4.3 全局折叠控制
      • 4.4 折叠等级控制
    • 5. 折叠功能配置
      • 5.1 基础配置
      • 5.2 手动折叠创建
    • 6. 命令速查表
    • 7. 实用技巧和最佳实践
      • 窗口对齐技巧
      • 横向滚动应用
      • 折叠使用策略
      • 配置建议
    • 8. 学习建议
      • 循序渐进的学习路径
      • 常见使用场景
      • 避免常见错误

1. 核心概念

Vim 的 z 开头命令主要分为三大类:

  • ✅ 对齐滚动类:控制当前行在窗口中的位置
  • ↔️ 横向滚动类:处理长行的水平滚动
  • 📦 折叠操作类:管理代码的折叠展开

这些命令让你能够精确控制文本的显示方式,提高编辑效率。

2. 垂直滚动对齐命令

2.1 基础对齐

  • zz - 滚动窗口,使当前行居中
  • zt - 滚动窗口,使当前行到窗口顶部
  • zb - 滚动窗口,使当前行到窗口底部

💡 记忆技巧:z = scroll,t = top,b = bottom,z = center(中间的字母)

2.2 重画增强版

  • z<CR> - 滚动窗口,使当前行到顶部,并重画窗口(等价于 zt + redraw)
  • z. - 滚动窗口,使当前行居中,并重画窗口(等价于 zz + redraw)
  • z- - 滚动窗口,使当前行到底部,并重画窗口(等价于 zb + redraw)

📝 说明:重画版本在终端显示有问题时特别有用

3. 横向滚动命令

3.1 字符级滚动

  • zh - 向左滚动窗口一个字符
  • zl - 向右滚动窗口一个字符

3.2 半屏滚动

  • zH - 向左滚动窗口半屏
  • zL - 向右滚动窗口半屏

💡 记忆技巧:h = left,l = right,大写表示更大的移动距离

4. 代码折叠命令

4.1 基础折叠操作

  • zo - 展开一个折叠(open)
  • zc - 折叠一个折叠(close)
  • za - 切换折叠打开/关闭状态(alternate)

4.2 高级折叠操作

  • zO - 展开当前行的所有折叠(Open all)
  • zC - 关闭当前折叠及其内部所有折叠(Close all)
  • zv - 展开足够的折叠以显示当前行

4.3 全局折叠控制

  • zR - 展开所有折叠(Remove all folds)
  • zM - 折叠所有可折叠的代码块(Mass fold)

4.4 折叠等级控制

  • zm - 增加折叠等级(more fold)
  • zr - 减少折叠等级(reduce fold)

💡 折叠等级概念:数字越大,折叠层次越深

5. 折叠功能配置

5.1 基础配置

" 按缩进折叠(适合 Python、YAML 等)
:set foldmethod=indent" 按语法折叠(适合 C、Java、JavaScript 等)
:set foldmethod=syntax" 手动折叠(完全自定义控制)
:set foldmethod=manual" 按标记折叠(使用特殊标记)
:set foldmethod=marker" 按表达式折叠(高级用法)
:set foldmethod=expr

5.2 手动折叠创建

启用手动折叠后,可以使用以下命令创建折叠:

:set foldmethod=manualzf}     " 折叠从当前行到下一个 '}'
zfG     " 折叠从当前行到文件末尾
zf5j    " 折叠当前行向下 5 行
5zF     " 折叠接下来的 5 行
zf/pattern " 折叠到下一个匹配模式

6. 命令速查表

命令含义等价形式助记/命令全称说明
垂直滚动对齐类
zz滚动窗口,使当前行居中-z-center (z = scroll, center)
zt滚动窗口,使当前行到窗口顶部-z-top
zb滚动窗口,使当前行到窗口底部-z-bottom
z<CR>滚动窗口,使当前行到顶部,并重画窗口zt+ redrawz-Enter
z.滚动窗口,使当前行居中,并重画窗口zz+ redrawz-dot
z-滚动窗口,使当前行到底部,并重画窗口zb+ redrawz-minus
横向滚动类
zH向左滚动窗口半屏(横向滚动)-z-Half left
zL向右滚动窗口半屏(横向滚动)-z-Half right
zh向左滚动窗口一个字符(横向)-z-left
zl向右滚动窗口一个字符(横向)-z-right
折叠操作类
zo展开一个折叠-z-open (1 fold)
zc折叠一个折叠-z-close (1 fold)
za切换折叠打开/关闭-z-alternate
zO展开当前行的所有折叠-z-Open fold
zC关闭当前折叠-z-Close fold
zv展开足够折叠以显示当前行-z-view
zR展开所有折叠-z-Remove folds
zM折叠所有折叠块-z-Mass fold
zm增加折叠等级-z-more fold
zr减少折叠等级-z-reduce fold

7. 实用技巧和最佳实践

窗口对齐技巧

  1. 阅读时:使用 zz 让关注的行始终在屏幕中央
  2. 调试时:使用 zt 将错误行置顶,方便查看上下文
  3. 比较时:使用 zb 将参考行置底,腾出上方空间

横向滚动应用

  1. 长行处理zlzh 精确控制显示位置
  2. 代码审查zHzL 快速浏览长行内容
  3. 表格编辑:横向滚动查看宽表格的不同列

折叠使用策略

  1. 代码浏览:使用 zM 折叠所有,然后 zo 逐步展开感兴趣的部分
  2. 文档编辑:按章节折叠,使用 za 快速切换显示
  3. 调试代码:使用 zv 确保当前行可见,然后逐步展开相关代码

配置建议

" 在 .vimrc 中添加常用配置
set foldmethod=syntax          " 默认按语法折叠
set foldlevelstart=1           " 启动时折叠等级
set foldcolumn=2               " 显示折叠列
set foldtext=MyFoldText()      " 自定义折叠显示文本" 便捷键映射
nnoremap <space> za            " 空格键切换折叠
nnoremap <leader>zz zMzv       " 折叠所有并显示当前行

8. 学习建议

循序渐进的学习路径

  1. 第一阶段:掌握基础对齐

    • 重点练习 zzztzb
    • 理解这些命令的使用场景
  2. 第二阶段:学习折叠基础

    • 配置合适的 foldmethod
    • 练习 zozcza 三个基础命令
  3. 第三阶段:掌握高级功能

    • 学会使用 zRzM 进行全局控制
    • 了解折叠等级的概念和应用
  4. 第四阶段:优化工作流

    • 根据编程语言选择最佳折叠方法
    • 自定义快捷键提高效率

常见使用场景

  1. 代码审查:快速浏览文件结构
  2. 长文档编辑:按章节组织内容
  3. 调试代码:隐藏无关代码,专注问题区域
  4. 学习代码:逐步展开理解复杂代码结构

避免常见错误

  • 不要在所有文件类型都使用相同的折叠方法
  • 记住大小写的区别(如 zo vs zO
  • 理解折叠等级的概念,避免过度折叠
  • 学会使用 zv 确保重要内容可见

📝 核心提示:Z 命令的精髓在于让你控制"看什么"和"怎么看",掌握这些命令能显著提高代码阅读和编辑的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Keepalived】Keepalived-2.3.4 已恢复对 CentOS 7 支持

之前在CentOS 7.9系统中对 Keepalived 2.3.2、2.3.3 版本进行编译和安装测试&#xff0c;都出现了编译报错&#xff0c;且官方文档中也给出了不再支持RHEL 7的申明&#xff0c;但是6月10日&#xff0c;Keeplived-2.3.4版本在CentOS 7.9系统中编译、安装成功。 对于此问题&#…

Java NIO 面试全解析:9大核心考点与深度剖析

文章目录 &#x1f680; Java NIO 面试全解析&#xff1a;9大核心考点与深度剖析&#x1f4cc; 一、基础概念&#xff1a;BIO/NIO/AIO 终极对比&#x1f4cc; 二、Buffer核心机制&#xff1a;状态机设计精髓Buffer状态机原理 &#x1f4cc; 三、零拷贝原理&#xff1a;高性能IO…

C++提高编—(模板,泛型,异常处理)

一 模板 1.1 模板概论 以下图为例子&#xff0c;提供了三个西装的证件照&#xff0c;谁都可以取拍照&#xff0c;可以是小孩&#xff0c;男女人&#xff0c;也可以是某些动物等等等。n那么我们这个模板也是这样&#xff0c;它可以是任何类型&#xff0c;基础类型&#xff0c;c…

Python图像处理基础(六)

Python图像处理基础(六) 文章目录 Python图像处理基础(六)3.4 双层图像3.5 具有更多色阶的位图数据3.6 基于调色板的图像3.6.1 超过 256 种颜色的图像3.7 处理透明度3.7.1 Alpha 通道3.7.2 透明调色板条目3.7.3 透明颜色3.8 隔行扫描和交替像素排序3.4 双层图像 某些类型的…

卷积神经网络(一)

第七章 卷积神经网络 从今天开始学习卷积神经网络的内容。 本章的主题是卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;。 CNN被用于图像识别、语音识别等各种场合&#xff0c;在图像识别的比赛中&#xff0c;基于 深度学习的方法几乎都以…

OpenCV 多边形绘制与填充

一、知识点 1、void polylines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar & color, int thickness 1, int lineType LINE_8, int shift 0 ); (1)、在图像上绘制多边形曲线。 (2)、参数说明: img: 输入、输出参数&#xff0…

C#接口代码记录

using System;namespace InterfacesExample {// 定义接口public interface INBAPlayable{void KouLan();}public interface ISupermanable{void Fly();}// 基类public class Person{public void CHLSS(){Console.WriteLine("人类吃喝拉撒睡");}}// Student 类实现多个…

SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

自己写的代码覆盖hibernate中的代码 翻了翻源码发现&#xff0c;很多地方都是使用LinkedHashMap或者是List来传输Entity里面的fields&#xff0c;于是感觉Hibernate应该是考虑到使用Entity里面定义的fields的顺序来实现建表语句里的表字段顺序的。   于是就一步步跟踪下去&…

软件架构期末复习

题型 填空题 20分,2分/空,10空 选择题 30分,2分/题,15题 简答题 30分,6分/题,5题(概念+分析) 案例分析题 20分,5个小题(综合) 分值:体系结构、设计模式各占50% 考试内容 体系结构 SA基础(SA03PPT):SA概念、SA与软件过程(阶段)的关系、SA核心概念模型(重要…

Oracle ADG 日常巡检指南

一、基础状态检查 数据库角色与模式 SELECT db_unique_name, open_mode, database_role, switchover_status FROM v$database;预期状态&#xff1a; 主库&#xff1a;OPEN_MODEREAD WRITE, DATABASE_ROLEPRIMARY备库&#xff1a;OPEN_MODEREAD ONLY WITH APPLY, DATABASE_ROLE…

【MV】key_moments 与 continuous_timeline的编排权衡

一、编排顺序: key_moments → continuous_timeline* 建议使用顺序:key_moments → continuous_timeline 📊 两者关系 key_moments:从continuous_timeline中精选出来的重点(约11个关键时间点)continuous_timeline:完整的时间轴(37个片段,覆盖每句歌词)🎭 实际编…

Tomcat线程模型

目录 1 Linux I/O模型 2 Linux I/O模型分类 3 Tomcat支持的I/O模型 4 Tomcat I/O模型选型 5 Tomcat NIO实现 6 Tomcat异步IO实现 1 Linux I/O模型 I/O&#xff1a;在计算机内存和外部设备之间拷贝数据的过程程序通过cpu向外部设备发出读指令&#xff0c;数据从外部设置拷贝至内…

最新Spring Security实战教程企业级安全方案设计实现

最新Spring Security实战教程&#xff08;十七&#xff09;企业级安全方案设计 - 多因素认证&#xff08;MFA&#xff09;实现 1. 前言2. 为什么需要多因素认证&#xff1f; 传统认证的风险MFA的核心优势常见多因素认证实现方案 3. 多因素认证的核心原理4. 系统架构与流程设计…

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…

大话软工笔记—架构的概要设计

架构的概要设计是在需求工程分析成果的基础之上对整个系统进行的顶层规划&#xff0c;重点是确定设计规范&#xff08;理念、主线等&#xff09;&#xff0c;从大的范围和高度对业务进行规划和设计&#xff0c;架构概要设计的成果“业务架构图”&#xff0c;是后续各阶段设计的…

Flink CDC —部署模式

一、Standalone 模式 独立模式是Flink最简单的部署模式。本简短指南将向您展示如何下载最新稳定版本的Flink&#xff0c;安装和运行它。 您还将运行一个示例Flink CDC作业&#xff0c;并在web UI中查看它。 1、准备 Flink在所有类似UNIX的环境中运行&#xff0c;即Linux、Mac…

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https证书过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…

华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手

华为云FlexusDeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、安装AingDesk应用AingDesk应用介绍下载地址安装AingDesk工具 三、开通DeepSeek-R1-0528商用服务访问…

深度解析Git错误:`fatal: detected dubious ownership in repository` 的根源与解决方案

如果你是在使用自己的移动硬盘&#xff08;U盘&#xff09;操作项目时遇到的这个问题直接执行git config --global --add safe.directory X:/path即可&#xff0c;只要你的移动硬盘&#xff08;U盘&#xff09;没有病毒就不会有安全问题。 深度解析Git错误&#xff1a;fatal: d…

基于Spring Boot的校园社区平台设计与实现

目录 一.&#x1f981;前言二.&#x1f981;开源代码与组件使用情况说明三.&#x1f981;核心功能1. ✅算法设计2. ✅Thymeleaf模板引擎3. ✅MyBatis Plus框架4. ✅部署项目 四.&#x1f981;演示效果1. 管理员模块1.1 用户管理1.2 浏览管理员首页1.3 论坛管理1.4 校园咨询管理…