vim 命令学习(高级篇)
【1】打开文件方式
(1)vim +n filename
作用:打开文件,并定位到第n行
例如:vim +103 2019-02-26-errorrepeat.txt
效果:打开2019-02-26-errorrepeat.txt文件,同时,光标定位在103行的行首。
(2)vim + filename
作用:打开文件,并定位到最后一行
例如:vim + 2019-02-26-errorrepeat.txt
效果:打开2019-02-26-errorrepeat.txt文件,同时,光标定位在最后一行的行首。
(3)vim +/pattern filename
作用:定位至第一次被pattern匹配到的行的行首
例如:vim +/"2019-02-26 17:03:21" 2019-02-26-errorrepeat.txt
效果:打开2019-02-26-errorrepeat.txt文件,同时,光标定位在第一次匹配到字符串"2019-02-26 17:03:21"的行的行首。
注意,此时按n键往下继续查找匹配字符串。
(4)vim +?pattern filename
作用:定位至第一次被pattern匹配到的行的行首
例如:vim +/"2019-02-26 17:03:21" 2019-02-26-errorrepeat.txt
效果:打开2019-02-26-errorrepeat.txt文件,同时,光标定位在第一次匹配到字符串"2019-02-26 17:03:21"的行的行首。
注意,此时按n键会往上继续查找匹配字符串。与上一个命令功能类似。
(5)vim -r filename
作用:在上次正用vim编辑文件时发生系统崩溃,恢复filename
【2】末行模式
(1)vim中执行shell命令,有以下几种形式:
1.1 [:!command]
作用:不退出vim正在编辑的文件,直接执行shell命令command,将命令执行结果输出显示在vim的命令区域,不会改变当前编辑文件的内容。
例如:[:!ls -l]
示例:打开文件study.txt,不关闭文件,直接执行命令[:!ls -l],执行输出显示在vim命令区域。
命令:
结果:
当然,特别的,也可以直接运行[:!bash]来启动一个bash shell并执行命令,不需要退出vim。
1.2 [:r!command]
将shell命令command的结果插入到当前行的下一行
例如 [:r!date] 读取系统时间并插入到当前行的下一行
示例:打开文件study.txt,不关闭文件,直接执行命令[:r!date],读取系统时间并插入到当前光标行的下一行。
命令:
结果:
1.3 [:起始行号,结束行号!command]
1.3.1 将起始行号和结束行号指定的范围中的内容输入让shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如 [:1,10!sort] 将1行到10行的内容进行排序,并将结果替换起始行号和结束行号范围中的内容
命令:
结果:
1.3.2 可以只指定起始行(即范围为一行)
例如 [:3 !tr [a-z] [A-Z]] 将第3行的小写字母转为大写字母
命令:
效果:
1.3.3 针对当前光标所在行,除可以指定行号外,也可以用.表示
例如 [:. !tr [a-z] [A-Z]] 将当前行的小写转为大写。试想一下,当你不确定行号的时候,只需要关注光标行,这样的形式是不是很高大上!
命令:
结果:
1.4 [起始行号,结束行号 w !command]
将起始行号和结束行号所指定的范围的内容作为命令command的输入,不会改变当前编辑的文件的内容。
例如 [:1,10 w !sort] 将1至10行的内容作为命令sort的输入,对1至10行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域。
命令:
结果:
特殊的情况,也可以下面这么用
[:62 w !bash] 将会把第62行的内容作为bash命令来执行并显示结果,而且不会改变当前编辑的文件的内容
同样的 [:. w !bash] 将当前行的内容作为bash命令来执行
例如,第3行内容为: ls -l 那么输入[:3 w !bash]就跟执行!ls -l是一样的效果。
命令:
结果:
如果你用的shell是bash shell 如果输入的是[:52 !bash],那么会把第52行的内容也就是ls -l作为命令执行,同时命令的输出结果会替换第52行的内容。
比如上例,执行结果:
注意以上两者其中的区别。
1.5 vim同时打开多个文件时,可以利用[:args]命令查看当前正在编辑的文件(正编辑的文件使用[]方括号括起来)
打开三个文件:
命令:
结果:
如上,[study.txt]为正在编辑的文件。
【3】命令模式
命令模式的操作技巧
【4】编辑模式
编辑模式的操作技巧
【5】其他
其他技巧
备注:为了区别内容中的冒号,所有命令均用[]方括号括起来了,使用过程中注意命令格式。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
vim 命令学习(高级篇)的更多相关文章
- Lua学习高级篇
Lua学习高级篇 之前已经说了很多,我目前的观点还是那样,在嵌入式脚本中,Lua是最优秀.最高效的,如果您有不同的观点,欢迎指正并讨论,切勿吐槽.这个系列完全来自于<Programming in ...
- VIM学习一: VIM命令学习及插件介绍
一.光标移动及编辑命令(含查找替换) [打开关闭窗口] :e file或:open file 打开新文档 :q或者ctrl+w+q 关闭当前视图的窗口 :tab split ...
- vim 命令学习(基础篇)
[1]三种模式 vi的三种模式:命令模式.末行模式.编辑模式. 三种模式相互切换逻辑与命令图: 1.命令模式是vi的默认模式(即每打开一个文件时的初始模式). 2.命令模式切换至末行模式,末行模式切换 ...
- 系统自带vim命令学习教程
[环境] [干货分享] vim或者vi命令在很多linux环境中自带一款学习教程,其教程说明语言还是随系统变化. 输入vimtutor这个命令会打开一款学习神器. 打开之后显示如下,vimtutor一 ...
- vim命令学习
文本编辑器vim vim常用操作 vim是一个强大的全屏幕文本编辑器,是Linux上最常用的文本编辑器,它的作用是建立,编辑,显示文本文件. vim没有菜单,只有命令. 输入a或i或o进入编辑命令,下 ...
- Entity Framework 学习高级篇2—改善EF代码的方法(下)
,IQueryable<Customers>>( (database) => database.Customers.Where(c => c.City == " ...
- Entity Framework 学习高级篇1—改善EF代码的方法(上)
本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. l MergeOption.NoTracking 当我们只需要读 ...
- 数据库MySQL学习笔记高级篇
数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...
- redis学习笔记(详细)——高级篇
redis学习笔记(详细)--初级篇 redis学习笔记(详细)--高级篇 redis配置文件介绍 linux环境下配置大于编程 redis 的配置文件位于 Redis 安装目录下,文件名为 redi ...
随机推荐
- Lock 从来就没有成功过
package lime.thinkingInJava._021._005._003; import java.util.concurrent.ExecutorService; import java ...
- android控件RecyclerView中,如何显示自定义分割线以及最后一项去除分割线
在控件RecyclerView中,分割线DividerItemDecoration类的使用经常见,如果是使用自带的分割线,只需要这样写即可 RecyclerView mRecyclerView; mR ...
- 使用PHP几种写99乘法表的方式
首先按照规矩,还是先废话一番,对于刚学PHP的新手来讲,用php写九九乘法表无疑是非常经典的一道练习题. 但不要小看这道练习题,它对于逻辑的考验还是相当到位的. 也许有人会觉得,九九乘法表有什么难的, ...
- python基础类型—集合
一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- jquery面试(2)
DOM操作——怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体 ...
- common lisp里的几个操作符
setf 赋值操作符,定义一个全局变量.返回值是最后一个赋值的结果. let 局部变量操作符.let表达式有两部分组成.第一部分是任意多的变量赋值,他们被包裹在一个()中,第二部分是任意数量的表示式 ...
- mac sed 使用踩坑实录
[转自别处] 比如我sed想做文件原地的替换,但是怎么写都出错,错误提示还莫名其妙,后来多方搜索才知道Mac上的sed如果参数有-i就必须加上备份指令,即-i后添加任意字符,那些字符就作为备份文件的后 ...
- MySQL 连接数相关参数设置
当我们的数据库服务器遇到如下的错误:ERROR: Too many connections 一种可能性就是我们的压力确实很大,需要增加服务器硬件资源或者增加数据库服务器.但是大多数情况下是我们的连接数 ...
- 浅谈Vue.use
我们先来看一个简单的事例首先我使用官方脚手架新建一个项目vue init webpack vue-demo然后我创建两个文件index.js plugins.js.我将这两个文件放置在src/clas ...
- Web开发——HTML基础(高级文本格式 列表/style)
文档资料参考: 参考:https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_fo ...