Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
本文章原创首发于公众号:编程三分钟
vim 替换、撤销、缩进、查找
上一次我们掌握了移动、跳转、定位、操作(删除、复制、粘贴),基本使用vim脱离鼠标完全是可以做到的了。速记如下:
移动: h,l,j,k,w,b
跳转:G nG f/F+字母
定位:G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾
操作:y d p
知识点
- 字符替换
- 缩进与调整文本位置(居左、居中、居右)
- 字符查找
字符的替换及撤销
查找和替换是编辑器中最常用的功能之一,在普通编辑器当中查找替换时,你可能需要先移动鼠标在菜单中点击查找的功能,输入查找内容,再点击确认查找。而在vim中,所有的操作只需要敲击几下键盘就行了,手不用离开键盘区域,速度自然会快很多很多。
替换和撤销(Undo)
替换和Undo命令都是针对普通模式下的操作,这次用到三个字母,r/R,c/C,u/U
r+<待替换字母> 将游标所在的一个字母替换为其他字母(如下#替换成i)

当然了,一个一个替换甚是麻烦,不妨使用R连续替换
R 连续替换,直到按下Esc

cw 删除一个单词,并进入插入模式

C 删除从游标处开始到当前行尾,并进入插入模式

u 撤销一次操作(如下,粘贴了Internet单词三次,按u三次,撤销粘贴操作)

U(大写) 无论当前行修改了多少次,撤销当前行的所有修改

Ctrl+r redo,即撤销undo的操作(如下,删除一个单词,写入123,之后交替u和Ctrl+r,可以观察到重复撤销123输入,再恢复123输入)

快速缩进
快速缩进在编辑代码时极其有用,快速调整代码缩进非常的爽,缩进操作均在普通模式下有效
使用命令进行快速调整缩进操作
>> 整行将向右缩进

<< 整行向左回退

设置缩进字符数
命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 (可以简写成sw,下面我都用简写)
获取目前的设定值
:set shiftwidth?

设置缩进为n个字符
:set shiftwidth=n

输入 ESC 回到普通模式,再次尝试 >> 看缩进量是否变化

调整文本位置
命令行模式下输入:le(left)命令使本行内容靠左
:le
命令行模式下输入:ce(center)命令使本行内容居中
:ce
命令行模式下输入:ri(right)命令使本行文本靠右
:ri

查找
快速查找
普通模式下输入 / 然后键入需要查找的字符串 按回车后就会进行查找。 输入n 和 N 可以继续查找。 n是查找下一个内容,N查找上一个内容。

? 与/ 功能相同,只不过?是向上而 / 是向下查找。 :noh退出查找模式

高级查找
普通模式下输入\*寻找游标所在处的单词
普通模式下输入\#同上,但 \#是向前(上)找,\*则是向后(下)找

以上查找n,N 的继续查找命令依然可以用
小结
这一节学习了替换,撤销操作及快速查找,其中替换和文档内快速查找的功能十分实用,希望能够熟练掌握。
速记如下:
替换:r+<待替换字母>,R
删除并插入:cw、C
撤销:u、U、ctrl+r
调整文本位置::le、:ce、:ri
查找:\文本、?文本、n、N

Vim高手,从来不用鼠标2——替换、撤销、缩进、查找的更多相关文章
- Vim高手,从来不用鼠标
Vim脱离鼠标第一步 平时不可缺少的会用到vim,但是避免不了鼠标,事实上,省略鼠标是完全可以的,没有想像中那么难,看我短短几行带大家一起省略鼠标. 对了,vim有三种模式,基本模式就是用来输入命令的 ...
- 为什么黑客都不用鼠标?你听说过Linux吗?
为什么黑客都不用鼠标?你听说过Linux吗? 微软和它的朋友们的如意算盘. 下面来看看微软的收入是怎么来的.首先,Windows系列操作系统,一个就是 800+RMB,每次升级又是几乎同样的价钱.Wi ...
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
解决vi/vim中粘贴会在行首多很多缩进和空格的问题 secureCRT会将你原来的文本原封不动的按照字符串的样式发送给服务器.所以当你的服务器上的vim设置为autoindent的话,在i模式下,那 ...
- Vim使用技巧:特定文件类型关联缩进
Vim如何打开特定文件类型关联自动缩进呢?答案:将filetype indent on写入你的.vimrc文件中
- vim不用鼠标复制粘贴
第一种方法(只能复制行): 在当前行3yy(表示复制3行,多行同理),然后鼠标移到需要粘贴的位置,按p,即可粘贴 第二种方法(无限制): 按v进入visual模式,移动光标(推荐使用hjkl,用熟后比 ...
- vim基本命令之剪切复制粘贴替换
首先是剪切(删除): 剪切其实也就顺带删除了所选择的内容,所以既可以当剪切命令用,也可以当删除命令使用. 1 首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了 ...
- 【vim】缩写 :ab [缩写] [要替换的文字]
一个很可能是最令人印象深刻的窍门是你可以在 Vim 中定义缩写,它可以实时地把你输入的东西替换为另外的东西.语法格式如下: :ab [缩写] [要替换的文字] 一个通用的例子是: :ab asap a ...
- Vim进阶技术:搜索和替换
行内搜索 行内搜索,也就是在当前行内进行搜索和移动,通常都与编辑命令一起使用. fx -- 移动到下一个字符x的位置,光标停留在x字符上面 tx -- 移动到下一个字符x的位置,光标停留在x前一个字符 ...
- VIM中空格和TAB的替换
在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)set expandtab 对于已保存的文件,可以使用 ...
随机推荐
- 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况
近几年容器相关的技术大行其道,容器.docker.k8s.mesos.service mesh.serverless等名词相信大家多少都有听过,国内互联网公司无一不接触和使用相关技术. 健康之路早在2 ...
- Hive映射HBase表的几种方式
1.Hive内部表,语句如下 CREATE TABLE ods.s01_buyer_calllogs_info_ts( key string comment "hbase rowkey&qu ...
- 03-Django模型类
ORM框架:对象-关系-映射 将面向对象语言程序中的对象自动持久化到关系数据库中.本质就是将数据从一种形式转换到另外一种形式O表示Object 对象类R表示Relations 关系,关系数据库中的表M ...
- 【Python-Django后端】用户注册通用逻辑,用户名、手机号重名检测,注册成功后状态保持!!!
用户注册后端逻辑 1. 接收参数 username = request.POST.get('username') password = request.POST.get('password') pas ...
- l命令练习题1
1.创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) [root@localhost ~]# mkdir -p /guanli/zonghe | mk ...
- 手动编译PHP开发环境
目录 手动编译PHP开发环境 问题复盘 部署环境及配置 目标环境 安装部署环境开始 首先安装PHP 安装mysql 安装nginx 手动编译PHP开发环境 这是一篇来自深夜加班的手稿 问题复盘 你有没 ...
- 使用 Netty 实现一个 MVC 框架
NettyMVC 上面介绍 Netty 能做是什么时我们说过,相比于 SpringMVC 等框架,Netty 没提供路由等功能,这也契合和 Netty 的设计思路,它更贴近底层.下面我们在 Netty ...
- gdb调试和编译后运行结果不一致
今天在看代码时,遇到这么一段代码,我但是用g++编译了,运行发现有Segmentation fault. 然后就用gdb跟进去看看,可是gdb却正常执行了.不知道什么原因. #include < ...
- Codeforces Round #574 (Div. 2)——C. Basketball Exercise(简单DP)
题目传送门 题意: 输入n,给出两组均为 n个数字的数组a和b,轮流从a和b数组中取出一个数字,要求严格按照当前所选数字的数组下标比上一个所选数字的数组下标更大,计算能够取出的数字加起来的总和最大能为 ...
- 网络编程网络协议篇(osi七层协议)
一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...