Linux快速入门(七)效率工具(Vim)
Vim编辑器
所有的Linux系统都会内建一个Vi文本编辑器,而Vim是从Vi发展出来的一个高度可配置的文本编辑器,旨在高效的创建和更改任何类型的文本,它还可以根据文件的扩展名判别编程语言。
使用方式:vim 文件名。
编辑器模式
Vim有三种编辑模式分别是:
(1) 普通命令模式
用户刚启动Vim时,就处于命令模式,在命令模式下,用户的输入会被识别为命令。在这个模式下可以进行文本的复制、粘贴、剪切等操作。在此模式下命令可以进行组合操作。

(2) 编辑模式
在命令模式下按a、i、o中的任意一个按键就可以切换到编辑模式,在编辑模式下按Esc键可以切换到普通命令模式。编辑模式主要是对文件的内容进行编辑。

(3) 底线命令模式
在命令模式下按:就可以切换到底线命令模式,在底线命令模式下按Esc可以切换到普通命令模式。在底线命令模式下,可以对文件内容进行检索、保存、退出等操作。

这三种模式的关系可以表示为(图像来源:菜鸟教程):

Vim命令汇总(图像来源:菜鸟教程):

常用命令
命令模式
通过Vim打开文件之后处于命令模式,在此模式下可以:
光标移动
(1)h和左箭头键表示光标向左移动一个字符,j和下箭头表示光标向下移动一个字符、k和上箭头表示光标向上移动一个字符、l和右箭头表示光标向右移动一个字符
(2)gg:可以将光标移动到文件第一行;G:可以将光标移动到文件的最后一行。如果要移动到指定的某一行可以使用nG,n为一个具体的数字,比如想要移动到第三行可以输入3G,就可以跳转到第三行。
(3)$:将光标移动到当前光标所在行的末尾,n<space>:可以将光标从当前位置向后移动n个位置。文本操作
(1)v:选择模式,在此模式下可以通过上下左右选择需要的文本,然后进行操作。
(2)d:剪切当前选中的文本;dd:剪切当前行;ndd:剪切包括当前行在内的n行;dG:剪切从光标所在行到最后一行的数据,如果想要删除所有数据,可以将gg命令和dG命令组合使用,输入ggdG,光标会先跳转到第一行,然后删除当前行到最后一行的所有数据。可以将这几个命令当删除使用。
(3)y:复制选中的文本;yy:复制当前行;nyy:复制当前行在内的n行
(4)p:在当前光标位置粘贴之前剪切或者复制的内容
(5)u:撤销上一步操作
编辑模式
对文件的内容进行编辑,类似Word操作,在当前模式下可以通过Esc切换到普通命令模式,再通过:、/、?中的任意一个就可以切换到底线命令模式。
底线命令模式
在底线命令模式下Enter键表示输入完成,在此命令模式下可以:
- 格式设置
(1):set nu:显示当前文本的行号;:set nonu:取消行号显示 - 文本检索、替换
(1)/word:从光标当前位置向下查找第一个为word的字符串,使用n可以重复前一个查找操作,这样就可以从光标当前位置一直向下查找带有word的字符串,使用N可以反向重复前一个操作,与n相反,这样就可以从光标当前位置向上查找带有word的字符串;?word从光标当前位置向上查找第一个为word的字符串。
(2):n1,n2s/w1/w2/g:其中n1、n2位数字,g表示全局搜索,该命令表示在第n1行与n2行之间寻找w1这个字符串,并将该字符串替换为w2;:1,$s/w1/w2/g:将第一行到最后一行的w1替换为w2;:1,$s/w1/w2/gc:将第一行到最后一行的w1替换为w2,且在替换前要求用户确认。 - 文件操作
(1):w:保存当前文件
(2):q:退出当前文件(不保存)
(3):q!:强制退出当前文件(不保存)
(4):wq:保存当前文件并退出
(5):wq!:强制保存当前文件并退出,如果是写入之后强制保存需要确保当前文件有写权限
Linux快速入门(七)效率工具(Vim)的更多相关文章
- Linux快速入门打开你的学习之道
Linux快速入门打开你的学习之道 相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什 ...
- Linux快速入门教程-进程管理ipcs命令学习
使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...
- Linux快速入门03-系统管理
这部分将涉及常用的各类linux命令和一些系统高级管理特性,尤其是shell script的创建,这部分在系统自动化运维时会很有作用. Linux系列文章 快速入门系列--Linux--01基础概念 ...
- Linux快速入门02-文件系统管理
继续进入Linux文件系统的学习,加油,早日突破MS压在自己身上的那道束缚. Linux系列文章 快速入门系列--Linux--01基础概念 快速入门系列--Linux--02文件系统管理 快速入门系 ...
- Linux快速入门04-扩展知识
这部分是快速学习的最后一部分知识,其中最重要的内容就是源码的打包和软件的安装的学习,由于个人的Linux学习目的就是自己能在阿里云Ubuntu上搭建一个简单的nodejs发布环境. Linux系列文章 ...
- NOI Linux 快速入门指南
目录 关于安装 NOI Linux 系统配置 网络 输入法 编辑器 1. gedit 打开 配置 外观展示 2. vim 打开 配置 使用 makefile 编译运行 1. 编写 makefile 2 ...
- Linux快速入门01-基础概念
4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它.现在经过慢慢的成长,越来越觉得,Linux是每一个服务端工程师必须掌握的系统,即使是现在最 ...
- linux的基本操作(文本编辑工具vim)
文本编辑工具vim * 命令模式:在一般模式下,输入”:”或者”/”即可进入命令模式.在该模式下,你可以搜索某个字符或者字符串,也可以保存.替换.退出.显示行号等等. 下面笔者教你如何在一个空白文档中 ...
- linux快速入门 1.1命令行操作
http://lovesoo.org/linux-command-line-operation.html 1.1命令行操作 目录: <wp_nokeywordlink>Shell简介 &l ...
- Linux快速入门
一.Linux介绍 1.Linux是基于Unix的开源免费的操作系统 2.Linux的分类: (1)Linux根据市场需求不同,基本分为两个方向: 1)图形化界面版:注重用户体验,类似window操作 ...
随机推荐
- 立创EDA使用笔记
立创EDA 在立创EDA上制作的PCB可以直接导入到嘉立创下单, 每个注册用户每个月可以下两个免费订单, 限制PCB尺寸10CMx10CM, 每单五片, 连制作到快递全部免费, 非常适合做样板. 立创 ...
- USB至串口TTL转接设备及Console线
USB转串口常见芯片方案 FT232, FTDI(英国) 公认稳定可靠, 传输速率3Mbps, 功能最强, 单芯片内置SPI,TWI,JTAG,GPIO等功能. FT232BM为较早型号, FT232 ...
- Ubuntu18.04 Server部署Flannel网络的Kubernetes
准备服务器 ESXi6.5安装Ubuntu18.04 Server, 使用三台主机, 计划使用hostname为 kube01, kube02, kube03, 配置为2核4G/160G, K8s要求 ...
- Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试
前言 上一篇使用QtWebApp的基于Qt的轻量级http服务器实现了一个静态网页返回的Demo,网页服务器很重要的就是日志,因为在服务器类上并没有直接返回,所以,本篇先把日志加上. Demo ...
- 命令行解析parse.parse_know_args()
简介 在接受到多余的命令行参数时不报错,只把第一个参数作为当前使用的命令参数, 剩余部分留给其它程序使用,返回一个tuple类型的命名空间和一个保存着余下的命令行字符的list 示例 import a ...
- 问题解决:由于找不到msvcr110.dll,无法继续执行代码
报错 解决 下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30679
- Fasfdfs搭建
目录 介绍 参考 tracker-server: storage-server: group: meta data: 部署 FastDfs服务架构图 本地部署服务 安装 libfastcommon 和 ...
- TCP的链接和断开_wireShark实践
目录 准备 TCP连接的三次握手 WireShark验证 TCP的四次挥手 WireShark验证 状态解释 其他的 # 概述 终于到了学习总结时间了 准备 TCP连接的三次握手 转自https:/ ...
- Advanced .Net Debugging 3:基本调试任务(上)
一.简介 这是我的<Advanced .Net Debugging>这个系列的第三篇文章.这个系列的每篇文章写的周期都要很长,因为每篇文章都是原书的一章内容(太长的就会分开写).再者说,原 ...
- Java 值传递+引用传递
1 /* 2 * 3 * 方法的形参的传递机制:值传递 4 * 5 * 1.形参:方法定义时,声明的小括号内的参数 6 * 实参:方法调用时,实际传递给形参的数据 7 * 8 * 9 * 2.值传递的 ...