当前位置: 首页 > 编程日记 > 正文

VIM命令快速记忆(转自杰哥)

因为自己也是个linuxer

熟练运用VIM是必须的,恰好学长杰哥对此有研究,

转来给大家分享。对此表达对杰哥的敬意。

有好东西分享给大家才能相互学习是吧。

要做个Linuxer,VIM的操作是必须就跟手指头盲打键盘那么熟练。

首先说下Vim的两种最常用模式,这是对菜鸟说的:),普通模式和输入模式,在普通模式下所有的按键都是命令,在输入模式下
可以输入字符。

在刚用vi打开文档时,都是普通模式,本文就介绍如何快速记住一些最基本的操作命令。

先讲讲在普通模式下的光标移动。

当你的打字速度到达一定境界时,比如我:),我非常不喜欢把手移到小键盘或者方向键那里去,因为那个地方操作起来太慢严重影响我心情有木有,所以VIM就是为高效的人设计的,它充分认识到这一点,在VIM里上下左右风别被 j k h l 代替,

h:在最左边,当然是左移动啦!
l:同理,在最右边,右移动!
j:当刚打开一个文件,是不是一般都在开头,要往下移动啊!标准指法里右手食指在J上,用的最频繁,因此就用J来往下移咯!
k:有下移动当然得下移动,就在J旁边吧,多好记!
但是每次只移动一个,好麻烦!
如果我要往下移动五行,按五次不是要累死我,而且磨损键盘!
高效的VIM当然已经解决问题,
在hjkl前加数字,比如3j就是向下移动三行,3l即使向右三行啦!

但是虽然hjkl移动很方便,但是只能逐个字符移动,好不爽,我想一个一个单词的移动,
w 可以解决,你用w就可以很方便的每次移动单词,
怎么记住这个快捷键呢,w就是word的缩写啊,亲!
w是向右移动一个单词,想移动多个单词,和上面一样加个数字就可以来,3w向右移动三个单词。
能向右移还得向左移动啊,b可以解决这个问题,b是back的缩写,后退一个单词嘛!3b的意思你懂的。
随便这里提下,w在移动过程中是每次光标都停留在单词的首字符,想让光标在移动中停留在尾字符或者
在一个单词中想跳到单词的尾字符,用“e”,end嘛

简单的移动掌握上面几个键就可以了,当然还得知道有时候我想快速移动到一行的开头和结尾怎么办呢,
数字“0”,第0个字符的意思,就可以将光标移到一行开头处,符号“$”,就是美元的符号,移动到行尾。

移动先介绍这么几个常用的,再讲讲文本操作

对文本的操作,当要求不怎么高时,无非就是插入文字,修改文字,删除文字,或者复制剪切粘贴这么几种。

插入文字,因为是insert,快捷键就是“i”,但是用你想在一行末尾插入的时候,用i就蛋疼了,因为i是在光标
前面插入字符,所以末尾插入字符就等于在倒数第二个字符的地方插入了!这时候要用”a“,a和i的功能完全一样,
add的缩写,增加的意思,在光标的后面插入字符。
有时候,特别是敲代码的时候,我们要另起一行对吧,在上一行的任意位置按“o”,open new line ,哈哈,你已经在
新的一行插入文字咯

修改文字,change,快捷键“c”,不过在普通模式下你按一个c没反应,为啥?你还没告诉VIM你要修改的对象呢,
光标停在那里,我是修改这个单词呢,还是要修改一整行呢。
cw,w是移动一个单词的快捷键,cw的意思就是对光标当前所在出到这个单词的结尾修改,cb的意思我就不说了。
那c2b呢?,嘿嘿,从光标往前两个单词修改!
c0,c$,分别是光标到本行开头和结尾的所有文本修改。

