Vim基本使用方法来啦
一、Vim是什么
Vim是一个高度可配置的文本编辑器,用于创建和更改任何类型的文本非常高效。与大多数UNIX系统和Apple OS X一起,它被包含为“vi”。Vim是稳定的,并且不断发展,变得更好。其特点是:持久的多级撤消树;广泛的插件系统;支持数百种编程语言和文件格式;强大的搜索和替换;与许多工具集成。
Vim是Vi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员、运维)习惯的编辑器。如果你是一名职业的SE,那么一定在寻找一款出色的能够自由定制、满足灵活编辑功能的编辑器。那么答案,就是vim或者Emacs。vim最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘的各种巧妙组合操作却能带来极为大幅的效率提升。
在Linux系统中,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。
那么vimRC中的RC是什么意思?
一般在运行某个软件、环境或工具之初,要初始执行的一些命令,称为Run Commands,即RC。根据Wikipedia.org的记载,RC缩写的用法源自MIT的相容分时操作系统(Compatible Time-Sharing System,CTSS)[参考1],有兴趣的话请自行了解。
二、三种基本模式
基本上vi/vim可以分为三种状态,分别是普通模式、插入模式和命令模式,各模式的功能区分如下:
1、普通模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段。
2、插入模式
只有在插入下,才可以做文字输入、删除,按「ESC」键可回到普通模式。
可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替换(replace)。
3、命令模式
将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号等……
可以按“:”、“/”、“?”。其中“:”表示输入vim命令,“/”表示后面输入要向下搜索的字符串,“?”表示后面输入要向上搜索字符串。
其实,可以把普通模式理解为常态,进入其它任何一种模式,需要某种特殊方式,而从其它特殊模式回到普通模式,就按「ESC」键即可。
Vim的三种基本模式如下图:
三、vim最常用的配置
为了使以下参数永久有效,那你可以把以下参数写进/etc/vimrc配置文件里,当然,有一些参数已经存在配置文件中了。
1、颜色设置
syntax on 开启代码高亮
syntax off 关闭代码高亮
syntax enable 开启代码高亮
2、搜索设置
set hlsearch --开启搜索高亮
set nohlsearch --关闭搜索高亮
set incsearch --输入搜索字符串的同时进行搜索
set ignorecase --搜索时忽略大小写
3、用户界面
set ruler --开启光标位置提示
set number --显示行号
set nonu --不显示行号
set cmdheight=1 --命令部分高度为1
4、编辑辅助配置
set autoindent --自动缩进
set noautoindent --不自动缩进
set smartindent --智能缩进
set autoread --当文件在外部被改变时,vim自动更新载入
set showmatch --显示匹配的括号
四、常用的状态切换按键
1、普通模式 → 插入模式
i 小写字母i, 在光标位置插入
a 小写字母a, 在光标的下一个位置插入
I 大写字母I, 在光标所在行的第一个非空格处插入
A 大写字母A, 在光标所在行的最后一个字符处插入
o 小写字母o, 在光标所在行的下一行处插入新行
O 大写字母O, 在光标所在行的上一行处插入新航
r 小写字母r, 替换光标所在处的字符一次
R 大写字母R, 持续替换光标所在处的字符,直到按下「ESC」键
2、普通模式 → 命令模式
:w 保存文件
:w! 强制保存文件(前提是用户有修改文件访问权限的权限)
:q 退出缓冲区
:q! 强制退出缓冲区而不保存
:wq 保存文件并退出缓冲区
:wq! 强制保存文件并退出缓冲区(前提是用户有修改文件访问权限的权限)
:w [filename] 另存为名为filename文件
:r [filename] 将另外一个文件读入到正在编辑的文件
:n1,n2 w [filename] 将n1行到n2行的数据另存为名为filename文件
:x 保存并退出
ZZ 保存并退出
ZQ 不保存退出
3、插入模式 → 视图模式
按下「ESC」键
4、命令模式 → 视图模式
按下「ESC」键
五、常用的光标移动按键
1、光标字符操作
h 向左箭头键(←) 光标向左移动一个字符
l 向右箭头键(→) 光标向右移动一个字符
j 向下箭头键(↓) 光标向下移动一个字符
k 向上箭头键(↑) 光标向上移动一个字符
$ 光标移动到行尾(End),注意要按「Shift」键
0 光标移动到行首(Home)
^ 光标移动到行首第一个非空白字符(Home),注意要按「Shift」键
2、光标词操作
w 光标移动到后一词的词首
W 光标移动到后一词的词首且忽略标点符号
e 光标移动到后一词的词尾
E 光标移动到后一词的词尾且忽略标点符号
b 光标移动到前一词的词首
B 光标移动到前一词的词首且忽略标点符号
3、光标行操作
G 光标移动到文件的最后一行的第一个非空白字符
nG/ngg 光标移动到文件的第n行,相当于”:n”
gg 光标移动到文件的第1行的第一个非空白字符
4、光标页操作
Ctrl + f 向下翻页(Pagedown)
Ctrl + b 向上翻页(Pageup)
Ctrl + d 向下翻半页
Ctrl + u 向上翻半页
「H」 光标移动到目前显示页的第一行
「M」 光标移动到目前显示页的中间行
「L」 光标移动到目前显示页的最后一行
5、光标自由操作
Ctrl + o 回到光标的上一位置
六、常用编辑操作按键
1、删除操作(delete)
dd 删除光标所在行
ndd 删除从光标所在行开始,向下的n行
d1G 删除从光标所在行开始,到第一行的所有行
dG 删除从光标所在行开始,到最后一行的所有行
d$ 删除从光标所在位置,到行尾的所有字符
d0 删除从光标所在位置,到行首的所有字符
x 每按一次,删除光标所在位置的“后面”一个字符。
nx 删除光标所在位置的“后面”n个字符。
X 大写的X,每按一次,删除光标所在位置的“前面”一个字符。
nX 删除光标所在位置的“前面”n个字符。
2、复制操作(yank)
yy 复制光标所在行
nyy 复制从光标所在行开始,向下的n行
y1G 复制从光标所在行开始,到第一行的所有行
yG 复制从光标所在行开始,到最后一行的所有行
y$ 复制从光标所在位置,到行尾的所有字符
y0 复制从光标所在位置,到行首的所有字符
J 将光标所在行与下一行合并成一行
yw 复制当前光标所在的字母到该单词的最后一个字母
yaw 复制当前光标所在的单词
3、粘贴操作(paste)
p 小写字母p,粘贴剪贴板中的数据,从光标所在行的下一行开始
P 大写字母P,粘贴剪贴板中的数据,从光标所在行的上一行开始~~
4、撤销与重做操作(undo)
u 撤销上一个操作
5、重复操作
. 重复上一操作
6、替换操作(replace)
r 替换光标所在处字符
R 进入替换模式,直至按ESC退出
cc 替换光标所在行
cw 替换光标所在的英文单词
~ 转换大小写
:n1,n2s/old/new/g 从n1到n2行将old替换成new,g表示全部替换
:1,/old/new/g 将整个文件的old替换成new :1,s/old/new/gcc表示确认
new (y/n/a/q/l/E/Y)? 表示如下:
y: 替换当前内容
n: 不替换
a: 替换所有
q: 退出
l: 替换当前内容,并退出
Ctrl + e:向后查找
Ctrl + y:向前查找
7、排版操作
:le 光标所在行左对齐
:ri 光标所在行右对齐
:ce 光标所在行居中
8、查看历史
:history 显示最近在vim里面输入的历史
七、常用的搜索快捷键
1、搜索字符串
/string 向下搜索字符串“string”
?string 向上搜索字符串“string”
2、重复上次搜索
n 根据上次搜索条件找到下一个匹配的字符串
N 根据上次搜索条件找到上一个匹配的字符串
八、常用多缓冲区操作按键
1、单一缓冲区打开多个文件
:files 显示目前打开了哪些文件
:n 切换到下一个缓冲区内容
:N 切换到上一个缓冲区内容
:2n 切换到下下个缓冲区内容
:bn 下一个缓冲区内容(buffer next)
:bp 上一个缓冲区内容(buffer previous)
2、多个缓冲区打开多个文件
:sp [filename] 打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件
Ctrl+w n 新建一个缓冲区
Ctrl+w q 退出光标所在的缓冲区
Ctrl+w j 光标移动到下一缓冲区
Ctrl+w k 光标移动到上一缓冲区
Ctrl+w l 光标移动到右一缓冲区
Ctrl+w h 光标移动到左一缓冲区
Ctrl+w v 左右切割窗口新建缓冲区
Ctrl+w s 上下切割窗口新建缓冲区
Ctrl+w o 使光标所在缓冲区最大化,其他缓冲区隐藏
九、关于加密
1、加密文本文件
当你用vim打开或新建一个文件时,如果加上-x参数,即:
# vim -x test.txt --打开你要加密的文本文件
那么vim会提示你:
Enter entryption key:
当你输入了密码后,vim会提示你重复输入以确认:
Enter same key again:
当你在设置密码的时候,是以*来显示的,非明文。打开文件之后,:wq保存退出,密码才生效。
当下次有人(包括你自己)打开该文件的时候,vim就会提示:
Enter encryption key:
这时你只要输入你之前所设置的密码就可以了。如果你输入的密码是错误的,vim并不会提示你密码错误,而是显示一堆无意义的垃圾代码。
2、解除加密与重设密码
打开你已经加密的文件,然后输入:
# vim test.txt --打开加密文件之后,输入下面内容
:set key=
这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:
:X
注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:
Enter entryption key: *****
Enter sanme key again: *****
如果是清除密码,连续敲两次键盘就可以了
注意:
加密、解除密码、重设密码之后,一定要保存之后才能生效。
如果密码输入错误,vim不会拒绝访问者编辑文件。在这种显示乱码的情况下编辑文件并保存,整个文件就会变得混乱不堪,无法辨识。今后即使使用正确的密码打开文件,也看不到正确的文档了。
最后,附一张Vim使用总结图
Vim基本使用方法来啦的更多相关文章
- vi/vim基本使用方法
vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- linux系统中如何进入退出vim编辑器,方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了.偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致强 ...
- [转] linux系统中如何进入退出vim编辑器,方法及区别
原文链接:http://www.cnblogs.com/crazylqy/p/5649860.html 在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触 ...
- 【转】linux系统中如何进入退出vim编辑器,方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...
- vi/vim 基本使用方法
vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- [转帖]Vim编辑器使用方法详解
Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...
- vi/vim基本使用方法(转)
转自:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但 ...
- linux系统中如何进入退出vim编辑器的方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...
- vi&vim 基本使用方法
vi/&vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅 ...
- vim ctags使用方法
一.用好系统自带软件ctags 大部分的unix系统都有ctags软件,它能跟vim很好地合作. 用途: 生成c语言的标签文件,实现相关c文件之间的跳转. 用法: 1.生成标签文件 ...
随机推荐
- Kafka相关问题
Kafka有哪几个部分组成 生产者.消费者.topic.group.partition kafka的group1)定义:即消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制.在Kafka中, ...
- SQL之查询
1. SQL之模糊查询 例如查询姓名时,不用输入全名,仅仅输入其中的一部分 语法: select 列名 from 表名 where 列名 like 匹配串 其中 匹配串用英文的单引号括起来 四种匹配模 ...
- echarts 图表 tooltip提示框,formatter自定义
自定义图表提示框样式, 自定义原因:series中有多个数据样式,那么提示框会展示多条. tooltip: { formatter(params) { let circle = `<span s ...
- 调试以及Linq查询
1.调试的步骤 调试快捷键: F10逐过程(不会进入函数内部,直接获取函数运行结果) F11逐语句(会进入函数) F5执行,如果调试中多个断点,按F5执行到下一个断点 出现黄色箭头表示执行到这一句,但 ...
- CentOS7 64位 部署AVA项目:jar包方式
步骤:1.挂载磁盘2.安装jdk1.83.安装mysql5.74.导入数据库5.防火墙端口放行5.运行jar文件 1.挂载磁盘https://www.cnblogs.com/xiang96/p/102 ...
- Excel 去除合并并保留原值的办法
部分Excel中,对行进行了合并.这个方便展示,但是筛选后数据展示会出现问题,需要去除合并,并在每行中保留原来的值. 1.先选择整行,并"取消单元格合并" 操作后出现大量的空值行. ...
- C++生成均匀分布的随机实数
#include<random> #include<iostream> int main() { //定义均匀分布对象,均匀分布区间(a,b)为(2,6) std::unifo ...
- AI技术网关如何用于安全生产监测?有什么优势?
现代工业生产和运营的规模越来越庞大.系统和结构越来越复杂,现场的风险点多面广,给作业一线的安全监管带来极大的挑战.针对工地.煤矿.危化品.加油站.烟花爆竹.电力等行业的安全生产监管场景,可以借助AI智 ...
- mi-root
1.解锁Bootloder 2.刷开发版系统[xposed最新支持8.1],Android版本相对应,线刷的时候一定要记得只选择"全部删除",不要选择"全部删除并lock ...
- MySql分库分表以及相关问题
为什么要分库分表? MySql是存在瓶颈的,数据量就是他最大的瓶颈,如果一张表或者一个数据库里面的数据量过大都会导致一些意料之外的问题,譬如查询过慢,难以维护等问题,这时候就要想出一个完美的解决办法. ...