VI命令

 

使用 Vi

____William Liu

vi 编辑器是所有 Unix 及 Linux 系统下的标准编辑器,它强大功能不逊色于任何最新的文本编辑器。本文只是介绍一下它的基本操作,相信你如果深入学习的话会深深的喜欢上这个软件。同时 Vi 也是 Linux 中最基本的文本编辑器,学会它后,您将在 Linux 的世界里畅行无阻。你可以在 linux 下运行 vimtuitor 查看一个入门的教程。本文在此基础上重新整理归纳了一下,并补充了一些高级操作。您也可以用 vi 打开一个文件,实践一下本文介绍的操作。

1 、 Vi 的工作模式:

基本上 vi 可以分为三种工作模式,分别是命令模式( command mode )、插入模式( Insert mode )和底行模式( last line mode ),各模式的功能区分如下:  

•  命令模式 command mode ):也叫编辑模式,你可以通过输入各种命令来对你的文本进行编辑。这些命令包括:控制屏幕光标的移动,字符、字或行的剪切、复制,等等。一般 vi 默认开始是在这个模式下。要输入文本你可以输入 a 或者 i 。

•  插入模式( Insert mode ):只有在 Insert mode 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。

•  底行模式( last line mode ):功能和命令行模式很相象,其实也可以看成命令忙模式的一种。因为这种模式下的命令都是以“:”、“ / ”或者“?”开头,且显示在屏幕区的底行,所以也称底行模式。一般用来控制文档的显示方式或者保存、退出等等。

三种模式相互转换的方式如下图一:


图一:三种工作模式的相互转换关系

2 、命令模式(编辑模式)下的常见命令

2.1 转到插入模式

a

在当前光标所在字符之后插入

A

在当前光标所在的行尾插入

I

在当前光标所在字符之前插入

I

在当前行的第一个非空字符前插入

O

在当前光标所在的行之下再创建一个新行,然后在新行插入

O

在当前光标所在的行之上再创建一个新行,然后在新行插入

2.2 移动光标

← , ↓ , ↑ , → ,h,j,k,l

光标向左、下、上、右分别移动一个字符

0

移到光标到所在行的第一个字符处

^

移动光标到第一个非空格字符上

$

移动光标到所在行的行尾

G ( Shift+g )

移动光标到文章的最后一行

w,W

移到光标到下一个单词的第一个字符上

b,B

移到光标到前一个单词的第一个字符上

e,E

移到光标到当前单词的最后一个字符上

Ctrl+b,Ctrl+f

向后、向前卷动一屏

Ctrl+u,Ctrl+d

向后、向前移动半屏,并置光标到屏幕中间

#G ( # +Shift+g )

跳转到第#行

Ctrl+g

读取当前所在的行号

2.3 删除文字

x

删除光标所在的字符

X

删除光标所在的字符之前的字符

dd

删除当前行所有的字符

d$ , D

删除从光标处到行尾的字符

de

删除从光标处到下一个空格之前的字符

dw

删除从光标处到下一个单词之前的字符

# d[object]

表示连续删除 # 个 object

注:严格来说应该叫剪切命令。因为删除的字符或者行都进入剪贴板了。使用 p 命令可以复制出来。

2.4 复制文字的一些命令:

yy,#yy

将当前的行(或者多行)拷贝入剪贴板

P

从剪贴板中复制

2.5 替换文字的一些命令:

r

替换当前字符

R

替换当前行的字符,直到用户输入 <ESC>

2.6 恢复上一次操作的命令

u

恢复上一次的编辑操作

Ctrl+z

撤销上一次的恢复操作

2.7 更改操作的命令

cw,c#w

删除当前一个或者 # 个词,并进入插入模式

2.8 保存并退出命令

ZZ ( Shift+z+z )

保存并退出

2.9 在 vi 中使用 man 帮助手册

K(shift+k)

