vim 不常见但好用的命令

● 跳跃
○ 向前跳跃是 f
○ 向后跳跃是 F
● 继续
○ 保持方向是 ;
○ 改变方向是 ,
● 可以加上 [count] 来加速

● ^ 是到本行第一个非空字符
● 0 是到本行第一个字符,不管是不是空格
● g_ 是到本行最后一个非空字符
● 两个按键要依次按下
● $ 跳到本行最后一个字符,即使他是空格
● I
○ 相当于^i
● A
○ 相当于$a
● w
● 意思是 word
● 还学习了向后一个单词
● b
● 意思是 backward
● 配合d有删除的效果
● dw 会删到下一个单词的头 所以如果下个单词前面有空格的话会被删掉
● de会删除到这个单词的末尾 如果这个单词到下个单词直接有空格的话会停在这个空格上
● db 也是有效果的
W 真的就是跳一个字符串了 w只是一个单词 会在“ -等字符前停下
大词和小词的区别
● 从插入模式到正常模式要用 esc
● 但是 esc 距离基本起手势太遥远了
● 可以用 ctrl + c 来替代
● 可这仍然很慢
● 有没有更有效率的方法呢?
● 可以自定义配置
● i、I和a、A 都可以进入插入模式
○ i 在光标前插入
○ I 在本行最前插入
○ a 在光标后插入
○ A 在本行最后插入
● ctrl+c退回到正常模式
● 现在又加了 o、O
○ o 本行下方插入一个新行
○ O 本行上方插入一个新行
● 再练练重复、撤销、重做
○ 按几次 . 重复插入操作
○ u 可以撤销
○ ctrl+r 可以重做
如果不显示行号,就输入 :set nu
● 反悔是重做
● 就在 u 的帮助下面有介绍
● ctrl+r
● 在正常状态下按 ctrl+r 可撤销撤销操作
● 就是重做
○ 按一次 u 撤销一步
○ 再 ctrl+r 再撤销撤销
○ 按一次 u 撤销一步
○ 再 ctrl+r 再撤销撤销
○ 好像可以来回来去拉锯
想在 vim 中使用鼠标控制,我们先需要进行基本的配置:
● 首先我们在 vim 中搜索帮助,输入 :h mouse
● vim 提示我们执行 :set mouse=a,就可以用鼠标了!!!
○ 我们可以使用鼠标移动光标
○ 使用滚轮可以翻页
○ 还可以使用鼠标点击相关的主题链接
这些现代科技真的很不错,使用鼠标后操作更便捷了,但是鼠标其实会更影响效率,因为鼠标会让我们的手离开键盘。
然而 vi 就是想让用户可以实现,手不离开键盘核心区域就完成所有的编辑工作:
● 方向移动是最常用的操作
● 他想让你相对灵活的右手位置在键盘核心区完全不动
● 只需要按下手指就完成相应的移动操作
● 而且比鼠标还快速请添加图片描述
● 正常模式 (Normal mode)
○ 也叫默认模式。
○ 进入 vim 时默认的模式所有输入的键都直接对应着命令
○ 也被叫做命令模式.
● 插入模式 (Insert mode)
○ 任何键盘录入都会插入到当前文档中
● 可视模式 (Visual mode)
○ 很像正常模式
○ 但是移动命令会改变选中的一块高亮区域
○ 执行的命令会对选定范围进行
● 选择模式 (Select mode)
○ 可以用鼠标或光标键高亮选择文本
○ 任何输入都会替换选择的高亮文本
○ 并进入插入模式
● 命令行模式 (Command-Line mode)
○ 可以窗口下方执行一条命令
○ 一般是通过 : 执行单行命令
○ 通过 / 和 ? 进行搜索
● Ex mode (多行命令执行模式)
○ Ex 指的是 Execute
○ 在 Normal 正常模式下使用 gQ 进入
○ 使用 :visual 退出

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

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

相关文章

加密机组会 会议纪要

2020年9月28日 1,使用基类继承的机制,调用写好的函数接口 1,不要 使用Content(封装数据,本质是一个json字符串),1,因为每次使用这个需要对里面的内容进行序列化,转化成…

c++为什么没有垃圾回收

垃圾回收 内存清理的另一个方面是垃圾回收。在支持垃圾回收的环境中,程序员几乎不必显式地释放与对象关联的 内存。运行时库会在某时刻自动清理没有任何引用的对象。 与C#和Java不一样,在C语言中没有内建垃圾回收。在现代C中,使用智能指针管理…

C++ Vecctor容器浅析

Vector的定义 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。vector…

C++primer第二章2.4节对于const限定符相关内容进行详解

const限定符 const对象一旦创建后其数值就不会被再次改变,因此const对象必须初始化。const对象只在文件中有效在不同的文件中使用不同的const来定义不同的常量,那么每个文件定义的变量只会在自己所属的文件中有效。如果想让多个文件共享同一个const变量…