发现奥妙了吧,移动命令和文本操作命令可以搭配起来用有木有,这正是VIM最强大的地方,各个命令可以组合使用。
其实我们可以这么考虑,在移动命令中,如果按照word里边按住shift的思维,移动是不是就等于选中?移动的轨迹就是
文本的选择对象!所以在vim里一般的命令格式为
(command)(number)(text object)
command就是对文本的操作,“c”是修改,“d”是删除,“y”是复制等,number + text object 组合起来就是命令
所要操作的文本对象啦!
比如d2h,d是删除,2h是往左两个字符,那d2h就是删除光标左边的两个字符咯!
举一反三,各种组合等你实际应用中再用吧。

现在比如我有一个单词,love,不小心写成了loce,要把c改成v,如果我们用命令“c”的话,我们需要先定位到e,然后
c1h,改一个字符用得着这么麻烦嘛?当然不用,把光标移动到”c”上,输入rv即可!r是replace,也是替换对吧,他的功能就是
替换一个字符,在r后面跟着的v就是新文本。很方便对不,~~~……
对应删除d,要删除一个字符,用x就可以了! x就是小学老师给我们打的大叉叉么,嘿嘿。

有时候我们不小心手贱,安了一个x,想撤销怎么办?
vim当然已经给我们考虑好了,你按“u”,u即是undo,就跟word一样,多次按u就是撤销多次哦~

插入修改删除我们都会了,下面我们来讲怎么剪切复制粘贴呢?
这时候我们要用到“p”命令,p就是place嘛,放置的意思。
前面我们说了删除命令“d”和“x”,其实删除就是剪切嘛,这些被删除的文本会被放到缓冲区中,
”p“命令会将缓冲区的中文本加入到当前光标的后面,如果我们用了d3j删除了3行,对于多行的文本,
p会放置在当前光标的下一新行。
对于x,有个妙用,还是用love这个单词吧,如果我输入成了loev,那我只要把光标移动到“e”上,然后xp就搞定了!
呵呵,x先把当前字符给删除了,这时候光标在“v”,然后我们用p把“e”放到“v”后面,就完成两个字符的对掉啦。
剪切粘贴你也会了,复制怎么办呢,用”y“,比如yw,复制了一个单词,到想要放置的地方,p就好啦。

还得介绍几个非常规的组合。
cc,c更改,两个c算啥?两个c代表更改一整行
dd,删除一整行,
yy,复制一整行

VIM 是对命令的大小写敏感的,上面介绍的全是最基本的小写指令,下面来看看那大写命令的快捷之处!

想到本行的开头插入吗?用“I”
想到本行的末尾插入吗?用“A“
想在本行的上一行新开一行写代码吗?用“O”
想把剪切后者复制的文本放在光标之前吗?用“P“
想在移动过程中撇开那些烦人的标点嘛?用“W”,“B”,“E”

C是c$的缩写,即是从当前光标到本行末尾的所有文本更改
D是d$的简写

现在我有两行句子:

I love you ,please
come back.

上述两个句子应该在同一行对吧,我不用吧光标移动到第二行,然后按i进入插入模式,然后再来个退格键。
我只需吧光标移到第一句,用一个”J“就搞定了~

在英文中每个句子的开头第一个字母要大写对吧,万一我当时没大写然后我要改呢,传统做法,把光标移动上去,
然后rA,文艺青年,把光标移动到上面,用“~”搞定,这个符号在“1”的左边,按住shift键。

再介绍一个有用的命令,“.”,就是句号,vim会记住你上次操作是什么,然后用“.”就可以重复执行上次命令!

学完上述这些基本操作,就可以在黑乎乎的屏幕上装逼一把啦~!
当然vim的功能远远超过这些。


转载于:https://www.cnblogs.com/web-lover/archive/2012/01/21/2615950.html

相关文章:

刻意练习:LeetCode实战 -- Task28.跳跃游戏

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

类操作是什么意思?jQuery的类操作教程

类操作就是通过操作元素的类名进行元素样式操作,当元素样式比较复杂时,如果通过css()方法实现,需要在CSS里编写很长的代码,既不美观也不方便。而通过写一个类名,把类名加上或去掉就会显得很方便。下面通过代码演示类的…