将光标放在需要查找的函数上,然后敲 K 将可以看到相应 man 页

fg

将光标放在 include 文件上,然后敲 fg ,将可以看到对应的文件

3 、底行模式的常见命令

3.1 跳到文件中的某一行

:#

如输入 ': 15' ,再回车,就会跳到文章的第 15 行。  

3.2 查找字符或者字符串

/string +n/N

可以在文件中向后查找匹配的 string 。如果第一次找的关键字不是您想要的,可以一直按 n/N 继续查找

?string +n/N

可以在文件中向前查找匹配的 string ,如果第一次找的关键字不是您想要的,可以一直按 n/N 继续查找

注:可以使用转义字符

^ : 表示行首 / /: 表示字符 '/'

3.3 查找配对命令

%

把光标放在任何一个 ( 、 [ 或 { 处 , 接着按 %, 此时光标将转移到配对的括号处

3.4 替换命令

:s/old/new

用 new 替换所在行的第一个 old 字符串

:s/old/new/g

用 new 替换所在行的所有 old 字符串

:%s/ctrl_v_m//g

将 windows 编辑的模式修改为 linux 的格式

:#1,#2s/old/new/g

用 new 替换第 #1 到 #2 行的所有 old 字符串

:%s/old/new/g

用 new 替换文件中所有 old 字符串

3.5 执行外部命令

:!command

执行 command 命令。比如 ':!rm test' 、 ':!shell' 、 ':!ls -l'

3.6 使用帮助

:help ,<F1>

获取帮助文档

:help user-manual

获取用户手册帮助文档

:help CTRL-D

获取 CTRL-D 命令的帮助

:help :e

获取 :e 命令的帮助

:set nu ?, :help nu

获取 :set nu 的帮助

3.7 保存和退出文件  

:w(write) [file]

将文件保存起来。

:#1,#2 w file

将文件中第 #1 行到 #2 行的内容写入 file 文件中

:r(read) file

将 file 文件读入到光标处

:#r file

将 file 文件读入到第 # 行

:saveas filename

将文件另存为 filename

:q/:q!

不保存,直接退出。 '!' 表示强制退出

:qw

保存,并退出

3.8 编程相关系列命令

:syntax on/off

语法高亮

:set ai(auto indent)

自动缩进

:set cin(cindent)

设置为 c 语言的缩进格式

:set ru(ruler)

在右下角显示光标所在的位置

:set is(incsearch)

显示匹配一半时的结果

:set nu(number)

在文件中的每一行前面列出行号

:set sm(showmatch)

键入 ),],} 时光标将短暂 (matchtime) 的显示一下相应的 (,[,{

:set aw(autowrite)

自动保存

:set ro(readonly)

设置文件只读

:set sw=#(shiftwidth)

设置一个 shift 的单位 ;'>>' 或 '<<' 将左或者右移一个 shift 单位

:set ts=#(tabstop)

显示 table 的长度

:set et(expandtab)

将以后键入的 tab 键或者 shift 单位转换为 ts 个数目的 space 键

:set hls(hlsearch)

高亮显示搜索到的结果

:set backspace

一般设置为 ‘:set backspace=indent,eol,start' 表示退格键可以删除如上三种符号

:set lbr(linebreak)

在换行的时候不打断单词

:set list( nolist)

显示隐藏字符

3.9 管理相关的命令

:suspend

在 linux 下将 Vi 转后台运行,在 windows 下转最小话

:pwd

取当前目录名

:cd dir

转到 dir 目录

:find filename

找到 filename 文件,并打开之

:shell

打开一个 shell

:map

创建宏,比如 :map <F5> i{<Esc>ea}<Esc> , unmap 将取消宏

:ab 、 :una

设置简写 , 比如 :ab #d #define, :nua #d 将取消简写

3.10 其他命令

:split/:vsplit

展开多个窗口水平 / 垂直,然后可以使用

Ctrl w w: 切换窗口

Ctrl w +: 扩大窗口

Ctrl w -: 缩小窗口

Ctrl w _: 最大化窗口

:edit dir

将进入目录编辑模式,在这里面你可以

? 显示帮助

<enter> 用 vi 打开文件,或者进入子目录

p 预览文件

D 删除文件

i 显示当前目录下文件的详细信息

x 调用外部程序执行对应文件

- 进入上一级目录

R 重命名文件

s 重新排序

4 、修改 vi 的启动文件

1) 创建一个 vi 的启动脚本,

如果是 windows 的话,使用 :edit $VIM/_vimrc

如果是 linux 的话,使用 :edit ~/.vimrc

2 )导入 vimrc 的范例文件 ‘:read $VIMRUNTIME/vimrc_example.vim'

3) 保存并退出之 ':wq'

