Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2445084
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: 系统运维

2010-10-01 13:06:15

方向键
    space|l     右移
    return|+    下一行首
    j           下一行当前位置
    -           上一行首
    k           上一行当前位置
    h           左移
    0           本行首
    $           本行尾
    Ctrl+l      清除屏幕上的假字符

多行编辑
    Ctrl v; shift i;     适用于多行开头加/减空格与注释
   
单词操作:由(.?, -)等分割的字符串
    w           将光标前移一个词
    b           将光标移动到字的开始
    e           将光标移动到字的结尾

大范围移动
    shift h      移动到屏幕第一行(或者gg)
    shift m      移动到屏幕中间行
    shift l      移动到屏幕最后一行
    ctrl f       前移一屏
    ctrl b       后移一屏
    shift g      移动到最后一行
    n shift g    移动到第n行
    ^            移动到本行开头
    $            移动到本行结尾

    %            可以让光标从它当前所在的括号跳转到与它相匹配的括号上去

添加文本
    a            添加光标后
    i            添加光标前
    shift a      添加到行末尾
    shift i      添加到行首
    o            添加几行到下一行,然后Esc
    shift o      添加几行到前一行,然后Esc

删除文本
    x            删除光标处的字符
    d w          删除当前光标到下一个单词开始处之间的内容
    d $          删除从光标到行尾
    shift d      同上
    d d          删除所在行
    n dd         删除所在N行
    :n1,n2 d     删除n1和n2之间的行
    n ××         将上面的命令重复n次,即执行到n个对象上
      :g/^$/d         删除所有空行

修改和替换
    r            替换单个字符
    shift r      替换字符序列
    c w          修改当前字,从光标处到这个字的结尾
    c e          同上
    c b          修改当前字,从字开头到光标
    c $          修改一行,从光标到该行的结尾
    shift c      同上
    c c          修改整行
   利用 :s 命令可以实现字符串的替换。具体的用法包括:
  :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
  :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
  :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
  :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
  :g/str1/s//str2/g 功能同上
  
查找
    /string      向前查找
    ?string      向后查找
    n            当前方向的下一个
    shift n      反方向的下一个
    g d          查找光标所在的单词

拷贝、剪切和粘贴
    p            将删除和复制的内容粘贴到光标右边
    shift p      粘贴到光标左边
    y w          复制光标右边直到下一个词
    y $          复制到行尾
    shift y      同上
    y y          复制整行
    n ××        将上面的命令重复n次,即执行到n个对象上

重复命令
    .            重复执行上一组命令和操作

撤销和重做
    u            撤销上一个操作
    Ctrl + r   重复执行上一组命令和操作

设置vi环境

缩写选项

全名

默认值

功能

ai

autoindent

off

自动缩进

ap

autoprint

on

当前行改变时,被输出到屏幕

eb

errorbells

off

命令错误时,报警

nu

number

off

显示行号

redraw


on

变化发生时,屏幕刷新

report


5

编辑操作大于制定次数时,出发消息

sm

showmatch

off

输入右圆括号时,显示匹配的左括号

smd

showmode

off

显示INPUTREPLACECHANGE

warn


on

缓冲区有数据,退出时触发警告

wm

wrapmargin

0

定义右边距。

ws

word search

on

查找时遇到,从接着找


   -- 设置可以在命令行输入,也可以写在$HOME下的.exrc (如果是vi)或者.vimrc(如果是vim)中。
  1. # 设置autoindent
  2. :set ai

  3. # 取消autoindent
  4. :set noai

  5. # 查看autoindent
  6. :set ai?

  7. # 设置所有选项
  8. :set
  9. --- Options ---
  10.   autoindent expandtab history=50 modified shiftwidth=4 tabstop=4 ttymouse=xterm2 t_Sf=^[[3%dm
  11.   cscopetag filetype=xml hlsearch ruler softtabstop=4 textwidth=79 viminfo=

  12. To see the current indenting settings, and where they were set, enter:
  13. :verbose set ai? cin? cink? cino? si? inde? indk?

  14. If you are editing a particular file and you want to prevent auto indenting within that file, enter:
  15. :setlocal noautoindent
  16. :setlocal nocindent
  17. :setlocal nosmartindent
  18. :setlocal indentexpr=

  19. The following is equivalent (it uses the abbreviated names in a single command):
  20. :setl noai nocin nosi inde=



非交互的输入
    echo "dG^M a this is some thing^[:wq^M" | vim test.txt
   其中^M不是两个字符,而是换行的意思;^[代表ESC。他们输入的时候需要同时按下CTRL和V,以及对应的字符

阅读(1838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~