刻意练习:LeetCode实战 -- Task29. 加油站

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

C#从SQL server数据库中读取l图片和存入图片

一、从图片中获得二进制值的基本方法:Image.Save 方法 (String, ImageFormat) 这会将保存 Image 写入指定的文件中指定的格式。 命名空间: System.Drawing 程序集: System.Drawing(位于 System.Drawing.dll) 语法: public void S…

linux下查看内存使用情况

在Linux下查看内存我们一般用free命令:[rootscs-2 tmp]# free total used free shared buffers cachedMem: 3266180 3250004 16176 0 110652 2668236-/ buffers/cache: 471116 2795064Swa…

现在转行学习UI设计好不好就业

​ UI设计是很多企业都会有需求的一个岗位,对于现在转行学习UI设计好不好就业这个问题,小编的回答是肯定的,最直接的方法就是上招聘信息,如果说招聘网站上UI设计师职位很少,那就说明UI设计行业已经差不多饱和了。 ​ …

刻意练习:LeetCode实战 -- Task30.通配符匹配

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

iOS 11 安全区域适配总结

2019独角兽企业重金招聘Python工程师标准>>> 导语:本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结。内容包括五个部分:问题的原因分析、adjustContentInset属性的计算方式、什么情况下的tableView会发生内容…

(广州)软件开发定制服务,工作流引擎 OA 库存管理系统

本人专注于工作流的研究设计同时提供软件开发定制服务,工作流引擎 OA系统 库存管理系统 如果有机会合作共事请联系:15817167503(本人在广州) QQ:1311663711 加时请注明软件定制 广州软件定制开发 转载于:https://www.cnblogs.com/…

Java类加载机制详解【java面试题】

