Vim学习笔记【Ch00,Ch01】

news2024/11/25 5:20:25

Vim学习笔记

  • GitHub的Learn-Vim仓库学习笔记
  • Ch00 前言
  • Ch01 Starting Vim
    • Vim的官方链接
    • Windows10下载和安装Vim
    • Vim初级使用
      • 打开Vim
      • 退出Vim
      • 保存文件
      • 打开文件
      • 帮助文档help
      • argument参数
      • 打开多个窗口
      • 暂停

GitHub的Learn-Vim仓库学习笔记

仓库地址:https://github.com/iggredible/Learn-Vim

Ch00 前言

其他vim学习渠道:vimtutor、help文档
vimtutor入门级别,相对来说内容较少,而help文档内容又太多,容易无从下手。
本仓库的特点:提炼出vim的关键特性/功能(基于自身使用),便于学习者在短时间内轻松上手,学到vim最有用的部分。
包含许多用例,通过VimScript的学习可以帮助用户根据自己的需要自定义命令,而不是仅仅知道怎么用vim。
学习vim更多是要锻炼一种肌肉记忆,也就是说多练习多获益,不需要立马掌握一个命令的所有东西,但需要能够自然、不假思索地运行这个命令。
配置文件Vimrc用于保存一些vim的配置,其中的配置是永久性的,非永久性的配置通常通过在命令行执行set

Ch01 Starting Vim

Vim的官方链接

大部分Unix电脑自带Vim,如果没有可以自行根据Vim的官方下载地址和GitHub进行安装。作者在写这个教程时用的是Vim8.2。
Vim下载,Vim的GitHub

Windows10下载和安装Vim

对于现代的MS-Windows系统,可以直接用可执行文件自动安装:
Windows下载安装
选择默认提供的Vim90版本,安装流程(默认配置)如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成后想要在cmd使用vim,还得配置环境变量(此电脑->属性->高级系统设置->环境变量),将vim90的安装目录添加到Path,即可在cmd命令窗口输入vim启动vim的窗口。

Vim初级使用

  • Vim是一个模式编辑器,不同模式下支持的操作不同,因此每个操作基本都会说明处于何种编辑器模式下方可执行。
  • 打开一个文件时,默认属于命令行模式(也叫普通模式),此时输入冒号:注意是半角字符,中文模式下的冒号不行),光标会移动到编辑窗口的左下角,在冒号之后输入相应命令进行相关操作。
  • 需要编辑文件时,输入字母i会从命令行模式转换到插入模式,才能进行内容编辑。
  • 通过Esc键可以退出插入模式(当Vim处于其他模式时也可以通过Esc返回到命令行模式)。

打开Vim

  • 通过在终端输入vim,默认开启一个新文件。
  • 如果输入vim命令时带参数filename,如vim ch01.txt,该文件不存在时就会在当前文件夹下创建名为filename的文件(带后缀),否则打开文件filename。

退出Vim

  • 在命令行模式下,输入:q或者:quit,会退出当前文件的编辑界面。q是最常用的Vim命令之一,一般用缩写比较方便。

保存文件

  • 编辑文件之后,在命令行模式下,通过:w:write可以保存修改的内容。
  • 如果是新打开的文件,可以通过带文件名参数,将编辑内容保存到指定文件,如:w file.txt会将内容写入file.txt。
  • 编辑结束后想要保存并退出,可以将两个命令合并使用::wq
  • 编辑后想保留原文件内容,可以通过执行:q!直接退出,不会保留前一次保存之后的修改,!用于忽略提示强制执行。修改文件后直接执行:q,不会马上执行退出操作,而是在命令行底端输出如下信息:
    修改后执行q

打开文件

  • 通过在终端输入vim+文件名的形式可以打开指定文件,如vim file1.txt
  • 要同时打开多个文件时,执行vim file1.txt file2.txt file3.txt,各个文件位于不同的缓存区。不同文件之间如何切换等操作在后续展开,要关闭所有打开的文件的指令是:qa(quit all)。

帮助文档help

  • 命令行模式下通过:h:help打开帮助文档,相当于用Vim打开了help.txt(只读),因此也是通过:q退出帮助文档界面
  • 通过在该指令后带参数打开指定命令的帮助文档,如:q write-quit
  • 不确定待查找命令的完整名称时,输入:h后,在其后输入不完整的指令,可以通过Tab键自动补全帮助文档中包含输入字符的全部指令,显示在输入上方,通过左右移动就能选择不同的指令。
    Tab补全示例

