如何使用vim来进行编辑文档和脚本_使用vim编辑test.txt文件, 用ctrl+z将vim程序挂起,通过作业控制查看后台作业情况,-程序员宅基地

技术标签: 编辑器  软件、编辑器安装与使用  linux  vim  

1.vim模式介绍

vim会有4种常见的模式,分别为普通模式、命令模式、插入模式、可视模式。

普通模式:利用vim打开某个文件时,即进入普通模式。

普通模式转为命令模式,使用 “:”。

普通模式转为插入模式,在键盘上输入以下字母:"i,I,a,A,o,O"中任意一个。

普通模式转为可视模式,在键盘上输入字母:“V”,注意是大写。

命令模式、插入模式、可视模式转为普通模式,键盘上按下"Esc"按键。

2.常用命令
2.1 普通模式
2.1.1 移动光标:
按键 按键功能
k或向上箭头 向上移动光标
j或向下箭头 向下移动光标
h或向左箭头 向左移动光标
l或向右箭头 向右移动光标
gg 文件首行的行首
GG 文件尾行的行首
ngg 移动到第n行的行首
2.1.2 删除操作:

注意,删除时会将文本内容进行缓存,然后通过粘贴,实现剪切功能。

按键 按键功能
x 删除光标处的一个字符
dd 删除光标处的所在行
ndd 删除从光标所在行开始的n行(包含光标行),1dd等于dd
dw 删除从光标位置开始的一个单词
d$ 删除从光标处到该行行尾的字符
d^ 删除光标处到该行行首的字符
dG 删除光标行到行尾的所有行
dnG 删除从光标行到第n行(包含第n行)
2.1.3 复制:
按键 按键功能
yy 复制光标所在行
y$ 复制从光标处到该行行尾的字符
y^ 复制从光标处到该行行首的字符
nyy 复制从光标所在行开始的n行(包含光标行),1yy等于yy
yG 复制从光标行到行尾的所有行
ynG 复制从光标行到第n行(包含第n行)
2.1.4 粘贴:
按键 按键功能
p 将复制的内容粘贴到光标所在行的下一行(小写,地位低,居下方)
P 将复制的内容粘贴到光标所在行的上一行(大写,地位高,居上方)
2.1.5 替换:
按键 按键功能
r 替换光标处的一个字符
R 从光标处开始往后连续替换
cc 替换光标所在行
c$ 替换光标处到该行行尾
c^ 替换光标处到该行行首
cG 替换从光标行到行尾
cnG 替换从光标行到第n行(包含n行)
2.1.6 可视块操作:
按键 按键功能
u 撤销(返回上一步)
ctrl+r 重做,与u操作相反
ctrl+v 对可视化块进行批量操作
ctrl+v,选取区块,x 批量删除
ctrl+v,选取区块,shift+i,输入内容,Esc 批量编辑
2.2 命令模式
2.2.1 文件的保存和退出:
按键 按键功能
:w 保存
:q 退出
:wq 保存并退出
:x 保存并退出
:wq! 强制保存并退出
:q! 不保存并退出
2.2.2 显示文件名称,切换文件:

:args,显示该文件的名称

2.2.3 编辑某文件时,新打开1.txt:

:e 1.txt

2.2.4 将正在操作的文件另存为~/2.txt:

:saveas ~/2.txt

2.2.5 切分窗口
按键 按键功能
:split 上下分屏
:nsplit 1.txt 打开一个高度为3的窗口,并打开1.txt
:vsplit 左右分屏

可以利用ctrl+w将光标在各窗口之间进行切换

:qa! 或 :qa ,可退出所有窗口。

2.2.6 字符串替换
按键 按键功能
:%s/old_string/new_string 全局替换
: s /old_string/new_string 替换光标所在行
: n, $s /old_string/new_string 替换第 n行开始到最后一行中的第一个old_string
: n,$s /old_string/new_string/g 替换第n行开始到最后一行的所有old_string
2.2.7 跳转到某一行

:n,跳转到第n行

2.2.8 设置选项

:set,设置选项

:set nonu,不显示行号

:set nu,显示行号

具体设置情况,可在~/.vimrc文件中进行查看和设置,从而使配置永久生效。

2.3 插入模式
按键 按键功能
i 在光标前插入
I 在光标所在行的行首插入
a 在光标后插入
A 在光标所在行的行尾追加
o 在光标所在位置的下一行打开新行插入
O 在光标所在位置的上一行打开新行插入
2.4 可视模式
按键 按键功能
v 每次选择一个字符
V 每次选择一行
ctrl+v 批量编辑,详见2.1.6
gv 重选上一次的高亮区
选中后,按下d 删除所选中部分
选中后,按下D 删除所选中部分所在的行
选中后,按下v 复制选中的部分
选中后,按下V 复制所选中部分的所在行
选中后,按下c或C 删除所选中部分(选中部分所在行),并切换到输入模式
选中后,按下J 将选中部分合并为一行
选中后,按下r 将选中的部分的每个字符替换为新字符
3.其他技巧
3.1 操作技巧
按键 按键功能
普通模式下ctrl+z 将编辑的文档挂起
普通模式下 /search_string 在文档中查找某些字符串,n向下查找,N向上查找

文档挂起后:在终端输入jobs,可以查看所有挂起的文档;在终端输入fg %n,可以进入某个挂起的文档进行编辑;在终端输入fg,可以快速进入最后一个标记挂起(前面有+)的文档中。

3.2 提升技巧
3.2.1 内置的训练模式