Java类加载机制详解【java面试题】 (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户…

C#获取文件的当前路径

1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径。 2.System.Environment.CurrentDirectory -获取和设置当前目录(该进程从中启动的目录)的完全限定目录。 3.System.IO.Directory.GetCurrentDirectory() &a…

c# ThreadPool 判断子线程全部执行完毕的四种方法

1、先来看看这个多线程编程多线程用于数据采集时,速度明显很快,下面是基本方法,把那个auto写成采集数据方法即可。using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace ConsoleApplication1{…

腾讯精选练习 50 题(Leetcode)笔记 PDF下载!

昨天在知识星球中立了一个Flag,第一步采取的行动就是把以前刷的“腾讯精选练习 50 题”重新梳理一下,就有了今天这本170多页的小册子。 这本小册子即可以作为学习数据结构与算法课程的参考资料,也可以作为备考计算机类研究生的备考资料。希望…

Python培训:try-except语句与else子句联合使用处理可能出现的程序异常

异常处理的主要目的是防止因外部环境的变化导致程序产生无法控制的错误,而不是处理程序的设计错误。因此,将所有的代码都用try语句包含起来的做法是不推荐的,try语句应尽量只包含可能产生异常的代码。Python中try-except语句还可以与else子句…

Backup Exec 2012 备份和还原活动目录(非授权还原)

延续以上两篇,安装配置完毕后,开始进行备份操作。 环境一如上篇: DC: pdc1.fengdian.info BE2012 Svr: backup.fengdian.info 本例使用BE2012对活动目录进行备份和后续的还原操作,通过模拟误删除DC中的两个OU及其用户账号,使用先…

hdu3368 Reversi

题意:一种翻转棋游戏,对当前的棋局,问黑子下一步最多能将几个白子翻为黑子,(当前黑子与原先棋盘中的黑子的连线中间的白子会翻成黑子) 分析:很简单的搜索题,不过一开始一直WA&#x…

有符号整型的数据范围为什么负数比正数多一个?

背景 我们先看Leetcode的这道题目: 标题:50. Pow(x, n)难度:中等https://leetcode-cn.com/problems/powx-n/ 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000示例 2: 输入: 2.10000, 3…

UI设计培训:UI构思创意技巧和方法

想要作为一名合格的UI设计师,那么创意技巧和方法是非常重要的,很多刚入职场的新人或者是工作多年的设计师都会在创意技巧和方法上遇到瓶颈,下面小编为大家整理一些UI构思创意技巧和方法,希望能够帮助到大家。 UI设计培训&#xff…

博客园 cnblogs博客添加Google Analytics统计

在cnblogs的文章列表中只可以看到自己的每篇文章的页面浏览量,没有详细的统计信息。Google Analytics作为强大的统计工具,能得到几乎所有想要的统计信息,是博客不可多得的好工具,本文介绍如何在cnblogs博客中使用Google Analytics…

技术图文:Python 位运算防坑指南

背景 我们先看这个题目: 标题:137. 只出现一次的数字 II难度:中等https://leetcode-cn.com/problems/single-number-ii/ 给定一个 非空 整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出…

聊聊nginx报错499问题

序本文主要来聊一下nginx的access log当中出现的499问题。 问题描述499 CLIENT CLOSED REQUESTA non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request. 原因服务器返回http头之前&#xff…

UI设计需要报培训班学习吗

UI设计在很多企业已经是不可或缺的一个岗位了,所以UI设计的发展空间是非常大的,想要做UI设计师,光靠自学是不行的,那么UI设计需要报培训班学习吗?来看看下面小编的详细介绍就知道了。 UI设计需要报培训班学习吗?目前学习UI设计主…

技术图文:位运算技术在求解算法题中的应用

背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第一篇图文。 在总结这篇图文的时候,顺便把遇到的坑写了两篇辅助的图文,大家可以参考一下: 有符号整型的数据范围为什么负数比正数多一个?P…

JavaScript学习系列6 充实文档的内容

JavaScript 两项基本原则渐进增强:你应该总是从最核心的部分,也就是从内容开始。应该根据内容使用标记实现良好的结构;然后再逐步加强这些内容。平稳退化:不支持JavaScript也能访问基本内容。内容:我们在Html文件中编辑…

mapreduce中设置自定义的输入类,进行文本解析(默认以tab键为分隔符)

job.setInputFormatClass(KeyValueTextInputFormat.class);//此时map端输入的键的内容为第一个tab键以左的内容,值得内容为第一个tab键以右的内容转载于:https://www.cnblogs.com/le-ping/p/7788973.html

如何分辨Web前端培训机构的好坏

web前端在互联网行业有着非常高的薪水和很好的前景,想要学习web前端的人越来越多,对于web前端培训机构的选择让很多人犯了难,那么如何分辨Web前端培训机构的好坏呢?该如何选择呢?来看看下面的详细介绍。 如何分辨Web前端培训机构的好坏? 1…

mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

配置mysqllvskeeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 test3调度器 1、安装与配置Keepalived 首先在节点test1、test2上安装Keepalived软件,软件安装非常简单。 12345678910111213[root…

技术图文:浅析 C# Dictionary实现原理

背景 对于 C# 中的 Dictionary类 相信大家都不陌生,这是一个 Collection(集合) 类型,可以通过 Key/Value (键值对) 的形式来存放数据;该类最大的优点就是它查找元素的时间复杂度接近 O(1),实际项目中常被用来做一些数据的本地缓存…

思念水饺吃成泡沫水饺(图)思念质量门

思念再曝水饺吃出泡沫 !思念带着“创可贴汤圆”和“泡沫水饺”“拜晚年”了,而失去新国标的“护身符”,思念这次还要找出什么样的借口为汤圆里的创可贴和水饺里的泡沫找“台阶”下呢?思念汤圆刚被爆吃出创可贴,思念水饺…

jQuery动画的显示与隐藏效果

jQuery中用于控制元素显示和隐藏效果的方法如表1所示。 表1 控制元素的显示和隐藏 在表1中,参数speed表示动画的速度,可设置为动画时长的毫秒值(如1000),或预定的3种速度(slow、fast和normal);参数easing表示切换效果,默认效果为s…