VIM入门
目录
一、vim介绍
二、vim颜色显示和移动光标
三、vim一般模式下移动光标
四、vim一般模式下复制、剪切和粘贴
五、进入编辑模式
六、vim命令模式
七、vim实践
一、vim介绍
vi是最重要的unix及类unix操作系统的文件编辑器,vi编辑器由Bill Joy于1976年创建。vim是vi的改进版。
vim的安装:yum -y install vim-enhanced
vim的启动:直接在命令行输入vim或vim filename(想要编辑的文件名)
vim的三种模式
1.一般模式:控制屏幕光标的移动、删除、复制某处的文件或行
2.插入模式:进行文件输入
3.命令模式:即可以保存文件或退出vim,也可以设置编辑环境。
三种模式的关系

二、vim颜色显示和移动光标
vi默认不带颜色高亮,而vim默认是自带文件颜色高亮效果。但是位置不同,cp后的颜色不一定还存在,颜色跟具体内容有关系。
命令模式光标移动
| 按键 | 功能说明 |
|---|---|
| h或向左箭头键 | 光标向左移动一个字符 |
| j或向下箭头键 | 光标向下移动一个字符 |
| k或向上箭头键 | 光标向上移动一个字符 |
| l或向右箭头键 | 光标向右移动一个字符 |
三、vim一般模式下移动光标
| 按键 | 功能说明 |
|---|---|
| pagedown、ctrl+f | 屏幕向下移动一页 |
| PageUp、ctrl+b | 屏幕向上移动一页 |
| G | 移动到文件的最后一行 |
| nG | 移动到文件的第n行 |
| gg | 移动到文件的第一行 |
| 0 | 移动到当前行的第一行字符 |
| $ | 移动到当前行的最后一个字符 |
| n↓ | 向下移动n行 |
四、vim一般模式下复制、剪切和粘贴
命令行模式删除、复制、粘贴的方法
| 按键 | 功能说明 |
|---|---|
| x | 向后删除一个字符 |
| X | 向前删除一个字符 |
| nx | 连续向后删除n个字符 |
| dd | 删除当前行 |
| ndd | 删除包括当前行在内的向下n行 |
| d1G | 删除当前行之前的所有数据 |
| dG | 删除当前后的所有数据 |
| d$ | 当前行中,删除光标至最后一个字符的数据 |
| d0 | 当前行中,删除该行第一个字符至光标所在位置的数据 |
| yy | 复制当前行 |
| nyy | 复制包含当前行在内的向下n行数据 |
| y1G | 复制当前行之前的所有数据 |
| yG | 复制当前行之后的所有数据 |
| y0 | 复制光标所在的那个字符到该行行首的所有数据 |
| y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
| p | 将已复制的数据粘贴到当前行的下一行 |
| P | 将已复制的数据粘贴到当前行的上一行 |
| u | 撤销上一个动作 |
| [ctrl] + r | 重做上一个动作 |
| . | 重复上一个动作 |
块选择的按键意义
| 按键 | 功能 |
|---|---|
| v | 字符选择,会将光标经过的地方高亮选择 |
| V | 行选择,会将光标经过的行高亮选择 |
| ctrl+v | 块选择,可以用长方形的方式选择 |
| y | 复制高亮选择的区域内容 |
| d | 删除高亮选择的区域内容 |
五、进入编辑模式
进入编辑模式的方法
| 按键 | 功能说明 |
|---|---|
| i | 在当前光标所在位置插入文字,已存在的内容会向后退 |
| I | 在当前行的第一个非空格字符处插入文字 |
| a | 从目前光标所在的下一个字符处开始插入 |
| A | 从光标所在行的最后一个字符处开始插入 |
| o | 从光标目前所在行的下一行处插入新的一行 |
| O | 从光标目前所在行的上一行处插入新的一行 |
| r | 取代光标所在的那个字符 |
| R | 一直取代光标所在的文字,直到按下Esc键 |
六、vim命令模式
常用操作说明
| 按键 | 说明 |
|---|---|
| :w | 保存,将修改后的内容保存 |
| :w! | 强制保存,当文件属性为只读时可以使用这种方法来强制写入 |
| :q | 退出 |
| :q! | 强制退出,并且不保存所修改的内容 |
| :wq | 保存后退出 |
| :e! | 将文件还原到最初始的状态 |
| ZZ | 如果文件没有被修改则不保存离开,如果已修改则保存离开 |
| :w [filename] | 将修改后的文件另存为其他文件 |
| :r [filename] | 在编辑的文件中,读入另一个文件的内容 |
| :n1,n2 w[filename] | 将n1到n2的内容保存为filename这个文件 |
| :! command | 暂时离开vi到指令模式下执行命令command |
| :set nu | 显示行号 |
| :set nonu | 取消显示行号 |
| n | 重复前一个搜寻动作 |
| N | 反向进行前一个搜寻动作 |
| :n1,n2s/word1/word2/g | 在第n1与n2行之间查找word1字符串,并将该字符串替换为word2 |
| :n1,n2s/word1/word2/gc | 与以上内容相同,但是在替换之前请用户确认是否需要替换 |
七、vim实践
实践文件生成
man vi > temp
下述实践操作基于temp文件
1. 分别向下、向右、向左、向上移动6个字符(6j 6l 6h 6k)
2. 分别向下、向上翻两页(分别按两次ctrl+f和ctrl+b或分别按两次PageUp和PageDown)
3. 把光标移动到49行(49G)
4. 把光标移动到行尾,再移动到行首(shift+4或$,shift+6或0)
5. 移动到temp文件的最后一行(G)
6. 移动到文件的首行(gg)
7. 搜索文件中出现的"vim",并数一下该字符出现的次数(/vim 然后按n)
8. 把从第1行到第10行出现的vim替换成gedit(:1,10s/vim/gedit/g)
9. 还原上一步操作(u)
10. 把整个文件中所有的etc替换成cte(:1,$s/etc/cte/g)
11. 把光标移动到第20行,删除字符串"editor"(20G,然后按l向右移动光标找到editor,dw删除)
12. 还原上一步操作(u)
13. 删除第50行(50G dd)
14. 还原上一步操作(u)
15. 删除第37-42行的所有内容(37G 6dd)
16. 还原上一步操作(u)
17. 复制第48行的内容并粘贴到第52行(48G yy 52G p)
18. 还原上一步操作(u)
19. 复制第37-42行的内容并粘贴到第44行上面(37G 6yy 44G P大写)
vim快速删除一段字符
http://www.apelearn.com/bbs/thread-842-1-1.html
vim乱码
http://www.apelearn.com/bbs/thread-6753-1-1.html
用vim打开一个空白文档,然后把已经复制的代码给粘贴进来,发现它有自动缩进功能,最终导致粘贴的文本一行比一行靠右,看起来乱成一团。比较快的解决办法是,在粘贴文档前,在命令行模式下,输入
:set noai nosi
然后按'i' 进入编辑模式,再粘贴已经复制的代码内容,这样就不会自动缩进了。
有时候,这样的方法不好用,可以尝试这种:
:set paste
数字小键盘问题
小键盘问题
http://www.apelearn.com/bbs/thread-7215-1-1.html
在putty上用vi的时候,开NumLock时按小键盘上的数字键并不能输入数字,而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。解决方法
选项Terminal->Features里,找到Disable application keypad mode,选上就可以了
在xmanager 4 中的xshell也有小键盘问题 解决方法为
修改session 属性 -> 终端->VT模式->初始数字键盘模式
选择 设置为普通。

