#vim  filename

:scriptname //查看vim加载了哪些脚本

:set nu //设置行号

:set tabstop=4 //设置一个tab为4个空格长度

:set ai //设置自动缩进

空格键 //向右移动一格

x //删除后面的字符(命令模式下)

X //删除前一个字符,删除三个字符就是3x

dd  //删除一行

D //删除到行尾

caw //改写单词,c相当于d变为编辑模式

J //删除换行符,使下一行并上来,nJ连接后面的n行

u //撤销上一次操作

U //撤销当前行的所有修改

ctrl+r //对撤销的撤销

i //在光标前插入

I //在行首插入

a //在光标插入

A //在行末插入

o //在当前行的下面另起一行,并变为插入模式

O //在当前行上面另起一行,变为插入模式

ctrl+o //临时变成命令模式(一次生效)

:e! //放弃更改,相当于重新打开

:help //帮助,可用ZZ退出帮助窗口

:10,20y //复制10到20行   或者10yy / yy10

:10,20d //删除

:10,20 m 30 //10到20行的内容,剪切到30行之后

:10,20 co 30 //10到20行的内容,复制到30行之后

将光标放在 { 处,然后输入v%就可以把大括号中的内容选定

如果光标放在第一个s上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个“(”前

ctrl+n自动补全  ctrl+p也一样

:ab  hw hello world  用一个缩写字代替一个长的字符串,此处用hw代替hello world

到与当前单词相同的上一个单词

到与当前单词相同的下一个单词

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$:移动到行尾  3$:移动到3行后的行尾

^: 移动到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f: 搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。   Fx:定位到上一个x上,重复时,可用;或,  不过 , 表示反方向

%:跳到相对应的括号上,编程时常用

33G:跳转到33行   此时按``可以返回到原来行

gg: 文件头   G: 文件尾

30%:跳转到文件的30%处

"H"意为Home, "M"为Middle, "L"为Last.  当前屏幕的上中下位置,大小写皆可

Ctrl+G : 显示当前位置

set number: 设置显示行号,set nonumber: 关闭显示

:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间

ctrl+u\d  向上\下滚动半屏

ctrl+e\y  向上\下滚动一行

ctrl+b\f  向上\下滚动一屏  这个比较实用,记住。

zz: 将当前行滚动于屏幕中间,方便查看上下文  zt置顶,zb置尾

/string  查找string,回车后,按n键可以跳到下一个,N上一个,另外按 键后,按上下键可以找到以前查找的记录,同样的也有记录

?/string 同上,默认向上查找

:set ignorecase 大小写无关

:set noignorecase 大小写敏感

* :查找下一个光标所在单词  是查找上一个

:set hlsearch  高亮显示查找结果

:set nohlsearch  取消高亮

:nohlsearch  去掉当前显示的高完(一次性)

`` 上次光标停靠的行

% 匹配到相应括号处

>>   向右移动本行一段距离     <<   向左移动本行一段距离    3<<    把下面3行(包括本行),向左移动一段距离     :20,30>>  把20行到30行向右移动一段距离

:%s/str1/str2/g   替换每一行的 str1为 str2

:10,20s/str1/str2/g   替换从行10到行20之间的 str1为 str2

:10,$s/str1/str2/g   替换从行10到最后一行之间的 str1为 str2

:s/str1/str2/g   替换当前行的 str1为 str2

 重复执行命令

:10,$ w test2.cpp     取行10到最后一行内容,保存到test2.cpp

:r class/User.hpp    读取文件中的内容,插入到当前行的后面

dw: 删除一个单词(光标后部分)  不如:daw实用 d4w:删除4个单词  d$: 删除当前光标到行尾  d^:删除当前光标至行首   d换成c效果是一样的,只是操作完会变成insert模式   dnw: 删除N个单词   dnj: 向下删除n行    dnk: 向上删除n行

X:删除左边的字符,相当于<-键,x删除当前字符  D: 相当于d$  C: 相当于c$  s: 相当于c1  S: 相当于cc

r: 替换当前字符,但不会进入insert模式    3r: 把后面3个字符替换掉    R:替换模式

.: 重复上一次操作

v:进入Visual模式    V: 进入可视行模式,比如 Vjjd 删除3行  Ctrl+v:可视块模式

P:粘贴至光标前    p:粘贴至光标后    3P:粘贴3次      "2p 粘贴最后第二次的删除的内容

yy: 复制一行  yaw: 复制一个单词,光标在单词任意位置    ynw: 复制N个单词     ynj: 向下复制n行    ynk: 向上复制n行

自动缩进:

:set cindent(所有的set都可以简写为se,虽然只节省了一个字符, 译者注) 需要注意的是cindent控制缩进量是通过shiftwidth选项的值, 而不是通过tabstop 的值, shiftwidth的默认值是8(也就是说, 一个缩进为8个空格, 译者注), 要改变默认的设置, 可以使用":set shiftwidth=x"命令, 其中x是你希望一个缩进量代表的空格的数目.

{ = 到前一个空行上
} = 到下一个空行上

插件命令

:e!   返回上次保存后的状态

Ctrl+z: 暂停vi,回到Unix提示符,再输入fg即可回到vi。

^回到行首,光标位于行首字母处;0回到行首,光标位于行首字母前。$回到行尾,光标位于行尾字母处。

nb: 向前移动n个单词,nw:向后移动n个单词。光标位于单词的第一个字母处。 nw这个操作很慢,不知何故。 以空格、标点符号与单词的分界为分隔符。(几个连续的标点视为一个单词)同样的,也可以使用nB,nW,只是这里只使用空格做为分隔符。

相换两个相邻字母的位置:x、p

s: 删除一个字符,并进入编辑模式。 S:删除一整行,进入编辑模式,相当于cc。   ns: 删除后面n个字符,并进入编辑模式。

~: 更改字母的大小写,同时光标进入到下一个字符。  n~: 把后面n个字母的大小写状态改变。

dw: 删除单词后面部分     db:删除单词前面部分。  如果要删除整个单词(光标位于单词中间的话),可以 dbw\wdb

de: 类似于dw,删除单词后面的部分(只删除到本单词结尾,dw会删除掉单词后面的空格)   dE: 删除的范围包括标号在内的单词结尾。

e: 相当于w,向后移动一个单词。不同的是,w移动到单词第一个字符上,e移动到单词最后一个字符上。  所以ea,可以给本单词追加内容。

D:d$ 的简写,同样的,C:c$的简写。

U:会恢复一整行原先的面貌,即最原始的样子。

Y:相当于yy,不同于D与C的操作方法。

.:重复上一个命令。

除了O/o,插入命令(A,a,I,i)接受数值参数,如:5Ihello,然后按ESE键。会在行首输入5个连接的hello

nr: 替换后面n个字符。

nJ: 合并下面的n行(从本行算起)。

ynl: 向后复制n个字符。

e/E: 到单词的结尾。

滚动整屏:

^f:向前(下)一整屏

^b:向后(上)一整屏

^d:向前(下)一半屏

^u:向后(上)一半屏

z,Enter:将光标所在行移动到屏幕顶部(同于zz)

z.:将光标所在行移动到屏幕中间

z-:将光标所在行移动到屏幕尾部

nz,Enter:将第n行移动到屏幕顶部,同样的,z. 与 z- 前也可以加数字。

在屏幕中移动:

H、M、L分别移动到屏幕的顶部、中间和尾部。

nH、nL 移动到距离屏幕顶部和顶部n行的位置。

Enter:到下一行的第一个字符。

+:到下一行的第一个字符。

-:到上一行的第一个字符。

n|:移动到当前行的第n列

e:移到单词的结尾

E:移到单词的结尾(忽略标点符号)

(   )   {   }  [[  ]] 这几个对编程作用不大,可忽略。

d/it:向后删除到it之前的位置(不删it)。    d?it:向前删除到it之前的位置(删除it)。

fx: 本行中向右搜索x,光标置于x上。  Fx: 向左搜索。 ; 重复上一个搜索命令,方向相同。   , 重复上一个搜索命令,方向相反。

tx: 同fx,只是光标置于x之前。 Tx类似。

dfi:向右删除第一个i的位置(包括i)  dti:同dfi,只是不包括i

Ctrl+G 查看当前行信息

nG跳转后,可使用``回到上一次的位置,''功能一样,不过只是回到前次位置所在行的开头,而不是确定的位置上。

删除包含keyword字符串的行: :g/keyword/d

删除空行::%s/^\n$//g

vim快捷键的更多相关文章

  1. [No00004F]史上最全Vim快捷键键位图(入门到进阶)

    史上最全Vim快捷键键位重磅来袭!!学习Linux的朋友看过来啦,你是不是觉得Linux编辑器Vim操作复杂,步骤繁琐呢?Linux工程师是不是想大幅度提升自己的工作效率呢? 经典版        下 ...

  2. vim快捷键总结

    直接上图 原图地址:vim快捷键

  3. vim快捷键笔记【原创】

    Vim zR  全部展开 zM全部合并 vim  快捷键 shift   +  i      (‘I’)    进行编辑 shift   +  4     (‘$’)    跳到行尾 shift   ...

  4. VIM快捷键(转)

    VIM快捷键:光标移动:四个方向   kh 0 l   j  ctrl+f, ctrl+b                 向下翻页,向上翻页  ctrl+d, ctrl+u              ...

  5. 必须熟悉的vim快捷键操作

    转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍:插入模式 和  命令模式 是vi的两个基本模式.——插入模式 ,是用 ...

  6. Linux vim快捷键

    1  替换    r  替换  先按r再按要替换的内容 2  按yy复制当前行  按p是粘贴 3 # add at 18-10-25 #-------------------------------- ...

  7. 转: Vim快捷键分类

    Vim快捷键分类 http://www.cnblogs.com/jikey/archive/2011/12/28/2304341.html  一. 移动:    h,j,k,l: 左,下,上,右.   ...

  8. [No00004F]史上最全Vim快捷键键位图(入门到进阶)vim常用命令总结

    在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format.使 ...

  9. vim快捷键收藏版

    总述 附加一篇介绍文哈,关于vim快捷键的介绍.vim和vscode 到底谁更好用,大家争得不可开交,然后我就在vscode里面装了一个vim插件,完美得解决了这个问题,用完之后觉得真香,所以我就整理 ...

  10. <顶>vim快捷键映射Map使用

    问题描述: 使用vim中的快捷键映射map,可以自定义快捷键 问题解决: (1)vim模式 (2)map前缀 (3)删除映射Map (4)使用示例 (5)查看快捷键映射 命令行---:verbose ...

随机推荐

  1. spring声明式事务管理总结

    事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...

  2. ElasticSearch 5学习(7)——分布式集群学习分享2

    前面主要学习了ElasticSearch分布式集群的存储过程中集群.节点和分片的知识(ElasticSearch 5学习(6)--分布式集群学习分享1),下面主要分享应对故障的一些实践. 应对故障 前 ...

  3. 初探AngularJS

    一.前言 早已听说AngularJS的大名,并在很久前也编写过些小demo,但是都没有系统学习过.由于,在下个版本项目中用到了AngularJS,so,那就一起再来研究研究呗. 说到,这个Angula ...

  4. Hibernate(3)——实例总结Hibernate对象的状态和ThreadLoacl封闭的session

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: Hibernate的内部执行过程(CRUD) 对象的状态及其转换图和例子 使用JUnit测试 使用getCur ...

  5. Apworks框架实战(六):使用基于Entity Framework的仓储基础结构

    在前面的章节中,我们已经设计了一个简单的领域模型,接下来我们希望能够实现领域模型的持久化及查询.在Apworks中,实现了面向Entity Framework.NHibernate以及MongoDB的 ...

  6. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  7. 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法

    1,到官网下载最新的boost,www.boost.org 这里我下载的1-63版本. 2,安装,解压后运行bootstrap.bat文件.稍等一小会就OK. 3,编译boost库.注意一定要使用VS ...

  8. Java EE必读书籍

    2011-09-18 15:21 24170人阅读 评论(46) 收藏 举报  分类: JavaEE等(280)  软件工程.原理(49)  计算机历史(3)  Web相关(83)  Linux/Un ...

  9. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  10. viewport理解

    viewport预备知识 dpr === dppx dpr:device pixel ratio 设备像素比 dppx:Number of dots per px unit 每像素有多少点 . 1dp ...