Dive into vim

Dive Into VIM


VIM命令行模式

1、光标的移动

  • h,j,k,,l,分别使光标向左,下,上,右移动;
  • w,光标向前移动一个单词,b,光标向后移动一个单词;
  • e,到下一个单词的结尾;
  • 0,光标移动到行首;$,光标移动到行尾;
  • ^,光标移动到当前行的第一个字母;
  • ) ,移动光标到下一个句子;
  • (,移动光标到上一个句子;
  • ctrl+f ,光标移动到下一屏;
  • ctrl+b,光标移动到上一屏;
  • G, 移动到文件末尾;
  • numG,光标移动到指定行(eg.100G就是第100行),配合 se number,显示行号使用;
  • gg,移动到文件开始;
  • H,光标移动到屏幕上方;
  • M,光标移动到屏幕中间;
  • L ,光标移动到屏幕下方;
  • * ,读取光标处的字符串,并且移动光标到它再次出现的地方,向后搜索。有点类似搜索/find命令;
  • #,与*类似,只是向前搜索;
  • /text,搜索文本,重复上次的搜索按n
  • ?text ,与上面的类似,反方向;
  • ma,做书签标记。a代表书签名字,书签名字只能是小写字母。用户看不到书签的存在;
  • ``a`,到书签的a处;
  • ``.`,到上次编辑的地方,这个是默认的书签,不需要特别标记它。
  • dt",删除所有内容,直到遇到双引号,这个对码农很有用!
  • t,,到逗号前的第一个字符,逗号可以是任何字符;

2、插入命令

  • i,在当前字符的左边插入;

  • I,在当前行首插入;

  • a,在当前字符的右边插入;

  • A,在当前行尾插入;

  • o,在当前行下面插入新行;

  • O,在当前行上面插入新行;

  • c{motion},删除 motion 命令跨过的字符,并且进入插入模式。比如: c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来;

  • d{motion},和c{motion}类似,区别是不进入插入模式;

3、有效移动大段文本,可视化模式

  • v,按字符来选择大段文本可精确到字符,试试看,用h,j,k,,l来移动光标;
  • V,按行来选择大段文本精确到行,因此h,l,无效;
  • ctrl+v,块选择,这个太强大了,可以进行纵向编辑,有点像ultra editor里面的纵向编辑模式,比如想删除第一列的所有字符,用这个实在太方便了!!!
  • d,剪贴内容到剪贴板,但不进入插入模式;
  • y,拷贝内容到剪贴板;
  • c,剪贴内容到剪贴板,并且进入插入模式;

如果你很清楚在做什么,没必要进入可视化模式,前提是你必须知道你剪切拷贝了什么!

  • yy ,拷贝当前行;
  • dd,剪切当前行;
  • cc,剪切当前行并且进入插入模式;
  • D,剪切当前行到行尾;
  • Y,拷贝当前行,同yy;
  • C, 剪切当前行到行尾并进入插入模式;
  • x,剪切当前字符到剪贴板;
  • s,与x,类似,但是会进入插入模式;
  • p,粘贴;
  • .,这个命令很强大,意思是重复上一次的操作;

4、进阶命令

  • 文本替换,命令[range]s/from/to
    • 方式一、使用可视化模式选中一段文本,比如将这段文本中的python替换成java,选中文本之后输入:s/python/java ,回车后发现选中文本区的内容都被替换了。
    • 方式二、先用:se number命令展示出行号,然后使用指定行号的方式来替换,例如:40,100s/python/java,标识将第40行到100行中的python替换成java。

你可能感兴趣的:(Dive into vim)