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操作 ...
随机推荐
- ES6学习 第四章 字符串的新增方法
前言 本章介绍字符串对象的新增方法.不常用的方法不做重点笔记. 本章原文链接:字符串的新增方法 includes().startsWith().endsWith() 确定一个字符串是否包含在另一个字符 ...
- NC20811 蓝魔法师
题目链接 题目 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一 ...
- Linux IOS镜像中查看Kernel 版本号
开ISO镜像,到rpm包的目录里面去找到kernel-********.RPM这个包,中间的星号那一段就是内核版本
- Ubuntu20.04/22.04 ESP32 命令行开发环境配置
ESP32 芯片系列 ESP32分三个系列 ESP32-S ESP32-S3: Xtensa 32位 LX7 双核 240 MHz, 384KB ROM, 512KB SRAM, QFN7x7, 56 ...
- 玩转C语言:深入理解输入输出函数的奥秘
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 单字符输出函数 在C语言中有一个函数putchar专门负责输出单个字符,其语法如 ...
- 石子合并(区间dp+记忆化搜索)
经典例题:石子合并 题目链接 N 堆石子排成一行,现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.计算合并最小得分. 方法一.区间dp ...
- ALTER TABLE 加字段的时候到底锁不锁表?
Mysql5.6版本之前 更新步骤 对原始表加写锁 按照原始表和执行语句的定义,重新定义一个空的临时表. 对临时表进行添加索引(如果有). 再将原始表中的数据逐条Copy到临时表中. 当原始表中的所有 ...
- 基于javaweb的个人音乐网站
一 .需求 ① 前台用户: 用户注册和登录以及完善个人资料: 添加好友功能(用户之间可通过发送好友申请添加好友,被添加人可以同意或拒绝好友申请): 下载歌曲功能(当用户点击下载按钮时,就能下载相对应的 ...
- nodejs内存泄漏概要分析
const heapdump = require('heapdump'); setTimeout( ()=>{ heapdump.writeSnapshot(`${process.cwd()}/ ...
- 解决celery与django结合后,分别启动celery和django的进程同时调用定时任务的问题
django中引入celery后发现在代码中写如下这样的定时任务,启动celery和django的工程后,他们都会调用这个定时任务导致,任务有的时候会冲突出现奇怪的问题.如何解决请继续看. sched ...