使用Vi编写代码时,如果想脱离鼠标,需要使用一些命令快捷键,下面罗列了一些常用的并且容易记住的:

1. 命令模式下,移动光标或跳转

0到行首

^到行首第一个非空字符

$到行尾非空字符

fx向后移动光标到本行的x字符处

Fx向前移动光标到本行的x字符处

gg跳转到文件头部

G跳转到文件尾部

nG、ngg或者:n跳转到第n行

%跳到与当前括弧([{}])相匹配的位置处

2. 命令模式下,进入插入模式

i在当前光标位置左边添加文本

I在当前行首(第一个非空字符处)添加文本

a在当前光标位置的右边添加文本

A在当前行尾添加文本

o在当前行的下面新建一行

O在当前行的上面新建一行

3.命令模式下,删除文本

x删除当前光标处字符

nx删除从当前光标处字符开始算起的n个字符

cw删除当前光标处字符,并且进入插入状态

d/xxx删除从当前光标处到xxx字符的所有文本

dtxxx删除从当前光标处到本行的xxx处

dw删除从当前光标到当前word尾部

dd删除当前行

ndd删除从当前行开始的n行

d}删除当前行直到下一个空行

d{删除当前行直到前一个空行

d$删除从当前光标处字符直到行尾

:n,md删除n到m行

:%s/^[\t ]*//g删除文件内所有行行首的空格和tab

:%s/[\t ]*$//g删除文件内所有行行尾的空格和tab

删除多行可以分三步:1. mz标记某一行;2. 光标移动到目标结束行;3. d'z

4.命令模式下,复制,粘贴

p粘贴内容到当前光标后

P粘贴内容到当前光标前

条目3中很多命令将d换为y即可,如复制多行:1. mz标记某一行;2. 光标移动到目标结束行;3. y'z

5.命令模式下,替换

:s/old/new/g替换当前行内所有old字符串为new

&重复上一次替换

:%s/old/new/g替换当前文件内所有old字符串为new

:n,ms/old/new/g替换从行n到行m内所有old字符串为new

ZZ = :wq 保存并退出

6.命令模式下,其他编辑命令

u撤销上一个编辑操作(undo)

ctrl+r重复上一个编辑操作(redo)

J合并当前行跟下一行

块编辑:ctr+v进入块编辑,从当前行往下移动光标直到目标结束行,然后按大写的I进入插入状态,输入xxx,然后按esc后,在所有的块内行首均会加上xxx

7.其他命令

/xxx向下搜索xxx

?xxx向上搜索xxx

n跳转到下一个搜索位置

N跳转到上一个跳转位置

ZZ保存当前文件并退出,等同于:wq

ctrl+[切换回命令模式,等同于esc

插入模式下,自动补全:ctrl+p或ctrl+n

tag跳转:ctrl+]跳转到符号定义处,T调回到原来位置

-----乐观处世,诚实做人,不骄不躁,积极进取; 勇于创新,踏实实现,谨慎规划,付诸实践; 事在人为
 
转自:http://www.cnblogs.com/chinsonliu/p/3612299.html

【转】一些常用的Vi命令,可帮助脱离鼠标的更多相关文章

  1. 【原创】一些常用的Vi命令,可帮助脱离鼠标

    使用Vi编写代码时,如果想脱离鼠标,需要使用一些命令快捷键,下面罗列了一些常用的并且容易记住的: 1. 命令模式下,移动光标或跳转 0到行首 ^到行首第一个非空字符 $到行尾非空字符 fx向后移动光标 ...

  2. 我常用的Vi命令

    Vi对于linux的重要性和受欢迎的程度在此一律不表.此刻互联网上不少介绍vi的文章和博客,相信写得比我好的也不在少数.然而为什么我依然写这样一篇文章呢?我对linux知识和了解也都来自于互联网,很难 ...

  3. 不常用的vi命令

    vi u 撤回ctrl+r 撤回的撤回 全文替换%s/old/new/g 指定行区间替换12,15s/old/new/g c替换前确认12,15s/old/new/gc 用#代替分隔符,用户关键字有/ ...

  4. linux:终端常用命令 + vi命令修改文件及保存 方法

    首先介绍一下Ubuntu下各个目录的一般作用: /  这就是根目录,一台电脑有且只有一个根目录,所有的文件都是从这里开始的.举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录 ...

  5. linux vi 命令大全

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  6. linux下vi命令大全

    进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首 ...

  7. (转)linux下vi命令大全

    http://www.cnblogs.com/88999660/articles/1581524.html 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n ...

  8. linux下vi命令大全[转]

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  9. linux下vi命令大全(转载)

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

随机推荐

  1. swiper插件的简单使用,实现图片轮播

    移动端和p c端经常会遇到写轮播图的情况,这里只是简单的说一下swiper插件的简单用法(移动端为例). <!DOCTYPE html> <html lang="en&qu ...

  2. MySQL如何插入测试数据

    关于插入MySQL测试数据,这里介绍两种方法: 选择优先级(结合PHP生成测试数据 > 使用存储过程 ). 使用存储过程(建议测试数据小于1000条使用该方法) 具体代码如下: 创建表: mys ...

  3. Android基础_web通信3

    在Android基础_web通信2中,我运用的JSONObject是Android原生的json类,通过import org.json.JSONObject来导入. 还有另外一种更简单的方法,就是用G ...

  4. SpringBoot集成security

    本文就SpringBoot集成Security的使用步骤做出解释说明.

  5. Machine Learning - week 4 - 习题

    1. 第一个.,是对的. 第二个.结果只会认出是一类,如图:.但这里是为了举例子,实际上不会恰好是 1.而是选择最大概率表示的类别.所以是错误的. 第三个:所有基于 0,1 的逻辑方程都可以使用神经网 ...

  6. cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training 听课笔记

    (没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...

  7. deeplearning.ai 人工智能行业大师访谈 Andrej Karpathy 听课笔记

    1. 本科的时候在多伦多大学上Geoffrey Hinton的课,在MNIST数字数据集上训练受限玻尔兹曼机,觉得很有趣.后来在UBC读硕士,上了另一门机器学习的课,那是他第一次深入了解神经网络的相关 ...

  8. COGS 862. 二进制数01串【dp+经典二分+字符串】

    862. 二进制数01串 ★   输入文件:kimbits.in   输出文件:kimbits.out   简单对比 时间限制:1 s   内存限制:128 MB USACO/kimbits(译 by ...

  9. FineReport父子格实现动态参数注入

    "深入学习FineReport后发现其功能及其强大,之前使用存储过程实现的报表完全可以使用FineReport本身的功能实现. 当你需要的表名,查询条件等均未知的时候,使用"动态参 ...

  10. [国嵌攻略][109][Linux系统调用]

    系统调用 函数实现体在内核空间,提供给应用程序来使用,就是一个系统调用. 工作流程 1.通过软中断(swi)从用户空间切换到内核空间.entry-common.S中的ENTRY(vector_swi) ...