VIM? 就是一个文字编辑的软件,类似软件还有 emacs 即Editor MACroS(编辑器宏)和notepad plus。emacs 和 notepad 对于软件编程人员更加友好,Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中,在基于编辑器的功能基础上,Emacs自行开发了一个“bourne-shell-like”的shell: EShell。Emacs还可以:收发电子邮件 、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新、闻组、登陆IRC和朋友交流、查看日历、撰写文章大纲、对多种编程语言的编辑、调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等多种程序语言、玩游戏、计算器、记日记、管理日程,Task,ToDo,约会、个人信息管理、目录管理、文件比较、阅读info和man文档、浏览网站、为各种程序(TeX等)提供统一的操作界面。notepad 也可
以供相似的功能, 不过在使用人数上vim 和notepad 相对更多。当然这些都是我网上查找并且编辑的,但是!请注意!这不重要。 请看下文!
本文针对数字后端同事在工作对各种report进行有效快速的编辑操作以及 一些文本中的常用操作进行汇总说明, 但是! 不仅局限于数字后端, 你想用来干什么都可以!
本文分为以下几个模块:
vim 中大家常说的几种模式
vim 常用环境配置,用于编写脚本以及简单明了的查看report。
vim 中的查找替换,用于对脚本中的变量进行批量替换和。。。。
vim 中的文字编辑,当然还是编写脚本时用~\(≧≦)/~啦啦啦,还可以用于对report的修改整理,变成自己想要的格式。
vim中的高效“神操作”,不解释!一旦用了你就回不去了!
1 vim中大家常说的几种模式:
normal mode: 一般刚打开的文件都是出于normal mode,主要用于浏览文件内容, 在任何模式下, 只要按Esc 按键, 都可以直接返回normal mode。
visual mode: 这个mode 可以理解为在normal mode 的基础上用光标进行高亮选择,分为两种模式visual block mode(按ctrl+v 进入) 和Visual line mode(按shift +v 进入),后面会进行进一步解释这两个mode及操作。
insert mode : 插入模式主要用来编辑增加或者删减文本内容,分为多种插入操作模式,后面会进行进一步解释以及具体操作。
command mode: 主要用来对文本内容进行批量编辑或者对文本自身进行保存、退出编辑等动作,当然后面也会进一步解释。
2 vim常用环境配置
对vim进行个性化的配置可以有效提高工作效率, 由于每个人的习惯不同,下面介绍一些我自己常用的配置,大家可以进行修改成适合自己的环境!
colorschemeevening /* 设定vim 背景颜色,其他颜色还有 peachoff等
set number /*设置默认显示行数
set autoindent /*自动缩进
set smartindent /*智能缩进,适用于写脚本时自动缩进,不需要手工按Tab或者space去缩进,方便快捷
set guioptions-=T /*隐藏编辑栏,去掉不常用的编辑栏,还你一个清新的窗口,可以增加阅读窗口,可视化面积更大
set incsearch /* 当键入搜索内容时,自动搜索,当你想知道一个log时候有Error 时,当你输入Error这个词的同时,vim 便会告诉你有没 Error,如果有,那你的光标已经自动跳到Error 所在的位置了,不需要在多一步Enter 键啦。
highlight Comment ctermfg=blue guifg=blue
nnoremap :g/^\s*$/d
nnoremap :tabnew .
set completeopt=preview,menu
set clipboard+=unnamed
set autowrite /*设置自动保存
winpos 300 10 /*设置窗口开启时的大小
set lines=100 columns=200 /*设置窗口开启时的位置,窗口左下角为(0,0)原点。方便在同时打开多和窗口时,不会被新打开的窗口完全覆视野, 配合winpos 一起使用,效果不言而喻!用过之后你就会明白多么的高效啦!
set showcmd /*当你保存一个文件时,会自动生成一个备份文件, 例如 文件report_timing.tcl,备份文件名为 report_timing.tcl~。当然再有什么外部信号中断并kill 掉vim时,vim 也会自动备份一个。
set backup
set report=0
map T dwelp
set guifont=Monospace\ 12
set nocompatible
set backspace=2
syn on
set hlsearch
hi Comment ctermfg =blue
set dictionary=~/.inn_cmd /*这个就是神操作的一部分啦,先保密哈
vim中的其他设置还有很多,不过我觉得这个设置已经可以相对完全的覆盖我们日常工作中常用的一些操作,增加我们的工作效率。
3 vim 中的查找替换,利于对脚本中的变量进行批量替换和。。。。
normal mode 下向上查找光标所在位置关键字,文本中所有符合pattern 的都会被高亮显示
shift+# 或者命令模式(command mode)输入:?pattern
向下查找关光标所在位置的关键字,文本中所有符合pattern 的都会被高亮显示
shift+* 或者命令模式输入:/pattern
上面这两个操作主要应用与查看timing report 和 检索log 时, 例如在打开一个timing report 时,我们想依次看看从上往下每一条path slack的大小, 只需要将光标停在Slack这个字符串上,按shift+# 或者 shift+*进行网上或者往下搜索,按键按一下搜索一下。在检索log里面的Warning 和Error时也同样适用。
dd /normal mode下 删除行
u /normal mode 下撤销之前的动作,例如你反悔了又不想删除了
x /normal mode 下剪切一个字符,或者当我们选中一块或者多行文本时,按x 可以瞬间剪切,
yy /normal mode 下 复制一整行,包括行尾的换行符,当在visual mode 下我们选中多行或者一块区域时,只需要一个"y"(只需按一下),便可以复制,
n+yy / normal mode下复制光标所在行及以下的n 行
p /normal mode 下瞬间粘贴,当使用x 进行剪切后,按下p 后会直接粘贴在光标所在行的后面;如果是使用“yy”或者“y”进行复制后,按下p后,会在光标所在的位置进行粘贴并且将所粘贴的内容插入光标所在位置与光标紧邻的字符之间,你可以试试大写的“P”。
注意!剪切复制粘贴名操作只能针对同一个文件内的内容进行编辑,不能使用此操作进行跨文件复制粘贴!!!!
r replace/normal mode 下降光标停在你想的替换的字母上,按下r,然后按下你想要的新的字母即可, 替换一个字母,例如将光标停在e 上面,如图:
hello, 然后按下r, 接着按下a, 便可以得到hallo。
命令模式下将m到n 行 的‘str1’替换为 “str2”
:m,n s/str1/str2/g 或 :m,n g/str1/s//str2/g
命令行模式下将文本中的 str1 替换为str2
:%s/str1/str2/g 或者:g/str1/s//str2/g
命令行模式下删除含有特定字符的行,例如删掉含有123456789的行,命令为:g/123456789/d,
如果要删除不包含123456789的行呢? 只需输入:g!/123456789/d, "!" 为非的意思。
删除光标所在行以及后面的所有行只需将光标定位在需要的行, 然后按一下d,再按一下shift+g,即可!相反,如果要删除光标所在行以及以上行,只需一次按:d,gg,即可!
命令行模式下执行上一个已经执行过的命令(英文的句号),主需要输入一个英文的点“.”即可!
撤销前n步(次)动作, n为任何数字
n + u
command mode 下进行字符串(比如字符串all)数量统计,这个命令常用于查看
:%s/all/&/gn
下篇将会接着总结第四不分(vim 中的文字编辑)和第五部分(vim中的高效“神操作”)
领取专属 10元无门槛券
私享最新 技术干货