vim 操作原石材料
Vim 用户都应该知道 Vim 的 Normal 模式下 operator + motion 组合的便利,比如
- daw 删除光标下的普通单词以及其后的空格
- ciW 删除光标下的以空格分隔的“单词”并进入插入模式 (i 表示 inner,不删除单词后的空格)
- yis 复制光标下的句子到默认寄存器
确实这几个都比较平淡无奇,不过请看以下这些
- ci[ 删除一对 [] 中的所有字符并进入插入模式
- ci( 删除一对 () 中的所有字符并进入插入模式
- ci< 删除一对 <> 中的所有字符并进入插入模式
- ci{ 删除一对 {} 中的所有字符并进入插入模式
- cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
- ci" ci' ci` 删除一对引号字符 (" 或 ' 或 `) 中所有字符并进入插入模式
怎么样?ci[ ci< cit 在编辑 PHP 或者 HTML 源码时简直太爽了 (当然 matchit 插件增强的 motion % 也是必不可少的),ci" ci' ci` 几乎在编辑任何语言的源代码时修改字符串都会非常方便。不过可惜的是以上这些严格的说只能叫文本对象选择,不是 motion,因此只能跟在 v 命令或者某个 operator 后面。可恨用了两年 Vim 居然今天才想起查 Vim 帮助里的 motion.txt。 -_-b
使用了之后,用vim写php/html感觉效率高了很多。从上面的操作中进一步演化,还能有些实用的组合:
* vi[ 选择一对 [] 中的所有字符
* vi( 选择一对 () 中的所有字符
* vi< 选择一对 <> 中的所有字符
* vi{ 选择一对 {} 中的所有字符
* vit 选择一对 HTML/XML 的标签内部的所有字符
* vi” vi’ vi` 选择一对引号字符 (” 或 ‘ 或 `) 中所有字符
如果在选择之后,再用zf组合把它们缩成一行(folder),啊,大量的html就很好伺候了~~还有大段的php function,不在话下。
vi有命令模式和插入模式之分。vi启动后就处于命令模式。在命令模式下,可以随意移动光标、进行复制和粘贴文本等操作。利用“a”、“i”、“c”、“C”、“O”和“o”等命令可以从命令模式切换到插入模式。在插入模式下,可以输入文本,按Esc键切换回命令模式。为了区别不同模式下的命令,本文在介绍时会注明是何种模式下的操作。
另外,本文的所有操作都是在Red Hat 9.0所带的vim中进行。本文介绍的各种技巧多数在各种vi版本中也都是可行的。
加密和解密
加密和解密文件
在命令模式输入“:X”命令,接着输入密码、确认输入密码,最后输入“:wq”命令保存退出。文件就已经被加密了。
经过上面方法加密后的文件变成密文文件。要阅读原来的明文,则在打开文件后,会提示用户输入密码。如果密码输入正确,就能看到原来的明文。另外可以看到,在最后的状态行上有此文件已被加密的提示。
取消加密
取消加密的方法很简单。在命令模式输入“:X”命令,首先会提示输入密码,这时直接敲回车键。接下来在提示重复输入密码时也直接敲回车键,最后输入“:wq”命令保存退出。这样文件的加密就被取消了。
注意,以上加密方法是运行在Red Hat Linux 9.0上的vim中。在其它平台可能略有差异,请以实际平台或版本的帮助为准。
替换操作
经常用到的一些简单替换命令有:
◆ s 将当前字符替换为一个或多个字符,例如5 s 表示将从当前字符开始的5个字符替换为一个或多个字符;
◆ S 将当前行替换为一个或多个字符;
◆ r 单个字符替换。
文本格式转换
将DOS格式文本转成Unix格式文本,命令如下:
:1,$s/^M//g
其中^M是同时Ctrl+V+M按出来的,表示回车。
在行首尾添加字符串
用下列命令在文本每行的行首添加字符串“NewString”,请注意空格的存在。
:g/^/s//NewString/g
:%s/^/NewString/g
用下列命令在每行的行尾添加字符串“NewString”:
:g/$/s//NewString/g
:%s/$/NewString/g
从文本的第3行至最后一行的行首全部插入字符串“NewString”:
:3,$s/^/NewString/
在整个文件中替换
在整个文件中替换特定字符串,所用的命令如下:
:%s/old_string/new_string/g
如果仅将文件中的第3行到第7行中的“old_string”替换成“new_string”,那么使用下列命令:
:3,7s/old_string/new_string/
注意,其中“s”为表示替换动作,“%”表示所有行,“g”表示全文,“^”表示行首,“$”表示行尾。
助力编程
语法加亮
在vi中编写程序,如果为了方便想开启语法加亮功能,只需在命令模式下输入“:syntax on”即可。同理可知,如果想关闭语法加亮功能,就在命令模式下输入“:syntax off”。
快速查看函数帮助
在用vi阅读和编写程序(主要是指C或C++程序)时,如果需要了解某个函数的具体功能,可以将光标移到该函数上,然后在命令模式下输入“K”,就可以调动“Linux Programmer's Manual”中对此函数的man帮助。
标记定位
在阅读和编写大的程序文件时,利用标记(书签)功能定位是十分有帮助的。建议大家多多使用。下面举个简单的例子进行说明。
首先打开一个源代码文件,将光标移到想做标记的位置。假如做一个名为“debug1”的标记,那么用户可在命令模式下输入做标记的命令“mdebug1”,然后敲入回车键,一个名为“debug1”的标记就做好了。
接下来用户可以随意将光标移到其它的位置,当在命令模式下输入“`debug1”后,就能快速回到“debug1”的标记所在行的行首。
“ctags”命令
在阅读和编写C或C++程序时,可用“ctags”命令对当前目录下的C源程序进行扫描。命令如下:
$ ctags *.c
上面一条命令将为当前目录下的.c文件生成tags文件,然后使用“ta 函数名”命令来快速打开相应函数所在文件,并将光标定位在对应函数的开头。
自动对齐
在命令模式下使用“:set ai”命令可以让程序中各行自动对齐。
显示匹配
在编程中{}、[]、()常常是成对出现的,而且常常有多层的嵌套,很容易遗漏和失误。所以下面的这个技巧非常有用。在命令模式下使用“:set sm”命令会在用户敲)、]、}时显示出对应匹配的{、[、(来。
缩写文本
在编程中常常要输入一些重复且很长的信息,比如较长的名词和公司信息等,这时可以用vi的缩写功能。它可以将一个很长的词用一个很短的缩写来代替。比如一个较长的URL,可以给它一个缩写,在命令模式下使用“:ab myurl http://www.mykms.org/kms/myproject/index.php?id=0023”,然后在插入模式下输入“myurl”后,“myurl”就会自动变成刚才定义的那个长的URL。另外,在插入模式下输入“:una myurl”,则是取消“myurl”这个缩写。
set选项
使用“:set”可以设置vi的环境变量。vi的环境变量有很多。使用“:set all”可以显示所有环境变量。使用“:set 变量名及参数”可以设置对应的环境变量。
下面的命令可显示行号:
:set number
下面的命令可将文件设为只读:
:set readonly
下面的命令使vi在“:n”和“:!”命令之前都自动保存文件:
:set autowrite
下面的命令显示用户处在什么模式下:
:set showmode
同理,“:set noshowmode”就是关闭此显示。
vi环境变量还有很多。了解它们,将给用户使用vi带来更多方便。用户可以通过vi的联机帮助查到对应的环境变量的详细作用。
使用宏
vi的宏提供了更强大的功能,用户可以根据自己的需要来定制自己的宏,然后通过宏来完成事先定义好的一整套操作。用“map”来定义一个宏,用“unmap”来删除。在熟悉了vi的基本命令后,将这些命令组合起来就能完成复杂的工作。如果再将这些命令的组合定义成宏的话,就可以方便用户经常性地调用了。这是一个非常强大的功能,建议大家多多使用。
总结
vi是类Unix操作系统上常用的缺省编辑器。了解了vi,用户就能利用它高效地编辑文件。但是学习vi的过程很长,因为它的功能很多。不过它确实是一个值得花时间来学习的工具。所谓“工欲善其事,必先利其器”,希望大家都能学好vi,善用这一文本编辑的利器。
Best of VIM Tips (VIM's best Features) 缩减编辑版
:nmap ,s :source $VIM/_vimrc "执行(载入)vimrc配置 |
vim 操作原石材料相关推荐
- 解决Linux下vi或vim操作Found a swap file by the name
在linux下用vi或vim打开 文件时 E325: ATTENTION Found a swap file by the name ".1.py.swp" o ...
- linux中vim保存快捷键设置,Linux中vim操作快捷键非常简洁
Linux中vim操作快捷键非常简洁 作者:PHPYuan 时间:2019-03-20 03:40:08 vim 中快捷键操作(简洁版) yy:复制 p:粘贴[大写P是光标所在行的上一行粘贴,小p反之 ...
- linux vim操作提示:“Can't open file for writing”或“operation not permitted”的解决办法
linux vim操作提示:"Can't open file for writing"或"operation not permitted"的解决办法 在linu ...
- vim配置即.vimrc文件的配置及vim操作技巧
目录 1.1 vim配置(.vimrc配置) 1.2 vim操作技巧 1.VIM文本替换命令 2. 在VIM中进行文本替换 3.vim官方教程 1.1 vim配置(.vimrc配置) 1.下载vim( ...
- 最全最好用的vim配置(即.vimrc文件的配置),附加vim操作技巧
请注意:此教程是在他人基础上修改的,部分内容需要自己调整.--这也是学习使用vim的必经之路. 目录 1.1 vim配置(.vimrc配置) 1.2 vim操作技巧 1.VIM文本替换命令 2. 在V ...
- vim 操作出现 Found a swap file by the name xxxx
引起的问题 有时在 vim 操作文件时,会弹出如下的提示: 6个选项的含义 在提示信息中,我们可以看到有6个选项供我们选择,接下来我会介绍下这6个选项的含义 [O]pen Read-Only 以只读模 ...
- 在linux中的vi中的删除操作,linux中vi和vim操作
一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...
- 连接并配置好无极网络VPS主机 | 配置Mysql数据库 | Centos 常用操作| vim操作 | 保持centos的任务 | 阿里云mysql | Node.js | 腾讯云mysql
在无极网络获得主机并用Xshell6连接上 配置主机的DNS和网络连接 # http://www.5jwl.com/style/info/shownews.asp?id=1383 Xshell 6 ( ...
- linux之vim操作快速跳到下一个空格和上一个空格命令
1.问题 vim里面如何再文本里面快速跳到下一个空格和上一个空格 2.操作 w是在文本里面快速跳到下一个空格 b是在文本里面快速跳到上一个空格
最新文章
- GCP(Google Cloud Platform) Console Shell创建图形界面系统(Ubuntu)
- python是什么怎么用-什么是python items函数?怎么使用它?
- Android inline hook手记
- HTTP强制设置状态码
- 前端vue项目执行npm install 报错cd() never called()
- java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况
- 新手开车 驾驶小秘诀要牢记
- 字符设备驱动高级篇2——字符设备驱动注册代码分析
- 闲话WPF之二十(WPF中的传递事件 [2] )
- Vue slot用法(2018.09.05 星期三)
- 成人python培训_B2B优选:成人编程爱好者学习
- 【2021-12-17】css反爬+pytesseract文字识别
- 浅谈文字编码和Unicode(上)
- 电脑c盘爆满如何清理
- oracle19c windows 桌面版 安装
- 十分钟实现鼠标悬停效果,CSS3悬停效果
- 如何开发手游联运平台?
- 离散傅里叶变换DFT、离散余弦变换DCT、离散正弦变换DST,原理与公式推导
- python免费入门_Python零基础免费入门课程
- 数据库设计的三大范式:详细