argument参数

  • 这里的argument参数指在终端输入vim时其后附带的参数,比如用Vim打开某个文件。
  • 终端输入vim --version可以查看Vim的版本信息、可用/不可用功能列表、用户信息和编译链接方式。
  • 也可以在Vim内部,在命令行模式下输入:version查看相同的信息。
  • 如果需要在打开一个文件时同时执行某个Vim命令,可以通过将+{cmd}传给vim实现。
    例如,:s(或:substitute)表示替换字符串,以下终端命令(第二种-c代替+,两种形式等价)将文件中的所有的pancake替换为bagel,文件打开时所有的pancake替换为bagel,但需要执行:w,修改结果才会存入文件。
vim +%s/pancake/bagel/g hello.txt

或:

vim -c %s/pancake/bagel/g hello.txt

命令还可以串联起来:

vim +%s/pancake/bagel/g +%s/bagel/egg/g +%s/egg/donut/g hello.txt

打开多个窗口

通过在终端命令vim之后加上-o(字母小写)打开多个水平分屏,或加上-O(字母大写)打开多个竖直分屏。
例如,vim -o2打开2个水平分屏窗口,vim -O5打开5个竖直分屏窗口;vim -o5 hello1.txt hello2.txt打开五个水平分屏窗口的同时,将hello1.txt和hello2.txt分别给其中的第1和第2个窗口。
注:水平分屏窗口指每个分屏的水平方向是完整的,各窗口之间呈现上下排列的关系,光看文字描述可能会误解为几个窗口水平排列。

暂停

编辑中途想暂停,可以通过快捷键Ctrl+z进行,也可以在命令行模式下执行:suspend:stop。在终端通过fg返回暂停的页面。
实践发现快捷键不能在插入模式下执行,需要切换到命令行模式;Ctrl+z后直接在终端键入fg会出现“不是内部或外部命令”的错误,尝试vim -fg会报错“无法使用图形界面:编译时没有启用”(这个尝试应该是错的,有点病急乱投医了);另一台电脑Windows系统上的vim版本是8.2,但无论是Ctrl+z还是:suspend,都是编辑界面闪一下,然后回到原界面。

  • 可能suspend功能只能在unix系统实现?(但我确实在文件所在文件夹发现了后缀为.swap的文件)这部分存疑,后续补充。

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

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

相关文章

Qt--数据库--增删改查操作

目录 1. Qt数据库简介 2. 连接与关闭 3. 建表 dialog.h dialog.cpp dialog.ui 4. 增删改 1.添加数据 dialog.h dialog.cpp 2.删除数据 dialog.h dialog.cpp 3.修改数据 dialog.h dialog.cpp 5. 查询 dialog.h dialog.cpp 判断数据是否存在 dialog.h dialog.cpp 1. Qt数据库简介…

如何在IVD行业运用IPD?

IVD(体外诊断,In Vitro Diagnostic)是指对人体样本(血液、体液、组织)进行定性或定量的检测,进而判断疾病或机体功能的诊断方法。IVD目前已经成为疾病预防、诊断治疗必不可少的医学手段,约80%左…

ChatGPT国内使用办法,无需魔法上网,免费使用ChatGPT,长期更新!!

新建了一个网站 每天给大家更新可用的免翻国内可用chatGPT https://ai.weoknow.com/ 2023.5.7新增一个 软件名称ChatGPT✦ ▌ 软件摘要 软件名称:ChatGPT 适用设备:浏览器 文件大小:0MB ▌ 软件简介 ChatGPT非常强大,但国内合…

12-CSS-语法和选择器

一、语法格式: 选择器指向需要设置样式的 HTML 元素。声明块包含一条或多条用分号分隔的声明。每条声明都包含一个 CSS 属性名称和一个值,以冒号分隔。多条 CSS 声明用分号分隔,声明块用花括号括起来。 二、选择器: CSS 选择器…

第一章 计算机系统概述

1.1 计算机发展历程 1.1.1 计算机硬件的发展 计算机系统硬件软件 计算机硬件的发展: 第一代计算机:(使用电子管),第二代计算机:(使用晶体管),第三代计算机:(使用较小规模的集成),第四代计算…

Strategy 模式

