引言

大数据开发工作中,周围的同事不是用 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,上/下翻页

    I

  • insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  • 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! 保存修改并退出(文件所有者可忽略文件的只读属性)

注意事项:

不保存并退出:

  1. 有修改,但是修改后的内容是不保存的

  2. 有突发情况,导致窗口退出。修改文件之后,直接删除同名的.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 三种模式和常用命令的更多相关文章

  1. linux中vim编辑器三种模式及常用命令的使用

    Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+sh ...

  2. git三种模式及常用命令

    Git的三种重要模式,分别是已提交.已修改.已暂存. 已提交(committed):表示数据文件已经顺利提交到Git数据库中. 已修改(modified):表示数据文件已经被修改,但未被保存到Git数 ...

  3. vim(vi)下的三种模式及其相关命令

    vim(vi)下的三种模式1.命令行模式 2.末行模式 3.插入模式 三种模式的联系及其相互转换 在我们输入vi命令进入编写程序的页面后,我们看到的是命令行模式,在我们输入“a”.“i”.“o”.“O ...

  4. vi/vim 三种模式的操作

    来源:http://www.runoob.com/linux/linux-vim.html ps:刚刚进入vi/vim 是命令模式 一.命令模式 i 切换到输入模式,以输入字符. x 删除当前光标所在 ...

  5. 文本编辑器vim——三种模式、显示行号、插入命令、行快速定位、行内定位

    1.vim的三种工作模式: (1)利用vim命令新建文件: 点击entre键执行命令后,开始向文本中输入想要写入的内容: (2)命令行模式(ESC): 不管用户处于何种模式,只要单击Esc键,即可进入 ...

  6. 转载:Linux的vim三种模式

    一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字. 编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式:在一般模式下按: ...

  7. vim三种模式

    一般模式 以vi打开一个文件就直接进入一般模式了.一般模式下可以移动光标查看内容,通过ESC回到一般模式. 一般模式下常用的操作: 撤销与重做 命令 说明 u 复原上一个操作 . 小数点 重复上一个操 ...

  8. Linux的vim三种模式及命令

    一般模式:在Linux终端中输入"vim 文件名"就进入了一般模式,但不能输入文字.编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式 ...

  9. Vi/Vim三种模式

    命令模式,底线命令模式,输入模式:

随机推荐

  1. 2020 OO 第一单元总结 表达式求导

    title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...

  2. Spring MVC(七篇)

    (一)Spring MVC简介 (二)SpringMVC核心控制器 (三)Spring MVC Controller接口控制器详解(一) (三)Spring MVC Controller接口控制器详解 ...

  3. c++ 实现向量去重操作

    去重的时候要考虑线性表或链表是否是有序 1.1.无序线性表 对于向量[1,5,3,7,2,4,7,3], 从头开始扫描vector内的元素, 对于表中r处的元素a[r], 检查数组0至r-1区间内是否 ...

  4. ORM 创新解放劳动力 -SqlSugar 新功能介绍

    介绍 SqlSugar是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,Github star数仅次于EF 和 Dapper 优点: 简单易用.功能齐全.高性能.轻量级.服务齐 ...

  5. 利用Apache部署静态网站(二)

    本文接着<利用Apache部署静态网站(一)>继续部署,为系统中的每位用户创建一个独立的网站. httpd服务程序提供的个人用户主页功能可以为每位用户创建一个独立的网站.该功能可以让系统内 ...

  6. k8s 创建私有docker仓库 登陆授权令牌的Secret

    参考https://kubernetes.io/zh/docs/tasks/configure-pod-container/pull-image-private-registry/ Kubernete ...

  7. 模拟退火算法(1)Python 实现

    1.模拟退火算法 模拟退火算法借鉴了统计物理学的思想,是一种简单.通用的启发式优化算法,并在理论上具有概率性全局优化性能,因而在科研和工程中得到了广泛的应用. 退火是金属从熔融状态缓慢冷却.最终达到能 ...

  8. 官宣 MAUI 在.NET Preview 3的最新进展

    我们在.NET 6 Preview 3中交付了.NET多平台应用UI的移动和桌面开发的最新进展.此版本添加了Windows平台和WinUI 3,改进了基本应用程序和启动构建器,添加了原生生命周期事件, ...

  9. windows黑窗口命令笔记

    windows有个黑窗口,吃惊吧!意外吧!! 哈哈,我是真的有些吃惊的!! nslookup ipconfig /all ipconfig /flushdns windows 声音修复 windows ...

  10. LeetCode---42. 接雨水 (hard)

    题目:42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例: 输入:height = [0,1,0,2,1,0,1,3,2,1,2, ...