转载: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卡概念,不能直接访问图像.视 ...
随机推荐
- Mac下的 /private 是个什么目录?
Mac下的 /private 是个什么目录? 学习了:https://www.zhihu.com/question/19582264/answer/125522314 有图有真想
- SCP远程拷贝命令
利用scp指令可以在linux机器间传递文件,个人使用几次感觉效率还是较高的,比SFTP+本地做媒介要高得多. 1.本地拷贝到远程. 这种方式的命令模式是scp local_file remote_u ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
- USD Series: Installation
Today I would like to talk is Unified Service Desktop. It was published in Dynamics CRM 2013 Spring ...
- C++ 11 - STL - 函数对象(Function Object) (中)
我们再来看一个复杂的例子 需求: 我们需要对集合内每个元素加上一个特定的值 代码如下: AddInt.h class AddInt { private: int theValue; // the va ...
- 随机数的生成:给定1-n的随机数生成器randn(),生成1-m的随机数
1.当m < n时比较简单: 只当randn()生成的数落在1-m上时,就输出,否则继续生成: 2.当m > n时就比较麻烦一点, 基本思路还是和第一种情况是一样的,问题是怎样才能利用ra ...
- es5 - array - concat
/** * 描述:数组元素合并 * 使用:arr1.concat(arr2) * 参数:arr1.concat(arr2,arr3,arr...) * 说明: * 该concat方法创建一个新数组,该 ...
- AndroidStudio简单的apk混淆
打包APK又一个看起来难 却不难并且不可或缺的标配,为什么这样说呢?由于没有混淆,你的代码被别人反编译你的代码将像一个裸奔的人一样展示在别人的面前.你的APP的安全将得不到保证.Android搞的混淆 ...
- OpenERP函數字段的應用
在ERP開發過程中經常會使用到某字段的值是由其他字段計算得來,並且有些還需要將計算的結果存入資料庫. 以上功能上OpenERP中是用field.function實現的 其中有種模式 a). 只計算,不 ...
- CentOS连接网络注意事项
连接网络,系统中这两个服务需要启动 可以看到右上角网络连接成功了