看看你现在 vi 的效果:)

下面我介绍一下我的 vimrc 的配置,共参考 (“% 后面为我添加的注释内容 )

“ 选择 torte 配色方案,可以有好多种,参看安装目录下的 color 目录

colors torte

"shiftwidth = 4

set sw=4

" cindent options refer ‘:h cinoptions-values'

set cindent

set cino+=b1,g0,i0,(0,W1s

set cino=: 0g 0

“ enable showmatch

set sm

" tabstop=4

set ts=4

" expand tab to space

set et

“ enable line brea k

set lbr

" high light search

set hls

" use '+' to folding parenthesis

set foldmethod=manual

map + v%zf

set number

set textwidth=78

"set no compatible

set nocp

set nobackup

set title

set incsearch

" 使用 explorer 的 O 命令时,可将生成窗口放到右边,并激活

let g:explVertical=1

let g:explSplitRight=1

5 、添加插件

Vim 下可以添加两种插件, global_plugin 和 filetype_plugin 。

两种插件的差别在于, global_plugin 对所有文件类型都有效,比如 explorer,taglist 。而 filetype_plugin 只针对相应文件才有效。

Global_plugin 的插件都放在 vim 目录下的 plugin 目录中。

Filetype_plugin 的插件都放在 vim 目录下的 ftplugin 目录中。

一般来说,添加完插件后都应该将对应的帮助文件也添加到 vim 的帮助文档中去。一般的方法是直接拷贝插件的 .txt 文件到 vim 目录下的 doc 目录中。然后切换到 doc 目录下,启动 vim 然后执行“ : helptags . ”

4.1 添加 ctags 插件

从网络上下载最新的 ctags 压缩包( ctags56.zip )。解压缩后,将 ctags.exe 文件拷贝到 gvim.exe 所在的目录就行了。

这里不用拷贝 ctags 的帮助信息到 vim 中去,因为 vim 中本来就有 ctags 的帮助信息。

有了 ctgas 组件之后,用户可以

ctags ./ *. c ./*.h :再当前目录下建立所有 c 文件和 h 文件的索引

在文件中,将鼠标放在函数名或者变量名上后,可以使用“ ctrl+] ”“ ctrl+T ”在定义和使用处切换。

4.2 添加 taglist 插件

该组件必须要有 ctags 的支持。从网络上下载 taglist 的压缩包 (taglist_41.zip) 。解压缩之后,将 taglist.vim 拷贝到 vim 目录下的 plugin 目录中去。

将 taglist.txt 拷贝到 vim 目录下的 doc 目录中去。然后在该目录下启动 vim ,并运行“ : helptags . ”

该组件可以为我们简历一个 C 或者 C++ 源文件的索引列表。

运行 ”:Tlist” 命令。可以看到左边出现了一个包含方法名和变量名的窗口。

这里我们还要在 _vimrc 文件中添加如下两行。

let Tlist_Use_Right_Window=1

let Tlist_File_Fold_Auto_Close=1

可以将生成的窗口显示在右侧,并自动折叠不使用的变量名。

最后显示的结果如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值