VIM 三种模式和常用命令
引言
大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:VIM 酷!你说这么牛X的一东西,怎么着学会也得小半年吧。告诉你,半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!
VIM 介绍
vim/vi 是 Unix / Linux 上最常用的文本编辑器而且功能非常强大。
特点:只有命令,没有菜单
VIM 的三种模式
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和编辑模式(Last line mode)。

命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。
以下是常用的几个命令:
i 切换到输入模式,以输入字符
x 删除当前光标所在处的字符
: 切换到编辑模式,以在最底一行输入命令
若想要编辑文本:启动 Vim,进入了命令模式后,按下i(或a/o)键,切换到插入模式
命令模式只有一些最基本的命令,因此仍要编辑模式输入更多命令。
插入模式
在命令模式下按下 i (或a/o)就进入了插入模式
在插入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Iinsert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
编辑模式
在命令模式下按下:(英文冒号:)就进入了编辑模式。
编辑模式可以输入单个或多个字符的命令(可用的命令非常多)
在编辑模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按 ESC 键可随时退出编辑模式
VIM 常用命令
插入命令
| 命令 | 作用 |
|---|---|
| a | 在光标后附加文本 |
| A(shift + a) | 在本行行末附加文本 行尾 |
| i | 在光标前插入文本 |
| I(shift+i) | 在本行开始插入文本 行首 |
| o | 在光标下插入新行 |
| O(shift+o) | 在光标上插入新行 |
定位命令
| 命令 | 作用 |
|---|---|
| :set nu | 设置行号 |
| :set nonu | 取消行号 |
| gg G | 到第一行 到最后一行 |
| nG | 到第n行 |
| :n | 到第n行 |
保存和退出命令
| 命令 | 作用 |
|---|---|
| :w | 保存修改 |
| :w new_filename | 另存为指定文件 |
| :w >> a.txt | 内容追加到a.txt文件中 文件需存在 |
| :wq | 保存修改并退出 |
| shift+zz(ZZ) | 快捷键,保存修改并退出 |
| :q! | 不保存修改退出 |
| :wq! | 保存修改并退出(文件所有者可忽略文件的只读属性) |
注意事项:
不保存并退出:
有修改,但是修改后的内容是不保存的
有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件
删除命令
| 命令 | 作用 |
|---|---|
| x | 删除光标所在处字符 nx 删除光标所在处后n个字符 |
| dd | 删除光标所在行,ndd删除n行 |
| :n1,n2d | 删除指定范围的行(eg :1,3d 删除了123这三行) |
| dG | 删除光标所在行到末尾的内容 |
| D | 删除从光标所在处到行尾 |
复制和剪切命令
| 命令 | 作用 |
|---|---|
| yy、Y | 复制当前行 |
| nyy、nY | 复制当前行以下n行 |
| dd | 剪切当前行 |
| ndd | 剪切当前行以下n行 |
| p、P | 粘贴在当前光标所在行下 或行上 |
替换和取消命令
| 命令 | 作用 |
|---|---|
| r | 取代光标所在处字符 |
| R(shift + r) | 从光标所在处开始替换字符,按Esc结束 |
| u | undo,取消上一步操作 |
| ctrl+r | redo,返回到undo之前 |
搜索和替换命令
| 命令 | 作用 |
|---|---|
| /string | 向后搜索指定字符串 搜索时忽略大小写 :set ic |
| ?string | 向前搜索指定字符串 |
| n | 搜索字符串的下一个出现位置,与搜索顺序相同 |
| N(Shift + n) | 搜索字符串的上一个出现位置,与搜索顺序相反 |
| :%s/old/new/g | 全文替换指定字符串 (% 指全文,s 指开始,g 指全局替换) |
| :n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
起始行,终止行 s/ 要替换的字符串/替换的新的字符串 /g c 询问确认
eg: :%s/ftp/yang/g 全局替换,把ftp替换为yang
eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换
eg: :41,44/yang/lee/g 同上,不询问,直接替换
eg: :%s//root//ROOT/g 把/root替换为/ROOT
eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替换为/bin/ksh
使用替换命令来添加删除注释
:% s/^/#/g 来在全部内容的行首添加 # 号注释
:1,10 s/^/#/g 在1~10 行首添加 # 号注释
vi里面怎么查命令??
:!which cp
vi里面怎么导入命令的结果?
:r !which cp
可视化模式
- v (可视字符模式)
- V(shift+v) (可视行模式,选择多行操作)
- ctrl+v (可视块模式或列模式,用于操作列)
- I 或者 O (进入插入模式)
VIM 三种模式和常用命令的更多相关文章
- linux中vim编辑器三种模式及常用命令的使用
Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+sh ...
- git三种模式及常用命令
Git的三种重要模式,分别是已提交.已修改.已暂存. 已提交(committed):表示数据文件已经顺利提交到Git数据库中. 已修改(modified):表示数据文件已经被修改,但未被保存到Git数 ...
- vim(vi)下的三种模式及其相关命令
vim(vi)下的三种模式1.命令行模式 2.末行模式 3.插入模式 三种模式的联系及其相互转换 在我们输入vi命令进入编写程序的页面后,我们看到的是命令行模式,在我们输入“a”.“i”.“o”.“O ...
- vi/vim 三种模式的操作
来源:http://www.runoob.com/linux/linux-vim.html ps:刚刚进入vi/vim 是命令模式 一.命令模式 i 切换到输入模式,以输入字符. x 删除当前光标所在 ...
- 文本编辑器vim——三种模式、显示行号、插入命令、行快速定位、行内定位
1.vim的三种工作模式: (1)利用vim命令新建文件: 点击entre键执行命令后,开始向文本中输入想要写入的内容: (2)命令行模式(ESC): 不管用户处于何种模式,只要单击Esc键,即可进入 ...
- 转载:Linux的vim三种模式
一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字. 编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式:在一般模式下按: ...
- vim三种模式
一般模式 以vi打开一个文件就直接进入一般模式了.一般模式下可以移动光标查看内容,通过ESC回到一般模式. 一般模式下常用的操作: 撤销与重做 命令 说明 u 复原上一个操作 . 小数点 重复上一个操 ...
- Linux的vim三种模式及命令
一般模式:在Linux终端中输入"vim 文件名"就进入了一般模式,但不能输入文字.编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式 ...
- Vi/Vim三种模式
命令模式,底线命令模式,输入模式:
随机推荐
- 四、python学习-正则表达式
正则表达式 import re lst = re.findall(正则表达式,需要匹配的字符串) findall 把所有匹配到的字符串都搜出来,返回列表 不能把分组内容和匹配内容同时显示出来 sear ...
- MySQL提升笔记(3)日志文件详解
在MySQL数据库和InnoDB存储引擎中,有很多种文件,如:参数文件.日志文件.socket文件.pid文件.MySQL表结构文件.存储引擎文件. 本节重点关注日志文件,MySQL的复制.事务等重要 ...
- c++排序相关的参数“cmp“的用法及理解
对sort函数(需要algorithm头文件),它的cmp可以是"函数",也可以是"对象" bool myfunction (int i,int j) { re ...
- Linux终端更改字体
1 概述 这里的终端是指通过F1-F6/F2-F7进入的纯命令终端. 修改字体可以通过setfont命令. 2 查看字体 可以通过查找目录consolefonts来确定本地机器上的字体位于哪里: fi ...
- Android Studio在android Emulator中运行的项目黑屏
前言: 最近在做一个Android相关的小项目,因为之前这方面的项目做的比较的少.今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题,经过自己多次的尝试和搜索终于解决了这些问题. 问题: 每次run ...
- VScode+Sublime安装与汉化
两大常用编辑器安装与汉化 想敲代码?工欲善其事,必先利其器,先安装编写代码所需要的工具吧.本期的主角是VScode与Sublime,这是两款比较热门的代码编辑器. 目录: VScode安装与汉化 Su ...
- 【死磕ibatis】SqlMapClient 基本操作示例
前言:想要学习ibatis,我这里写了一些关于SqlMapClient 的具体例子,希望对你有帮助.话不多说,直接看例子. 例 1: 数据写入操作(insert, update, delete): s ...
- 4-socket套接字编程
socket套接字编程 目标:根据socket模块提供的接口函数,进行组合使用完成基于tcp或者udp的网络编程. 套接字:完成上述目标的一种编程手段,编程方案. 套接字分类: 流式套接字(sock_ ...
- Pyqt5 combobox
起因 combobox的使用和介绍 两个combobox 联动 开始 介绍 Combobox是Qt中的下拉复选框, 注意:在添加列表选项时,可以一个个添加,也可以直接使用列表一次性添加多个: 添加多个 ...
- POJ 3301 三分(最小覆盖正方形)
题意: 给你n个点,让你找一个最小的正方形去覆盖所有点.思路: 想一下,如果题目中规定正方形必须和x轴平行,那么我们是不是直接找到最大的x差和最大的y差取最大就行了,但是这个题目 ...