vim加密
http://www.apelearn.com/bbs/thread-7750-1-1.html
Linux用vim/vi给文件加密和解密
一、利用 vim/vi 加密:
优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了;
缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除;
vi编辑器相信大家都很熟悉了吧,vi里有一个命令是给文件加密的,举个例子吧:
1)首先在root主目录/root/下建立一个实验文件text.txt:
[root@www ~]# vim/vi text.txt
2)进到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车;
3)这时系统提示让你输入密码,2次,如下所示:
输入密码: *******
请再输入一次: *******
4)保存后退出,现在这个文件已经加密了;
5)用cat或more查看文件内容,显示为乱码;用 vim/vi 重新编辑这个文件,会提示输入密码,如果输入的密码不正确,同样会显示为乱码!
注意:文件加密后,千万别忘了密码!
二、解密用vi加密的文件(前提是你知道加密的密码):
1)用 vim/vi 打开文件如text.txt,要输入正确的密码,然后在编辑时,将密码设置为空,方法是输入下面的命令:
:set key=
然后直接回车,保存文件后,文件已经解密了。
2)或者这样也行:
在正确打开文件后用 “:X” 指令,然后给一个空密码也可以。保存用“wq!”保存。
两种方法实际上效果是一样的。
vim cheat sheat
Vim cheat sheet参考
Vim cheat sheet参考1
参考
https://coolshell.cn/articles/5426.html
http://michael.peopleofhonoronly.com/vim/
VIM入门的更多相关文章
- Vim入门基础
公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...
- Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门
距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...
- Vim入门操作整理
根据小甲鱼的vim入门视频整理,供查阅 移动指令:上下左右 k j h l 翻页: ctrl + b ctrl + f 保存退出:ZZ 普通模式:vim fileName 首次进入的就是普通模式 从 ...
- Vim 入门教程
Vim 入门教程 转载请保留以上信息 Vim 的教程相对比较零散,系统的教程比较少,我也阅读过不少教程,走过很 多弯路.借着 Vim-china 组织组建这一契机,整理下自己学习过的内容, 分享给大家 ...
- vim入门过程
先下载了一本VIM的用户手册. 看到可以使用vimtutor(VIM的入门教程,很不错,由浅入深)作为入门. Unix系统中,请在命令行输入:vimtutor,进入教程. MS-Windows系统中, ...
- [vim] vim入门
1. 概述 工欲善其事 必先利其器.vim是非常好用的文本编辑器,可以将它看作是vi的进阶.绝大多数Unix系统都会内置vi编辑器,vi是文本编辑器,vim是程序编辑器.相比vi,它可以根据文件的类型 ...
- Vim入门学习之Vim解析
Vim解析... ----------------------- 首先你要会从官网上下载你想要的Vim版本: 官网: http://www.vim.org/==================== ...
- Vim入门教程
尽管网上有成打的Vim在线教程,但是要么艰深晦涩,要么太过肤浅.本教程的目标让每个阶段都有斩获,从理解它的哲学(将和你终身相伴)到超越现在编辑技巧,成为其中的牛人. 简单来说,本教程的学习方式将使你终 ...
- Maxiee的Vim入门日记(4)——安装windows下的Cscope
Maxiee今天又学到了一个插件——Cscope.Cscope 是一款用于查看大型工程中的代码的软件.它使用方便,支持快速查找 C Symbol.function 等在工程中所有出现的位置,而不用自己 ...
- Vim 入门:基础
为工作或者新项目学习足够的 Vim 知识. -- Bryant Son 我还清晰地记得我第一次接触 Vim 的时候.那时我还是一名大学生,计算机学院的机房里都装着 Ubuntu 系统.尽管我在上大学前 ...
随机推荐
- OpenStack-Neutron-VPNaaS-测试和使用
准备 确认安全组规则允许vpn协议通过(tcp协议和icmp协议,测试的时候直接设置“进出”全开) 确认两个子网上的vm可以ping通对方路由的外网ip,确认下两个vm是否可以访问外网 测试环境 (1 ...
- C# AsyncCallback异步回调用法示例
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 雾霾天出行,如何精确避开“雷区”?2016 SODA数据侠十强
(2016年参加了上海 SODA 竞赛,进入前十,最终获得上海市的两个奖项.) ▍跟踪雾霾,仅靠零星的监测点数据怎么行? 如果雾霾短期内没有办法彻底根治,我们可以做什么,把环境污染物对人的影响尽可能降 ...
- "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。"异常处理
公司一台SQL Server服务器一直报 "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库."错误,按网 ...
- Linux操作oracle——关闭、停止、重启
基础命令: 在此之前,先介绍一下切换到oracle用户的命令 su - oracle (注意空格) 一.启动监听.启动数据库1.1启动监听1.切换到oracle用户下 2.启动监听: lsnrctl ...
- PHP实现简单发红包(随机分配,平均分配)
最近碰到一些情况,把思路重新整理了一下,敲出代码.记下来,以后可以借鉴,进一步优化等. 大致的思路:红包主要分两种,一种是平均分配,一种是随机分配. 1.平均分配 平均分配相对好理解,只要把钱平均分给 ...
- topcoder srm 580 div1
problem1 link 最优选择一定是在$2n$个端点中选出两个. problem2 link 分开考虑每个区间.设所有区间的左端点的最大值为$lc$,所有区间的右端点的最小值为$rc$.对于某个 ...
- 51Nod - 1384 正常解法
这个是正常解法 #include<stdio.h> #include<string.h> #include<math.h> #include<time.h&g ...
- (14)线程- Event事件和守护线程Daemon
<一>Event事件 线程Event基本和进程的Event语法是一样的 # wait() 动态给程序加阻塞 # set() 将内部属性改成True # clear() 将内部属性改成Fal ...
- 用GraphX分析伴生网络(一)
1. 图论与GraphX 图论是一个数学学科,研究一组实体(称为顶点)之间两两关系(称为边)的特点.通过构建关系图谱,并对关系进行分析,可以实现更好的投放广告,推荐关系等.随着关系图谱越来越强大,计算 ...