二分法的常见问题

mid(leftright)/2; mid (high - low) / 2 low; 这样写可以防止left right溢出 ,不过数足够大是时候该溢还是溢 为什么要取右边中间数呢?这是因为在区间里 只有 2 个元素的时候,把[left…right]划分成[left…mid - 1]和[mid…right]这两个区间&#x…

演示IPFS的一个完整的流程以及针对部分概念的详解

整体的流程 1,创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 $ ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2…

c++ 算法的时间复杂度

一般ACM或者笔试题的时间限制是1秒或2秒。 在这种情況下&#xff0c;C代码中的操作次数控制在 10^7为最佳。 下面给出在不同数据范国下&#xff0c;代码的时间复杂度和算法该如何选择&#xff1a; 1.n≤ 30,指数级别&#xff0c;dis剪枝&#xff0c;状态压缩dp 2.n < 100 &g…

简单工厂模式实现计算器

#include <iostream> #include <vector> #include <string> #include <iostream> #include <map> using namespace std; #define __THROW_ZERO do {cerr << "The dividend is 0" << endl; exit(1);}while(0);/* 简单工厂处…

TDengine安装教程

TDengine安装教程 前言 TDengine的安装十分简单&#xff0c;可以有以下三种安装方式&#xff0c;源码安装、通过Docker容器进行安装、通过安装包进行安装。但是使用源码安装较为复杂&#xff0c;通过docker的方式最为简单&#xff0c;但是需要一定docker相关的知识&#xff0…

C++中size_t的学习

size_t的定义 size_t是一种数据相关的无符号类型&#xff0c;它被设计得足够大以便能够存储内存中任意对象的大小。设计 size_t 就是为了适应多个平台&#xff0c;size_t等效于unsigned short int 或者 unsigned long int 类型&#xff0c;这个过程是动态匹配的。在需要通过数…

策略模式解决商店打折问题

#include <bits/stdc.h> using namespace std; /*策略模式解决商店打折问题*/class Cashsuper { private:/* data */ public:virtual double addcash(double cash) 0;double Getresult(double money){return addcash(money);} };class Cashnormal : public Cashsuper {p…

android 软件首次运行时引导页左右滑动效果

很多手机软件在安装后首次运行都会进入到引导页面&#xff0c;再次运行时会进入到主页面。 多了不说了&#xff0c;先看效果图&#xff1a; 代码如下&#xff1a; main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:an…

C++中size_type类型详解

介绍 是和string类类型和vector类类型定义相关的类型&#xff0c;用以保存任意string对象或vector对象的长度&#xff0c;标准库类型将size_type定义为unsigned类型string抽象意义是字符串&#xff0c; size&#xff08;&#xff09;的抽象意义是字符串的尺寸&#xff0c; str…

单一职责原则 实现贪吃蛇代码的封装

单一职责原则(SRP),就一个类而言&#xff0c;应该仅有一个引起它 变化的原因。 一个c语言的贪吃蛇代码 如何使用单一职责原则封装成c面向对象呢 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include <wi…

android ProgressBar实现扫描SD卡文件 + SimpleAdapter绑定ListView

代码 activity_main.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"to…

C++标准库函数begin和end函数

主要的目的 为了让指针更加简单、安全&#xff0c;引入了begin和end函数&#xff0c;这两个函数和容器中两个同名的成员函数类似。但是由于数组毕竟不是类类型&#xff0c;因此这两个函数不是成员函数。正确的使用形式就是将数组作为他们的参数int ia[] {0,1,2,3,4,5,6,7,8,9…

dex分包之--------multidex包的配置使用

目录&#xff1a;一、前言二、产生原因三、MultiDex的简要原理四、MultiDex的使用 一、前言 首先说一下我遇到的情况&#xff0c;最近接手了一个项目是在已有的项目里进行更新添加一些功能&#xff0c;然后该项目导了N多的包&#xff0c;在我使用Android Studio的run”App”直…

C++ primer第六章函数的学习

介绍 首先介绍函数的定义和声明&#xff0c;包括如何传入参数以及函数如何返回结果。C语言允许使用重载函数&#xff0c;即几个不同的函数可以使用向同一个名字。所以接下来介绍重载函数的方法&#xff0c;以及编译器选择如何从函数的若干重载的形式中选取一个与调用模板相互匹…

C语言指针作为函数参数 以及智能指针作为函数参数

总所周知指针作为函数参数传递的时候 传递的是指针的拷贝&#xff08;指针也是变量&#xff09; 这里提供四种指针的传递方法 改到实际的指针。 #include <stdio.h> #include <memory> #include <iostream> using namespace std; void test1(char **string)…