目录

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

前言

  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、方向右键 光标右移一个字符
$ 光标移至行尾
光标移至行首
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@.com<ESC>  

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

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

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

  7.实时替换   :ab mymail upc_eniac12@.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比较不错的文章,想要深入学习可以看一看

(四)文本编辑器Vim/Vi的更多相关文章

  1. 文本编辑器VIM/VI

    vim/vi  功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org  构建shell脚本 :set number 使文件出现行号 a 光标后附件文件     i在光标前插入文 ...

  2. 文本编辑器vim/vi用法完全解读

    vi用法 1.启动vim 2.命令模式和输入模式 3.退出vi 4.vi与ex命令 5.移动光标 6.跳转 7.搜索 8.插入文本 9.修改文本 10.替换文本 11.删除文本 12.恢复和撤销改变 ...

  3. 文本编辑器vim/vi——命令模式

    一个完整的指令的标准格式: Linux通用的格式——#指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. vim指令: 指令:vim   (vim是一款 ...

  4. 文本编辑器vim/vi——模式切换及输入模式

    vim一共有三种模式:命令模式.输入模式.末行模式 要从命令模式切换到输入模式:a,i,o a——append 属于在后面追加内容:i——insert 属于插入,在前面插入内容:o——other 属于 ...

  5. 文本编辑器vim/vi——末行模式

    指令格式: #vim 文件路径作用:打开指定的文件. 进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入 退出方式: a. 按下esc b. 连按2次esc键 c. 删除末行全部输入字 ...

  6. Linux系列教程(十)——Linux文本编辑器vim

    通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...

  7. Linux文本编辑器vim

    目录 1.vim 的工作模式 2.插入命令 3.定位命令 4.删除命令 5.复制和剪切命令 6.替换和取消命令 7.搜索和搜索替换命令 8.保存和退出命令 9.vim 高级操作 10.总结 通过前面几 ...

  8. LINUX文件内容处理及文本编辑器vim

    Linux基本操作命令 echo命令 echo命令: 把echo后面的内容显示到屏幕. -n 显示内容的时候不显示每行结尾的回车 echo 内容 >> 文件名 表示把内容加到一个文件的末尾 ...

  9. 文本编辑器vim和gedit

    vim和gedit都是文本编辑器 vim用法: vim 文件名 #打开文件 输入 i,进入文本编辑模式,编辑完再按ESC,退出编辑模式,再输:wq,保存退出:如果输:q!则是不保存退出,很简单.. 如 ...

随机推荐

  1. Codechef2015 May - Chef and Strings (后缀自动机)

    用后缀自动机统计出出现1~n次的串的数量f[i] 对于ans[k]=sigma(f[i]*C(i,k)) i>=k ; mo=; ..maxn] of dword; nt:..maxn,'a'. ...

  2. Selenium - IWebDriver.SwitchTo() frame 和 Window 的用法

    IWebDriver.SwitchTo().Frame(IWebElement frame) 如果一个页面是一个html元素, 只有一个head, 一个body, 那么使用IWebDriver.Fin ...

  3. 触摸事件UITouch的用法

    触摸屏幕是iOS设备接受用户输入的主要方式,包括单击.双击.拨动以及多点触摸等,这些操作都会产生触摸事件. 在Cocoa中,代表触摸对象的类是UITouch.当用户触摸屏幕后,就会产生相应的事件,所有 ...

  4. 开源 VS 商业,消息中间件你不知道的那些事

    11月23日,新炬网络中间件技术专家刘拓老师在DBA+社群中间件用户组进行了一次主题为“开源 VS 商业,消息中间件你不知道的那些事”的线上分享.小编特别整理出其中精华内容,供大家学习交流. 嘉宾简介 ...

  5. word文档快速取消图片的链接

    快捷键Ctrl+Shift+F9 首先,Ctrl+A全选文章或者用鼠标拖动的方法选中部分文中: 批量删除word文档中的超级链接然后,同时按下键盘上的Ctrl+Shift+F9. 效果就出现了! 宏方 ...

  6. smartmontools的安装使用和实现对磁盘的Nagios监控

    安装 首先从sourceforge下载最新的安装版本. 解压编译 $ tar -zxvf smartmontools-6.4.tar.gz $ cd smartmontools-6.4 $ ./con ...

  7. win7 一些快捷系统工具命令

    1.cleanmgr: 打开磁盘清理工具 2.compmgmt.msc: 计算机管理 3.conf: 启动系统配置实用程序 4.charmap: 启动字符映射表 5.calc: 启动计算器 6.chk ...

  8. html--整站制作

    1.样式初置 body,div,ul,ol,h1,h2,h3,h4,h5,p,form,input,textarea,select{margin:0;padding:0;} li{list-style ...

  9. 传统解析xml的方式

    1. 介绍 1)DOM(JAXP Crimson解析器)          DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允 ...

  10. LESS中文版函数手册

    LESS是一种由Alexis Sellier设计的动态层叠样式表语言.LESS 做为 CSS 的一种形式的扩展,它并没有减少 CSS 的功能,而是在现有的 CSS 语法之上,添加了许多其它的功能. 在 ...