首页 > 学院 > 操作系统 > 正文

(四)文本编辑器Vim/Vi

2024-06-28 13:21:06
字体:
来源:转载
供稿:网友
(四)文本编辑器Vim/Vi Posted on 2015-04-14 00:20 wsying 阅读(...) 评论(...) 编辑 收藏

  目录

  • 前言
  • 常用命令
  • 扩展应用
  • 总结

本系列先前的随笔位于新浪博客

前言

  Vi和Vim都是文本编辑器,不同的是Vim是Vi的升级版本,它不仅兼容Vi的所有指令,而且还有一些新的特性在里面。

  Vim/Vi是一个功能强大的全屏幕文本编辑器,是linux/UNIX上最常用的文本编辑器,主要用于使用Linux Sever时进行类似于DOS下批处理的Shell脚本编程,以及进行配置文件的修改,它的作用是建立、编辑、显示文本文件。

  Vim/Vi没有菜单,只有命令

  Vim/Vi的三种工作模式:

  

常用命令    1、插入命令
插入命令
命令作用
a(append)在光标后附加文本
A在本行行末附加文本,即光标移至行末并进入插入模式
i(insert)在光标前插入文本
I在本行行首插入文本,即光标移至行首并进入插入模式
o在光标下插入新行
O在光标上插入新行

  2、定位命令
定位命令
命令作用
h、方向左键光标左移一个字符
j、方向下键光标下移一行
k、方向上键光标上移一行
l、方向右键光标右移一个字符
$光标移至行尾
0光标移至行首
H(High)光标移至屏幕上端
M(Middle)光标移至屏幕中央
L(Low)光标移至屏幕下端
:set nu显示行号
:set nonu取消显示行号
gg光标到第一行
G光标到最后一行
nG、:n光标到第n行

  3、删除命令
删除命令
命令作用
x删除光标所在处字符
nx删除光标所在处后n个字符
dG删除光标所在行起到文件末尾的内容
D删除从光标所在处到行尾
:n1,n2d删除指定范围(n1~n2)的行

  4、复制和剪切命令
复制和剪切命令
命令作用
yy、Y复制当前光标所在行
nyy、nY复制当前光标所在行起n行
dd剪切当前光标所在行
ndd剪切当前光标所在行起n行
p(paste)粘贴在当前光标所在行下面
P粘贴在当前光标所在行上面

  5、替换和撤销命令
替换和撤销命令
命令作用
r(replace)替换光标所在处字符
R从光标所在处开始替换字符,按Esc结束
u(undo)撤销上一步操作

  6、搜索和替换命令
搜索和替换命令
命令作用
/string

从前向后搜索指定字符串string

按n跳到下一个指定字符串出现的位置

按N跳到上一个指定字符串出现的位置

搜索时忽略大小写:set ic

:%s/old/new/g全文替换指定字符串(用new替换old)
:n1,n2s/old/new/g在一定范围(n1~n2)内替换指定字符串

  7、保存和退出命令
保存和退出命令
命令作用
:w保存修改
:w new_filename另存为指定文件
ZZ、:wq保存修改并退出
:q!不保存修改退出

:wq!(只有管理员root或

文件的所有者可以使用)

保存修改并退出

可忽略文件的只读属性

扩展应用

  1.在当前文件末尾导入其他文件的内容  :r 文件名

  2.在Vim/Vi中执行命令  :! 命令

  3.在当前文件末尾导入命令执行的结果(上面两个命令结合)  :r !命令  

    范例:常用于把当前时间导入到文件末尾用来标识最后一次修改时间  :r !date

  4.定义快捷键  :map 快捷键 触发命令  (取消定义的快捷键:unmap 快捷键)

    范例:定义快捷键ctrl+p在行首插入#注释本行  :map ^P I#<ESC> (^P并不是直接打出来的,而是先按ctrl+v,再按ctrl+p,I为在行首插入,#为注释符号,在Shell脚本和Linux系统配置文件中#表示注释,<ESC>表示从插入模式返回到命令模式)

       定义快捷键ctrl+b删掉行首字符(多用于取消注释)  :map ^B 0x  (0把光标移至行首,x删除这个字符)

       定义快捷键ctrl+e在当前光标前插入我的邮箱地址  :map ^E iupc_eniac12@163.com<ESC> 

  5.连续行注释  :n1,n2s/^/#/g  (实际上就是之前提到过的替换命令,^表示行首(是直接打出来的,不是ctrl+v),这里的行首指的是这个位置不是光标移到行首指示的那个是字符,所以这么命令起到的作用是添加而不是替换,要添加的符号是#)

    在大多数程序设计语言中注释符号是//,而不是#,这时连续行注释要这么写  :n1,n2s/^//////g  (错误的写法:n1,n2s/^////,Vim识别不出中间的//为要添加的内容,所以要用转义字符'//'表示'/',new的地方是////,使用了转义字符表示//)

  6.连续行取消注释  :n1,n2s/^#//g  (^#表示行首的#,把行首#替换成空,即删除行首#)

  7.实时替换  :ab mymail upc_eniac12@163.com  (ab是替换命令,把a替换成b,此处a是mymail,b是upc_eniac12@163.com,该命令是实时替换即当我们在文本中输入mymail后再按下空格或ESC,Vim会自动把我们刚才输入的mymail替换成upc_eniac12@163.com,所以这是一个懒人必备的命令,取消这个实时替换的命令是:unab mymail)

  上述对Vim的设置只在本次打开有效,如果要让其再任意时刻打开都有效需要编辑Vim的配置文件(~/.vimrc,~表示用户的宿主目录,管理员root的宿主目录缺省在/root下面,普通用户的宿主目录缺省在/home下面),配置文件.vimrc缺省是空的,例如在文件中写入set nu,则以后每次打开Vim都会默认显示行号

总结

  Vim/Vi博大精深,初学者使用会觉得十分复杂,操作效率低下,但当你完全熟悉了它之后,你就会觉得它简直就是个神器,使用它可以极大的提高我们码代码的效率。

  这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘就可以完成很多复杂功能文本编辑的编辑器,不然,Visual Studio也不就会有vim的插件了。

  学习vim就像学弹钢琴一样,一旦学会,受益无穷。

  另外这里还有一篇关于Vim比较不错的文章,想要深入学习可以看一看


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表