Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198831
  • 博文数量: 124
  • 博客积分: 7051
  • 博客等级: 少将
  • 技术积分: 1425
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-20 13:21
文章分类

全部博文(124)

文章存档

2008年(124)

我的朋友

分类: LINUX

2008-04-23 20:17:26

   
 vim有三种模式-普通(可视命令)模式,命令行模式,编辑模式。启动vim后在任何模式下按Esc键进入到普通模式。普通模式下输入:回车进入命令行模式,此时vim最窗口最下面一行为:   后面可以输入命令行命令.在执行任何命令前要确保在相应的模式下。

1.启动与退出 

   1)vi filename   (启动vim)

   2)命令行模式下 :wq=> 保存并退出,:q!=>强行退出,:e!=>放弃修改文件内容,重新载入该文件,:x=>退出,文件更改并保存,ZZ=>同:x命令 (退出vim)

 

2.基本设置-命令行模式下

 

  • :set nu 显示行号
  • :syn on 显示语法高亮
  • :set shiftwidth=4 设置自动缩进 4个空格, 当然要设自动缩进先.
  • :set sts=4 即设置 softtabstop 为4. 输入 tab 后就跳了 4 格.
  • :set tabstop=4 实际的 tab 即为 4个空格, 而不是缺省的 8 个.
  • :set expandtab 在输入 tab 后, vim用恰当的空格来填充这个 tab.
  • :setsuffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc
  • 在vim中打开文件时, 按 tab键补齐文件名时它会忽略上述文件.
  • :set enc=utf-8设置文字编码

设置配置文件:

:scriptnames  列出配置文件.vimrc所在的目录

:version 用户所用的配置文件.vimrc的位置

 

 

3.光标定位(普通模式、可视模式)

$      当前行的末尾

0      当前行的开头

^      当前行第一个字母

gg     文件头

G       文件尾

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

H      跳到屏幕上的第一行

M      跳到屏幕的中间行

L      跳到屏幕上的最后一行

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

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

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

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

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

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

向下翻页(pagedown):   CTRL+f

向上翻页(pageup):   CTRL+b

向下移动半屏:CTRL+d

向上移动半屏:CTRL+u

补记:

. 光标定位(普通模式、可视模式)$ 当前行的末尾0 当前行的开头^当前行第一个字母gg 文件头G 文件尾`` 回到光标跳转前的位置H跳到屏幕上的第一行M 跳到屏幕的中间行L 跳到屏幕上的最后一行w:光标以单词向前移动至单词第一个字母b:与w相反,向后移动至单词的第一个字母e:光标以单词向前移动至单词最后一字母ge:与 e相反,向后移动至单词的最后一字母%:移动到与制匹配的括号上去()...

光标定位技巧的补充:

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

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

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

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

补记:

行号+G 跳转到指定行

fx 向右跳到本行字符x处(x可以是任何字符)

Fx 向左跳到本行字符x处(x可以是任何字符)

tx 和fx相同,区别是跳到字符x前

Tx 和Fx相同,区别是跳到字符x后

 

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

删除:

  • dd:   删除一行
  • dw:   删除一个单词,需将光标移到单词的第一个字母。
  • d$:   删除当前光标到该行的行尾的字母
  • daw:  删除一个单词,光标在单词任意位置
  • dnw:  删除N个单词
  • dnj:   向下删除n行
  • dnk:   向上删除n行
  • J:    删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。

复制:

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

修改:

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

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

可视模式下的方式:

可视模式下,选中要编辑的文字,可执行d、y,操作。

寄存器下的操作:

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

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

 

5.多文件操作

 

  1. :ls (:buffers)    显示buffer列表
    :bn                  转到下一个buffer
    :bp                  转到上一个buffer
    :b3                 转到编号为3 的buffer
    :bindex.html        转到名为index.html的buffer
    :sav                 另存为……
    :sethidden          切换buffer时不给出保存当前buffer的提示
    CTRL-G              查看当前buffer状态信息,如文件名、总行数、修改后未保存等。
  2. :sp(:vsp) 文 件名     vim 将分割出一个横(纵)向窗口, 并在该窗口中打开新文件.从 vim6.0开始, 文件名可以是一个目录的名称,把该目录打开并显示文件列表,在文件名上按回车则在本窗口打开该文件, 若输入O则在新窗口中打开该文件, 输入 ?可以看到帮助信息 。                
  3. :e文件名            vim 将在原窗口中打开新的文件, 若旧文件编辑过,会要求保存.
  4. c-w-w(即 ctrl键与 w 键一同按下) vim 割了好几个窗口怎么办?输入此命令可以将光标循环定位到各个窗口之中.c-w-h光标到左窗口,c-w-j下窗口,c-w-k上窗口,c-w-l右窗口。
  5. ls         此命令查看本vim 程序已经打开了多少个文件, 在屏幕的最下方会显示出如下数据:
     1  %a     "usevim.html"        行 162
    2  #      "xxxxxx.html"        行0                     
  6. 其中:   1    表示打开的文件序号, 这个序号很有用处.
            %a    表示文件代号, % 表示当前编辑的文件,
           # 表示上次编辑的文件
                         "usevim.html"   表示文件名.
                         行162         表示光标位置.:b序号(代号)        此命令将指定序号(代号)的文件在本窗口打开, 其中的序号(代号)
                         就是用 :ls 命令看到的.
  7. :setdiff            此命令用于比较两个文件, 可以用
                         :vsp filename
                         命令打开另一个文件, 然后在每个文件窗口中输入此命令,就能看
                         到效果了.
阅读(306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~