在终端输入 vimtutor(英文模式) 或vim zh(汉化模式)

3.2.2 其他

可以在终端中,可以输入man vim ,查看在线手册。

3.3 常用命令举例
#3显示行号和不显示行号
set nu
set nonu
#取消高亮显示
:nohl
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41780234/article/details/123168703

智能推荐

什么是大端存储和小端存储-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏5次。详细了解大端和小端的存储_大端存储和小端存储

【共读】企业信息安全建设与运维指南(一)_信息安全运营服务实施指南研究-程序员宅基地

文章浏览阅读6.3k次,点赞5次,收藏49次。一、从零开始建设企业信息安全系统:企业信息安全体系分为:信息安全技术体系和信息安全管理体系 信息安全技术体系: 两个层面: 1.需建设安全相关基础设施和系统,以具备解决相关安全问题的能力。 2.需具备安全运营能力,只有正确部署和使用设备,才能真正保障信息安全。 信息安全管理体系: 两个层面: 1.具备信息安全相关的制度、规范、流程及策略。 2.具..._信息安全运营服务实施指南研究

python遍历文件夹轻松拷贝所有固定格式的文件_python遍历所有文件复制指定文件?tn=02003390_71_hao_pg-程序员宅基地

文章浏览阅读455次。import osimport shutil def select_file(dir, dir_out): # dir为查询文件路径,dir_out为拷贝路径 if os.path.isfile(dir): if(dir[-4:] == '.bmp' or '.jpg' or 'png'): #拷贝所有以上格式的文件,也可以修改为其他格式 filename = dir.split('\\')[-1] # 提取文件名称 s_python遍历所有文件复制指定文件?tn=02003390_71_hao_pg

Win cuda11+cudnn11网盘下载_win11 cudatookit安装包 百度云-程序员宅基地

文章浏览阅读5.1k次,点赞17次,收藏10次。https://pan.baidu.com/s/1IV_lBCeFFM712xx_iXnhqQ 提取码:0pr5_win11 cudatookit安装包 百度云

springboot集成thymeleaf时css js加载不出来的问题_springboot thymeleaf 不显示css js-程序员宅基地

文章浏览阅读2.1k次。springboot项目的css 和js默认位置是在static中,所以如果没有另外的修改的话,直接创建一个static文件夹,把css和js放入即可。这里放一个实例<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>儿童随访记录表</title> <!-- 引入 echarts.js --> <script src="ht._springboot thymeleaf 不显示css js

用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力_chatgpt + ai 数字人 csdn-程序员宅基地

文章浏览阅读2.1k次。这里还可以选择背景编辑以更换背景,虚拟人物的位置可以调整,都设置完成后,点击播放按钮,即可播放效果。(ps:未导出视频之前,数字人只是静态。)最后点击’合成’按钮,导出视频。_chatgpt + ai 数字人 csdn

随便推点

即时通讯开发平台AnyChat的开发流程及应用_axchat的使用过程-程序员宅基地

文章浏览阅读1.1k次。AnyChat开发流程指南下面列出AnyChatPlatform Core SDK基本开发流程,适用于开发视频会议系统、语音视频聊天系统、远程教育平台以及即时通讯平台(IM)等。 一、初始化该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数、设置SDK组件路径、设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C++): 01.// 打_axchat的使用过程

计算机毕设Python+Vue疫情期间学生作业线上管理系统(程序+LW+部署)_在线作业管理系统测试用例-程序员宅基地

文章浏览阅读190次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。_在线作业管理系统测试用例

Unicode与FFFE(记一个蛋疼的项目)-程序员宅基地

文章浏览阅读758次。好久没更新博客了。近期忙着一个项目, 还要应付各种考试就顾不上博客了。今天遇到了一个蛋疼的问题, 通过BLE4.0与蓝牙外设通信。按照客户给的协议文档发送的数据, 可是外设不能正确识别。折腾了一下午。最后问了客户才知道... 数据头fffe, 他们在外设里面已经做规定了。 所以不须要发送。真是蛋疼。也怪自..._unicode fffe

php初级开发人员面试-程序员宅基地

文章浏览阅读42次。1.表单中get与post提交方法的区别?  get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.而且post提交方式比get提交方式安全。2. 用最少的代码写一个求3值最大值的函数?  function($a,$b,$c){  return $a>$b? ($a>$c? $a : $c) : ($b>$...

Python Anaconda创建虚拟环境及Pycharm使用虚拟环境_anaconda 虚拟环境-程序员宅基地

文章浏览阅读2w次,点赞19次,收藏226次。我们在做开发任务时可能会创建多个项目,这些项目可能会依赖于不同的Python环境。比如有的用到Python3.6、有的用到Python3.7;有的用Pytorch开发、有的用TensorFlow开发。这时我们需要为不同的项目分别提供所需的版本和依赖项放到不同的虚拟环境中,这样可以将各项目所需环境隔离开,让项目之间不会起冲突。_anaconda 虚拟环境

TensorFlow Serving模型转换与部署_tensorflow serving 切换模型-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏23次。文章目录1. TensorFlow Serving安装1.1. 拉取镜像1.2. 下载官方代码1.3. 运行TF Serving1.4. 客户端验证2. 将ckpt模型转换为pb模型3. 模型部署4. 多模型部署4.1 多(单)用户单模型4.2 多(单)用户多模型4.3. 接口请求5. 新增模型6. 可能出现的错误错误1:错误2:错误3:错误4:错误5:错误6:错误7:错误8TensorFlow..._tensorflow serving 切换模型

推荐文章

热门文章

相关标签