转载: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卡概念,不能直接访问图像.视 ...
随机推荐
- WebUploader文件图片上传插件的使用
最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...
- CentOS6网卡静态IP设置
CentOS网卡配置源文件如下:DEVICE=eth0HWADDR=00:0C:29:A8:67:46TYPE=EthernetUUID=4103d7a8-d073-4e93-ac68-e6f8496 ...
- Java程序猿面试体会,还没找到工作的“猿猿们”看过来!
类似的话题,我大约在几个月前跟大家聊过. 这一次,我要依据这段时间的体会,再给大家整理一下. 今天,非常轻松地拿到了神州数码的offer. 尽管工资不是特别高,尽管非常多人一毕业就能进入这种公 ...
- NFC低功耗模式
- 判断IE浏览器版本的精简脚本
IE浏览器不管是什么版本,总是跟Web标准有些不太兼容.对于代码工作者来说,自然是苦不堪言,为了考虑IE的兼容问题,不管是写 CSS 还是 JS,往往都要对 IE 特别对待,这就少不了做些判断.本文不 ...
- 为SQL数据库创建登录名和密码
为了保证数据库的安全性,需要为数据库创建一个登录帐号,通常每个数据库都有一个默认登录帐号sa,该帐号具有最高的管理权限,但是建议最好重新创建一个新帐号,这样不容易让访客知道,能够使数据库变得更安全.创 ...
- 搭建Android开发环境之旅
1.首先要下载相关的软件 1). JDK 6 以上 2). eclipse( Version 3.6.2 or higher ) 点击下载 3). SDK(android-sdk_r18-windo ...
- ant design pro (九)引入外部模块
一.概述 原文地址:https://pro.ant.design/docs/import-cn 除了 antd 组件以及脚手架内置的业务组件,有时我们还需要引入其他外部模块,这里以引入富文本组件 re ...
- iOS_数据库2_基础知识
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- C# 判断是否是节假日
1.引用Newtonsoft.Json.dll 2. /// <summary> /// 判断是不是节假日,节假日返回true /// </summar ...