vim 的使用

来源:互联网 发布:淘宝上哪家日代靠谱 编辑:程序博客网 时间:2024/06/01 14:06

vim 的使用
vim 的使用(二)

vim 是一种 modal editor1

vi/vim 是一种 modal editor,这是与传统的文本编辑器,或 windows 平台下的 notepad 最大的不同。

modal editor 的属性是 vim 之所以强大的原因之一。与模态编辑器相对的概念是modeless编辑器,windows环境下的notepad即是一种modeless编辑器。

modeless编辑器,比如windows下的notepad,只有一种mode,即输入文本信息的mode。

而对于vi,以及它的后继者——vim,是modal的,首先它具有两个主要的modes,向编辑器输入文本信息的插入模式(insert mode),以及通过键盘输入参数以执行相关函数的一般模式(normal mode),例如:移动光标在文档中的位置,搜寻,以及操纵文档中的文本信息(复制与粘贴)。

还有两个modes,分别为命令模式(command mode)用以输入命令信息,以及可视模式(visual mode)当选择要操纵的文本时。

Normal Mode

尽可能地待在Normal Mode的环境下,不然如何敢叫Normal Mode呢?除非是要输入文本。

使用方向键是不专业的表现!!!

basic navigation:

  • hjkl:左移,下移,上移,右移
  • ^(shift+6):回到句首 (== home)
  • $(shift+4):转到句尾(==end)
  • Ctrl+d:downpage,向下翻页
  • Ctrl+u:uppage,向上翻页
  • b:back a word,回到一个单词的起始位置
  • w:move to the next word
  • gg:top of the file

用作组合的键:

  • d(del)

    • dd:删除当前行
    • de:delete till the end of the word
  • y(yank == copy)

    • yy:拷贝当前行(包括换行符)
    • yw:yank word
    • y$:yank until end of line(不含换行符)
  • c(change motions)

    • cw:change word,改变某一单词(虽然是Insert Mode,但仅对当前单词的修改有效)
    • ct<symbol>:change till <symbol>
    • motions:
      • hjkl
      • ctrl+u/ctrl+d
      • w/b/$/^/0
      • c:当前行
      • gg.

    这下总算明白,为什么复制当前行用的是yankyy,而不是copycc了吧,c也是另外一个重要单词change的缩写,显然change motions要比copy在文本编辑时重要的多得多。

  • p:复制到当前行的下一行

delete == cut(也即剪切,包含剪和切两个动作)
因此使用 x(del,删除当前光标所在位置的字符)以及d(和其他的键相组合用于删除)是将删除的内容放入剪切板,使用p,进行最后的粘贴;

  • xp:交换连续两个字符的顺序
  • u(undo):撤销

insert mode

  • i:insert,
  • a:append,

从 Insert Mode 回到 Normal Mode:

  • esc;不推荐
  • ctrl+[:推荐,较快

command mode

  • :% = entire document range
  • :%s = substitute across entire document range
  • :%s/<from>/<to> = substitude across entire document replacing <from> with <to>(只对每一行的第一个进行修改)
  • :%s/<from>/<to>/g = substitute every occurence on line rather than just first

  • ?<text> = search for <text> backwards

    窃以为这会是一个极为有用的查找功能,即该内容是否在前文中出现。

  • /<text> = search for <text>


  1. Modeless vs modal editors ↩
0 0
原创粉丝点击