Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2383897
  • 博文数量: 473
  • 博客积分: 12252
  • 博客等级: 上将
  • 技术积分: 4307
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:02
文章分类

全部博文(473)

文章存档

2012年(8)

2011年(63)

2010年(73)

2009年(231)

2008年(98)

分类: LINUX

2008-08-11 18:07:19


   基础
常见的4种模式:
正常模式,命令模式(:),插入模式(i),可视模式(v)

正常模式即默认启动后的模式
命令模式下用于输入各类指令(例如查找替换等)
插入模式下输入文字
可视模式调整排版等

一般在操作系统上都用vim替代了vi(作了alias),相当于vi的升级,多了许多强大的功能

正常模式
d系列命令(剪切)

dd 剪切当前一行
5dd 剪切5行(依此类推,6dd删除6行)
dw 剪切当前位置开始的单词
d$ 剪切当前位置起该行所有内容
d^ 剪切当前位置前该行所有内容
dG 剪切当前位置后所有内容
dgg 剪切当前位置前所有内容

y系列命令(复制)
使用方式与d系列无异
yy 复制当前行
...

p 粘贴到当前位置后
P 粘贴到当前位置前

x系列(删除字符)
x 删除当前单个字符
5x 删除5个字符
X 删除前个字符

位置移动
l 右
h 左
k 上
j 下
gg 篇首
G 篇尾
^ 行首
$ 行尾

i 切换到插入模式
o 向下一行,同时切换到插入
O 向上一行,同时切换到插入
shift a 行尾插入(有时相当有用,如使用eeepc的vi时)

: 切换到命令模式

v 切换到视图模式

注:esc 从其他模式退到正常模式下

插入模式
不作介绍,即一般的编辑

命令模式
w 保存(跟文件名的话可保存为新文件)
q 退出
e [文件名] 编辑文件 (用bp 和 np可切换到前个文件以及后个文件)
x 保存并退出(同wq)
q! 不保存退出(一般用于文件有改动而不想保存的情况)
w! 强制保存(对于没权限的还是不能保存的)
grep 同一般的grep 用法
clist 显示grep 出的错误
copen 显示grep 出的列表
cclose 关闭copen或者clist打开的内容
split 纵向切割屏幕 (简写sp)
vsplit 横向切割屏幕 (简写vs)
only 不切割屏幕
ctrl ww vim屏幕之间的切换
/正向查找 (n下一个查找到的,N上一个查找到的)
?反向查找
s/aa/bb/  替换aa为bb(此类使用方式类sed,不详述)



视图模式
选中段内容,可以用==来自动对齐

中文支持
1。创建文件~/.vimrc 内容如下(可参看/usr/share/vim/vim70/vimrc_example.vim)
set encoding=utf-8
set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
set ambiwidth=double
说明
  • encoding=utf-8:不管文件的编码如何,不管如何显示和输入,Vim 内部使用的编码是 UTF-8;这是国际化支持的基础。
  • termencoding:取决于实际的终端或 X Window 的设定。举例来说,如果选择语言简体中文登录到 X Window,或者正在使用 CXTERM [10] 的话,那么该选项应被设为 GB2312;如果使用缺省的语言(LANG=en_US.UTF-8)登录到 X Window,或者使用 PuTTY [11] 远程访问 Linux 机器、并且设定里的字符编码(配置中 Window-Translation)设为 UTF-8 的话,该选项就应该设为 utf-8。从 Windows 下使用 PuTTY 远程连接 Linux 的请特别注意,测试表明,仅在使用 UTF-8 的情况下,PuTTY 才能可靠地支持中文的显示和输入(显示字体必须设成中文字体)。
  • fileencoding:文件载入时,该选项被置为 Vim 认定的文件编码,因此,存储时文件的编码不会改变。此处和下面 fileencodings 可使用的编码为 libiconv 支持的所有几百种编码(如果编译时包含了 iconv 特性的话),与中文相关的有 gb2312、gbk、gb18030、hz-gb-2312、iso-2022-cn、big5、cp936、cp950 等。如果创建新文件,你又不希望使用 UTF-8 作为文件编码时,那么,你可能需要手工设定该选项,如“:set fileencoding=gb2312”。需要注意的一点是,使用“set”来设定该选项的话会改变以后新建文件的缺省编码,而使用 “setlocal”的话则只影响当前文件(参考“:help setlocal”)。
  • fileencodings=ucs-bom,utf-8,chinese:Vim 会首先判断文件的开头是否是一个 Unicode [7] 的 BOM(byte order mark)字符 [8],是的话则把文件的其余内容解释成相应的 Unicode 序列;否的话再试图把文件内容解释成 UTF-8 的序列;再失败的话,则把文件解释为简体中文(chinese 是一个跨平台的简体中文字符集的别名,Linux 下相当于 gb2312 和 euc-cn;此处也可以根据需要以 gb2312、gbk 或 gb18030 等编码替代)。需要注意的是,该顺序不能颠倒,并且在后面再添加其它编码如 big5、latin1 也是没有意义的,因为 Vim 不能识别 8 比特编码中的错误,因此这些编码后列的编码永远不会被用到。
  • ambiwidth=double:把所有的“不明宽度”字符 [9]——指的是在 Unicode 字符集中某些同时在东西方语言中使用的字符,如省略号、破折号、书名号和全角引号,在西方文字中通常字符宽度等同于普通 ASCII 字符,而在东方文字中通常字符宽度等同于两倍的普通 ASCII 字符,因而其宽度“不明”——的宽度置为双倍字符宽度(中文字符宽度)。此数值只在 encoding 设为 utf-8 或某一 Unicode 编码时才有效。需要额外注意的是,如果你通过终端使用 Vim 的话,需要令终端也将这些字符显示为双宽度。比如,XTERM [12] 的情况下应该使用选项“-cjk”,即使用命令“uxterm -cjk”来启动使用双宽度显示这些字符的 Unicode X 终端;使用 PuTTY 远程连接的话则应在配置的 Window-Translation 中选中“Treat CJK ambiguous characters as wide”
    [具体参考IBM文档:
    http://www-128.ibm.com/developerworks/cn/linux/l-tip-vim1/
    ]
    2。修改/etc/sysconfig/i18n
    LANG=zh_CN.UTF-8
    (记得用load进系统 . /etc/sysconfig/i18n)
    3。使用Putty的话配置时translation 中的encoding选UTF-8

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