转载:vim的复制,删除,粘贴,块操作以及快速替换功能
对于VIM而言,复制,删除,粘贴的操作应该是非常多的。这次也做一个总结,关于处理VIM下的复制,删除,粘贴等操作。
学会使用帮助文件,命令的帮助入口,就是”:help 命令名“。例如,对于”j“命令,查看它的帮助,使用”:help j“
先谈一下基于块的复制,删除,粘贴操作
对于vim几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢(我特别喜欢像使用windows下的文本编辑器一样去使用块的选择
区块选择的按键意义 【不使用鼠标,来选择块】

批量替换列块
原始状态:

将光标指到第一行V处,然后ctrl-v选择,如下

选择完成后,接着按c键,输入你要替换后的文字,最后ESC,看看成果如下,

以行或者是以单词为单位的删除操作
x, X 在一行字当中,x 为向后删除一个字符 (相当亍 [del] 按键),X 为向前删除一个字符(相当亍 [backspace] 亦即是退格键) (常用)
d0 删除游标所在处 ,到该行行首的所有字符
对行操作:
移动到行首:gg
移动到行尾 :字符$
小注:命令”G“前可以加上数字,在这里,数字的含义并不是倍数,而是你打算跳转的行号。例如,你想跳转到文件的第1234行,只需输入”1234G“。
字符0:第一个非空字符前
字符^:第一个非空字符上
上下左右:h, j, k, l
小注:如同许多vim命令一样,可以在这些键前加一个数字,表示移动的倍数。例如,”10j“表示向下移动10行;”10l“表示向右移动10列。
翻页:
小注:通常使用CTRL-B和CTRL-F来进行翻页,它们的功能等同于PageUp和PageDown。CTRL-B和CTRL-F前也可以加上数字,来表示向上或向下翻多少页
小注: 在文件中移动,你可能会迷失自己的位置,这时使用”CTRL-G“命令,查看一下自己位置。这个命令会显示出光标的位置及其它信息。为了避免迷失,你可以打开行号显示;使用”:set number“命令后,会在每一行前显示出行号,可以更方便的定位的跳转(:help ‘number’)
移动到指定字符: 使用f, t, F, T命令。
小注:“f“命令移动到光标右边的指定字符上,例如,”fx“,会把移动到光标右边的第一个’x'字符上。”F“命令则反方向查找,也就是移动到光标左边的指定字符上。
“t“命令和”f“命令的区别在于,它移动到光标右边的指定字符之前。例如,”tx“会移动到光标右边第一个’x'字符的前面。”T“命令是”t“命令的反向版本,它移动到光标右边的指定字符之后。
这四个命令只在当前行中移动光标,光标不会跨越回车换行符。
可以在命令前面使用数字,表示倍数。例如,”3fx“表示移动到光标右边的第3个’x'字符上。
“;“命令重复前一次输入的f, t, F, T命令,而”,“命令会反方向重复前一次输入的f, t, F, T命令。这两个命令前也可以使用数字来表示倍数。
复原以及重做操作
替换模式
关键是 “R “ 取代模式,它可以快速的替换以及插入数据(类似于 word中的 即点即输)的功能。
移动光标
| 命令 | 功能 |
| h | 光标左移 |
| l(或空格键) | 光标右移 |
| k(或[Ctrl+p]) | 光标上移 |
| j(或[Ctrl+n]) | 光标下移 |
| [Ctrl+f] | 向前翻页 |
| [Ctrl+b] | 向后翻页 |
| [Ctrl+d] | 向前翻半页 |
| [Ctrl+u] | 向后翻半页 |
| 1G | 跳到文件首 |
| 40G | 跳到第40行 |
| G | 跳到文件尾 |
| [Ctrl+g] | 显示当前行号及文件的百分比 |
| :set number | 显示所有带行号的行 |
在一行内移动光标
B、E和W命令的作用与b、e和w的作用一样,只是后者忽略了标点符号。
| 命令 | 功能 |
| b | 向后移动到单词首 |
| e | 向前移动到单词尾 |
| w | 向前移动到单词首 |
| 0或| | 移动到行首 |
| 30| | 移动到第30列 |
| ^ | 移动到本行的第一个单词的首字符 |
| $ | 移动到行尾 |
插入文本
| 命令 | 功能 |
| i | 在光标的左侧插入字符 |
| 20i-[Esc] | 插入20个连字符 |
| I | 在行首插入字符 |
| [Ctrl+v][Ctrl+b] | 插入[Ctrl+b]字符 |
| [Ctrl+v][Esc] | 插入[Esc]字符 |
| a | 在光标的右侧添加文本 |
| A | 在行尾添加文本 |
| o | 在当前行下面插入一空行 |
| O | 在当前行上面插入一空行 |
| :set showmode | 当vi处在输入模式下时显示提示信息 |
| :set sm | 即时显示配对的)或} |
| :set ts=n | 把制表符设置为n(默认为8) |
| :set ai | 下一行从前一行的缩进位置开始 |
删除和移动文本
| 命令 | 功能 |
| x | 删除光标所在的字符 |
| 6x | 删除光标位置的字符以及右侧的5个字符 |
| X | 删除前一个字符 |
| dd | 删除当前行 |
| 4dd | 删除4行 |
| 64dd | 删除64行 |
| dw | 删除一个单词 |
| d0 | 删除到行首 |
| d$ | 删除到行尾 |
| d | 删除一个区域(只用于vim) |
| p | 把被剪切的文本粘贴到下面(整行)或右侧(部分行) |
| P | 把被剪切的文本粘贴到上面(整行)或左侧(部分行) |
| "add | 把当前行粘贴到缓冲区a里 |
| "ap | 把缓冲区a里的内容粘贴到当前位置 |
| J | 把当前行于下一行合并为一行 |
| xp | 调换两个字符的位置 |
修改文本
| 命令 | 功能 |
| rch | 把光标位置的字符替换为ch |
| R | 替换光标右边的文本 |
| s | 把光标所在的字符替换为任意个字符 |
| S | 替换整行内容 |
| cw | 修改一个单词 |
| c | 修改区域里的文本(vim) |
| ~ | 改变所扫描的或区域里的字母的大小写 |
| !tr'[a-z]''[A-Z]' | 把区域里的字母转换为大写(vim) |
| !tr'[A-Z]''[a-z]' | 把区域里的字母转换为小写(vim) |
复制文本
| 命令 | 功能 |
| yy | 复制当前行 |
| 6yy | 复制六行 |
| yw | 复制单词 |
| y | 复制区域(vim) |
| p | 把复制的文本粘贴到右边或下面 |
| P | 把复制的文本粘贴到左边或上面 |
转载:vim的复制,删除,粘贴,块操作以及快速替换功能的更多相关文章
- (一)、vim及gvim添加多行注释及删除多行注释块操作
一.添加多行注释 选中要注释的行(连续的多行): Ctrl + v进入块选择模式: 按住I(大写)进入行首插入模式: 插入注释符: 按Esc回到命令模式. 或者 1. 进入命令行模式,按ctrl ...
- VC++ MFC文件的移动复制删除更名遍历操作
1.判断文件是否存在 利用CFile类和CFileStatus类判断 CFileStatus filestatus; if (CFile::GetStatus(_T("d://softist ...
- vim的寄存器和剪贴簿操作?
vim 复制/ 删除 多行? 有确定序号的行: :10,15m20, 10,15co20 没有确定序号的行: ndd, nyy. 其中的n表示, 从当前行开始算起(当前行本身要包含!!!), 向下共删 ...
- vim中使用系统粘贴板
在vim中如果想使用系统粘贴板,也就是说,如果你在其他程序中复制内容,那么使用shift+insert组合键就可以粘贴进来. 需要说明的是,vim中的粘贴板有很多,你可以输入 :reg来进行查看.而我 ...
- Qt之密码框不可选中、复制、粘贴、无右键菜单等
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
- 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
- Qt 密码框不可选中、复制、粘贴、无右键菜单等
在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同. 例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 一般的密码框:(默认 可以选中,复制, ...
- Java递归实现操作系统文件的复制、粘贴和删除功能
通过Java IO递归实现操作系统对文件的复制.粘贴和删除功能,剪切=复制+粘贴+删除 代码示例: import java.io.BufferedInputStream; import java.io ...
- iOS——文件操作NSFileManager (创建、删除,复制,粘贴)
iOS——文件操作NSFileManager (创建.删除,复制,粘贴) iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视 ...
随机推荐
- HTML5 input file控件使用accept过滤限制的文件类型以及在谷歌下打开很慢的问题
在文件上传控件(input type='file')中,可以通过accept属性实现对文件类型的过滤. 一.相关代码: 下面给出对应的文件上传控件代码: <input type="fi ...
- (剑指Offer)面试题12:打印1到最大的n位数
题目: 输入数字n,按顺序打印出从1到最大的n位十进制数. 比如输入3,打印1,2,3一直到最大的3位数即999. 思路: 1.不考虑n的范围,直接打印. void Print1ToMaxOfNDig ...
- (剑指Offer)面试题6:重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- UDP socket也可以使用connect系统调用
UDP socket也可以使用connect系统调用 UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样.它可以用来指定本地端口和本地地址,来建 ...
- MP3文件头格式
MP3文件结构及编解码流程 http://blog.sina.com.cn/s/blog_67b7cb7b01018i2l.html http://blog.csdn.net/liuyan4794/a ...
- vue - 子路由-路由嵌套
描述:子路由,也叫路由嵌套,采用在children后跟路由数组来实现,数组里和其他配置路由基本相同,需要配置path和component,然后在相应部分添加<router-view/>来展 ...
- 算法笔记_151:算法提高 01背包(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入格式 输入的第 ...
- localhost连接慢如何解决?
localhost连接慢如何解决 php 环境本地用ip连接mysql响应快, 今天碰到一个连接mysql的怪问题,我在php 环境本地用ip连接mysql响应快,用localhost连接慢,后来百度 ...
- Java注解与自己定义注解处理器
动机 近期在看ButterKnife源代码的时候.竟然发现有一个类叫做AbstractProcessor,并且ButterKnife的View绑定不是依靠反射来实现的,而是使用了编译时的注解,自己主动 ...
- EL函数库
一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...