vi&&vim用法

插入:
命令  含义  命令  含义
a  在光标后输入(进入输入模式)  A  行尾插入(进入输入模式)
i  在光标前输入(进入输入模式)  I  从光标所在列的第一个非空白字元前面开始插入(进入输入模式)
o  光标所在行下面新加一行(进入输入模式)  O  光标所在行上面新加一行(进入输入模式)

操作:
y  复制选择部分  yw  复制单词
yy  复制行  p  粘贴
d  删除选择部分  dd  删除行
数字n+dd  删除n行  gg  到文件头
GG  到文件尾  n+yy  复制当前开始的n行

删除和复制(普通模式、可视模式)

删除:

  • dd:    删除一行
  • dw:    删除一个单词,需将光标移到单词的第一个字母。
  • d$:    删除当前光标到该行的行尾的字母
  • daw:   删除一个单词,光标在单词任意位置
  • dnw:   删除N个单词
  • dnj:    向下删除n行
  • dnk:    向上删除n行
  • J:      删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。
  • x    删除光标下的字符 ("dl" 的缩写)
    X    删除光标前的字符 ("dh" 的缩写)
    D    从当前位置删除到行尾 ("d$" 的缩写)
    dw    从当前位置删除到下一个单词开头
    db    从当前位置删除到前一个单词的开头
    diw    删除光标上的单词 (不包括空白字符)
    daw    删除光标上的单词 (包括空白字符)
    dG    删除到文件末
    dgg    删除到文件首


    "dl"    删除字符 (缩写: "x")            |dl|
    "diw"    删除内含单词                *diw*
    "daw"    删除一个单词                *daw*
    "diW"    删除内含字串 (见 |WORD|)        *diW*

    "daW"    删除一个字串 (见 |WORD|)        *daW*
    "dd"    删除一行                |dd|
    "dis"    删除内含句子                *dis*
    "das"    删除一个句子                *das*
    "dib"    删除内含 '(' ')' 块            *dib*
    "dab"    删除一个 '(' ')' 块            *dab*
    "dip"    删除内含段落                *dip*
    "dap"    删除一个段落                *dap*
    "diB"    删除内含 '{ ' ' }' 大块            *diB*
    "daB"    删除一个 '{ ' ' }' 大块            *daB

复制:

  • yy:    复制一行
  • yw:    复制一个单词,需将光标移到单词的第一个字母。
  • yaw:   复制一个单词,光标在单词任意位置
  • ynw:   复制N个单词
  • ynj:    向下复制n行
  • ynk:    向上复制n行

修改:

  • cl:    更改当前字符
  • cw:    修改当前单词到结尾
  • cc:    修改当前行

粘贴:p,粘贴用x、d、y操作的文本


光标:
k  上一行  h  左移一个字符
l  右移一个字符  j  下一行
       当前行的末尾

       当前行的开头

       当前行第一个字母

gg       文件头

       文件尾

``       回到光标跳转前的位置

       跳到屏幕上的第一行

       跳到屏幕的中间行

       跳到屏幕上的最后一行

w:      光标以单词向前移动至单词第一个字母

b:      与w相反,向后移动至单词的第一个字母

e:       光标以单词向前移动至单词最后一字母

ge:      与e相反,向后移动至单词的最后一字母

%:       移动到与制匹配的括号上去(),{},[],<>等

CTRL+G  得到当前光标在文件中的位置

向下翻页(page down):    CTRL+f

向上翻页(page up):    CTRL+b

向下移动半屏:CTRL+d

向上移动半屏:CTRL+u

'' 同`` -- 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查

找到某个单词后, 再输入此命令则回到上次停留的位置.

'. -- 此命令相当好使, 它移动光标到上一次的修改行.

`. -- 此命令相当强大, 它移动光标到上一次的修改点.



ctrl+d 向下翻半屏  ctrl+f  向下翻屏
ctrl+b  向上翻屏  ctrl+u  向上翻半屏
0(零);^  行首 $  行尾

GG  到文件尾  gg  到文件头


查找替换:

N 找到上一个匹配字符  n  找到下一个匹配字符
:s/vivian/sky/  替换当前行第一个 vivian 为 sky
:s/vivian/sky/g  替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/  替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g  替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
:%s/vivian/sky/  等同于 :g/vivian/s//sky/ 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g  等同于 :g/vivian/s//sky/g 替换每一行中所有 vivian 为 sky
:s#vivian/#sky/#  替换当前行第一个 vivian/ 为 sky/ ;可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

推出保存:

命令  含义  命令  含义
esc  重新进入命令模式  esc + “:”  进入vi行末模式
q  退出  q!  强制退出
wq  保存并退出  w  保存
ls  执行系统命令 ZZ 保存退出
ZQ 不保存退出 :x 保存退出

寄存器下的操作:

在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。如果不确定寄存器里放了什么内容,可以使用:reg来查看。

Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。

多文件操作

 :ls (:buffers)     显示buffer列表

  1. :bn                  转到下一个buffer
    :bp                  转到上一个buffer
    :b 3                 转到编号为 3 的buffer
    :b index.html        转到名为index.html的buffer

posted on 2011-07-11 16:31  天空尚兰  阅读(256)  评论(0编辑  收藏  举报

导航