文章目录 💡问题引入💡概念💡例子💡总结 💡问题引入 软件为什么总是隔一段时间就要更新迭代?当然是因为不同的需求而发生了改变。 在软件构建过程中,某些对象使用的算法可能多种多样&#xff…

MySQL——通过C语言连接

文章目录 1、前置安装2、正式连接增加删除修改select 1、前置安装 前提: 如果你的mysql是通过yum安装的,那么那些库文件依赖,都是有的,不用你安装了。 但是如果是用 rpm包安装的,就需要去官网下载对应的包。 这些是…

操作系统与进程调度

文章目录 一、计算机操作系统1.操作系统(Operating System)2.计算机系统示意图 二、进程1.进程/任务(Process/Task)2.进程控制块抽象(PCB Process Control Block)3.进程调度(Process Scheduling)4.内存管理&#xff08…

知识点回顾(一)

1.final,finally ,finalize final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final&…

ChatGPT潜能无限:多个震撼应用场景一一揭晓

ChatGPT 具有对个人、公司和各个行业非常有用的各种应用程序。在本文中,我们继续解释ChatGPT 应用(基础应用场景,请点击这里查看)。 看完此篇文章中,你会非常惊讶于起潜能无限的应用场景及其强大的功能,那…

Nginx之rewrite实现URL重写

1.开篇 rewrite是nginx服务器提供的一个重要功能,用于实现URL的重写。例如我们访问https://aa.qq.com,打开的是https://age.qq.com/,这就是使用URL重写的特性来实现的。 ngx_http_rewrite_module为实现URL重写提供了指令支持。 官方文档地…

ChatGPT教程(终极版)

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT 这是一篇姗姗来迟的ChatGPT教程。 小白对ChatGPT的介绍足以让你阅读我的文章。 如果你已经使用过ChatGPT,那么祝贺你发现了宝藏。未来的先进技术一定会帮助你有所收获。 前提是你可…

我的『1024』创作纪念日

记得,2020年07月22日我撰写了第1篇技术博客:《遗传算法实例解析》在这平凡的一天,我赋予了它不平凡的意义也许是立志成为一名专业T作者、也许是记录一段刚实践的经验但在那一刻,我已在创作这趟旅程中出发今天,是我成为…

百度蜘蛛简介

百度蜘蛛简介 工作机制百度蜘蛛的工作要素百度蜘蛛原理的应用Baiduspider对一个网站服务器造成的访问压力如何?Baiduspider多长时间之后会重新抓取我的网页? 工作机制 百度蜘蛛的构建的原理。搜索引擎构建一个调度程序,来调度百度蜘蛛的工作…

2023.5.13>>Eclipse+exe4j打包Java项目及获取exe所在文件的路径

Eclipseexe4j打包Java项目及获取exe所在文件的路径 1、打包exe文件1.1 打jar包1.2 打包exe2、在程序中获取exe所在路径3、遇到问题4、JDK version和class file version(Class编译版本号)对应关系5、参考文章 1、打包exe文件 1.1 打jar包 右单击项目选择“Export…” 1.2…

软考A计划-真题-分类精讲汇总-第三章(数据库)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

小程序开发中的插件、组件、控件到底有什么区别?

小程序插件代码由一些自定义组件和 JS 代码文件构成,插件开发者在发布插件时,这些代码被上传到后台保存起来。当小程序使用插件时,使用者需填写插件的 AppID 和版本号,就可从后台获取相应的插件代码。小程序代码编译时&#xff0c…

基于 CentOS 7 构建 LVS-DR 群集

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 前言: 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式其各自的优势 DR 模式 原理:首先…

Hadoop之block切片

切片是一个逻辑概念 在不改变现在数据存储的情况下,可以控制参与计算的节点数目 通过切片大小可以达到控制计算节点数量的目的 有多少个切片就会执行多少个Map任务 hdfs上数据存储的一个单元,同一个文件中块的大小都是相同的 因为数据存储到HDFS上不可变&#xff0…

Qt--QString字符串类、QTimer定时器类

目录 1. QString 字符串类 dialog.cpp 2. 容器类 2.1 顺序容器 QList 示例代码: student.h student.cpp dialog.h dialog.cpp 运行结果: 2.2 关联容器 QMap 示例代码: dialog.h dialog.cpp 运行结果: 3. Qt类型 3.1 跨平台数据类型…