vim学习小结
参考书籍《Linux 从入门到精通》第二版(刘忆智 等编著)
Vim编辑器
背景:Vim的设计哲学就是让使用者能够在主键盘区完成所有工作。
vim是vi的增强版本,vim分为插入和命令两种模式
插入模式下可以输入字符
命令模式下可执行除了输入字符之外的所有操作,包括保存、搜索、移动光标等。
1.编辑和保存
启动vim时自动处于命令模式
编辑一个文件:
可以在命令行下输入vim file(如果file不存在,那么vim会自动新建一个名为file的文件),启动vim时自动处于命令模式,按i键可以进入插入模式(防坑:按键之前请确保当前输入法是英文), 此命令用于在当前光标所在处插入字符。vim会在左下角提示用户此时所处的模式。
示例:
vim test.py进入文件内,此时为命令模式
输入i后,进入插入模式:
输入想要输入的内容后,按Esc键回到命令模式,此时左下角的“-- 插入 --”提示消失,告诉用户正处于命令模式下。
保存文件:
下一步,需要保存这个文件。需要使用 “:” 命令在底部打开一个命令行,此时光标闪烁,等待用户输入命令
:q 简单退出,如果有修改的话,vim会拒绝退出并在底部显示提示信息
:q! 强制退出
:w 保存不退出
:wq 保存并退出
:wq newfilename 保存退出并另存为新文件名,如果newfilename已存在,可加 ! 强制覆盖。
2.搜索
/string 向前查找(从光标开始的地方“朝向文件尾”)
?string 向后查找(从光标开始的地方“朝向文件头”)
这里的“前”指的是“朝向文件尾”,“后”指的是朝向文件头,跟常见理解的意义不太一样,可以稍稍留意下,通常常用的也就是/string。那么查找到字符串之后,想跳转到下一个出现string的位置如何是好呢。
在首次回车查找之后,按下“n”跳转到下一个出现string的地方,按下“N”跳转到上一个出现string的地方。示例:
3.替换
整体格式 :{作用范围}s/{目标}/{替换成}/{替换标志}
先看一个示例,稍后一一来解释
示例::%s/prints/print/g

回车之后显示如图,所有prints已经被替换成了print
3.1 首先,作用范围
1,4表示从第1行到第4行
n,$s表示从第n行到最后一行
1,$s表示从第一行到最后一行,也可用%s来表示
s的话就表示当前行
3.2 /{目标}/{替换成}
简单来说就是想要把{目标}替换成{替换成},数入想要的内容即可
3.3 {替换标志}
c 每次替换前询问
e 不显示错误信息
g 替换一行中所有的匹配项(此选项通常需要使用)
i 不区分大小写
4.常用配置
vim的配置文件叫vimrc
linux下通常位置etc/vim目录下,修改此配置文件需要root权限,如果没有特殊需要的话,不要那么做。用户可以在自己的主目录下新建一个名为“.vimrc”的文件,然后把配置信息写在里面。
windows电脑下如果安装也会在目录中有一个vimrc文件。如果有一些个性化的配置,可以在此文件更改
比如说自动缩进:set autoindent
5.常用命令表
vim学习小结的更多相关文章
- Vim 学习指南
作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们: 你想 ...
- flex学习小结
接触到flex一个多月了,今天做一个学习小结.如果有知识错误或者意见不同的地方.欢迎交流指教. 画外音:先说一下,我是怎么接触到flex布局的.对于正在学习的童鞋们,我建议大家没事可以逛逛网站,看看人 ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)
react学习小结 本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之 ...
- objective-c基础教程——学习小结
objective-c基础教程——学习小结 提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa 工具包的功能,框架,源文件组织:XCode使用介绍) ...
- pthread多线程编程的学习小结
pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 —— DevSt ...
- ExtJs学习笔记之学习小结LoginDemo
ExtJs学习小结LoginDemo 1.示例:(登录界面) <!DOCTYPE html> <html> <head> <meta charset=&quo ...
- Linux学习系列之Linux入门(二)Vim学习
第二篇 Vim学习 主要内容: 基本命令: 插件扩展: 参考资料: vim是一个命令控制的文本编辑器,可以完成几乎我们想要做的所有工作,除了Emacs几乎没有其他的工具能和它匹敌.官方网站是:http ...
- Vi/VIM键盘图, Vi/vim学习图
Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...
- 点滴的积累---J2SE学习小结
点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...
随机推荐
- 从零写一个兼容MySQL/Oracle的Proxy中件间(一)《初识Oracle的通信协议》
0.前言 MySQL由于开源的原因,有各式各样的中件间Proxy ,极大的丰富了做高可用或迁移的方案,习惯了MySQL生态圈的灵活和便利,Oracle官方不开源代码和协议,没有中间件proxy,显得很 ...
- java 进阶P-2.3+P-2.4
封闭的访问属性 private 封装:把数据和对数据的操作放在一起. (所谓封装就是把数据和对这些数据的操作放在一个地方,通过这些操作把这些数据保护起来,别人不能直接接触到这些数据) 1 privat ...
- mysql 错误解决大法 Specified key was too long; max key length is 767 bytes
高版本mysql向低版本(5.7以下)导入sql时可能会发生此问题 开启索引最大长度 SET GLOBAL INNODB_LARGE_PREFIX = ON; 将表改为动态表SET GLOBAL in ...
- T02 ExtractSubject 项目开发总结
公纵号: 皮豪 博客:www.kbug.cn 邮箱:pphboy@qq.com 前言 看来已经是一种习惯,每次寒假都会开发一个项目出来.本次项目使用的是Qt GUI,语言是C++.不得不说,在业务上写 ...
- WSL 2 内配置Fcitx自启动
前言 我通过配置成fcitx进行服务进行,但其权限是root,在普通模式下无法使用 我用的是xserver ( moba xterm),我要在gtk mode 下启动fcitx,其实 不用这么写 操作 ...
- SpringBoot+mybatis的驼峰命名转换不生效
使用SpringBoote+mybatis在mybatis-config.xml的配置文件内配置的驼峰命名不生效 然后我就将mybatis的配置写在application.yml内,然后就生效了 用注 ...
- layedit 清空 编辑器
使用layedit.setContent(index,"") 即可以清除 layui.use('layedit', function(){ var layedit = layui. ...
- easyUI实现查询条件传递给后端并自动刷新表格的两种方法
easyUI实现查询条件传递给后端并自动刷新表格的两种方法 用ajax的post函数传递参数,再通过loadData方法将数据初始化到表格中 js代码: //根据id搜索 $("#stand ...
- Vue的指令(内容渲染、属性绑定、javaScript表达式、事件绑定、事务对象、双向绑定、逻辑<if-show-for>)
VUE指令 内容渲染指令 v-text v-html v-text="message" v-text会覆盖默认的值 {{message+"!"}}插值表达式 差 ...
- 我做的FFmpeg开源C#封装库Sdcb.FFmpeg
我做的FFmpeg开源C#封装库Sdcb.FFmpeg 写在前面: 该主题为2022年12月份.NET Conf China 2022我的主题,项目地址:https://github.com/sdcb ...