Linux Vim教程(六):文件操作与保存

目录

1. 打开与关闭文件

1.1 打开文件

1.2 关闭文件

1.3 保存文件

2. 创建和删除文件

2.1 创建新文件

2.2 删除文件

3. 文件浏览与导航

3.1 切换文件

3.2 文件列表

4. 文件保存技巧

4.1 强制保存

4.2 保存为新文件

4.3 自动保存

5. 文件操作的高级技巧

5.1 分割窗口

5.2 关闭分割窗口

5.3 标签页

6. 实用技巧

6.1 查找和替换

6.2 批量保存

6.3 文件加密

6.4 删除行和字符

6.5 撤销和重做

7. 示例

7.1 在.vimrc中设置常用配置

7.2 文件操作的脚本

7.3 批量查找和替换

8. Vim插件推荐

8.1 NERDTree

8.2 CtrlP

8.3 vim-airline

9. 高级配置与自定义

9.1 自定义快捷键

9.2 自动命令

9.3 多缓冲区管理

9.4 会话管理

10. 实战案例

10.1 项目文件管理

10.2 批量文件操作

11. 总结


Vim是Linux系统中的一个功能强大的文本编辑器。尽管它在初次接触时可能显得有些复杂,但一旦掌握了其基本操作,Vim将成为你不可或缺的开发工具。在这篇文章中,我们将深入探讨Vim中的文件操作与保存技巧,帮助你在日常工作中更加高效地使用Vim。

1. 打开与关闭文件

1.1 打开文件

在Vim中打开文件的基本命令是vim <filename>。例如,要打开一个名为example.txt的文件,可以在命令行中输入:

vim example.txt

如果文件不存在,Vim会创建一个新的空文件。

1.2 关闭文件

关闭文件并退出Vim的命令是:q。在普通模式下,输入:q并按回车键即可。如果文件有未保存的更改,Vim会提示你保存更改。如果你想强制退出而不保存更改,可以使用:q!

:q
:q!

1.3 保存文件

保存文件的命令是:w。在普通模式下,输入:w并按回车键即可保存当前文件。如果你想保存并退出,可以使用:wq:x

:w
:wq
:x

2. 创建和删除文件

2.1 创建新文件

在Vim中创建新文件与打开文件的命令是一样的。如果文件不存在,Vim会自动创建。例如:

vim newfile.txt

2.2 删除文件

在Vim中删除文件需要先退出Vim,然后使用Linux系统的rm命令。例如,要删除一个名为example.txt的文件,可以在命令行中输入:

rm example.txt

3. 文件浏览与导航

3.1 切换文件

在Vim中,可以同时打开多个文件并在它们之间切换。要在当前窗口中打开一个新文件,可以使用:e <filename>命令。例如:

:e anotherfile.txt

要在已经打开的文件之间切换,可以使用:bnext:bprev命令。

:bnext
:bprev

3.2 文件列表

要查看当前打开的文件列表,可以使用:ls命令。这个命令会显示所有已打开的文件及其编号。

:ls

4. 文件保存技巧

4.1 强制保存

如果文件是只读的,但你想强制保存更改,可以使用:w!命令。例如:

:w!

4.2 保存为新文件

要将当前文件保存为另一个文件,可以使用:w <newfilename>命令。例如:

:w newfile.txt

4.3 自动保存

你可以在Vim配置文件中设置自动保存功能。在你的.vimrc文件中添加以下内容:

autocmd InsertLeave,TextChanged * silent! wall

这条命令会在你离开插入模式或文本更改时自动保存所有打开的文件。

5. 文件操作的高级技巧

5.1 分割窗口

Vim允许你在同一个窗口中分割显示多个文件。要水平分割窗口并打开一个新文件,可以使用:split <filename>命令。例如:

:split anotherfile.txt

要垂直分割窗口,可以使用:vsplit <filename>命令。

:vsplit anotherfile.txt

5.2 关闭分割窗口

要关闭当前分割窗口,可以使用:q命令。如果你想关闭所有其他分割窗口,只保留当前窗口,可以使用:only命令。

:q
:only

5.3 标签页

Vim支持标签页功能,可以在不同标签页中打开多个文件。要打开一个新标签页,可以使用:tabnew <filename>命令。例如:

:tabnew anotherfile.txt

要在标签页之间切换,可以使用gt命令。

gt

6. 实用技巧

6.1 查找和替换

在Vim中,可以使用/命令进行查找。例如,要查找单词“example”,可以输入:

/example

要进行替换,可以使用:%s/old/new/g命令。例如,要将所有“old”替换为“new”,可以输入:

:%s/old/new/g

6.2 批量保存

如果你同时打开了多个文件,并且希望一次性保存所有文件,可以使用:wa命令。

:wa

6.3 文件加密

Vim允许你加密文件以保护内容。要加密文件,可以使用:X命令,并输入加密密码。例如:

:X

6.4 删除行和字符

删除当前行的命令是dd。要删除当前行并进入插入模式,可以使用cc命令。

dd
cc

要删除一个字符,可以使用x命令。如果要删除多个字符,可以在x命令前添加一个数字,例如删除5个字符:

5x

6.5 撤销和重做

撤销上一步操作的命令是u,重做撤销操作的命令是Ctrl-R

u
Ctrl-R

7. 示例

以下是一些Vim配置和操作的代码示例:

7.1 在.vimrc中设置常用配置

" 设置行号显示
set number" 开启语法高亮
syntax on" 自动缩进
set autoindent
set smartindent" 设置缩进为4个空格
set tabstop=4
set shiftwidth=4
set expandtab" 设置文件编码
set encoding=utf-8" 开启自动保存
autocmd InsertLeave,TextChanged * silent! wall

7.2 文件操作的脚本

#!/bin/bash
# 打开文件并编辑
vim example.txt# 强制保存并退出
vim -c ':wq!' example.txt# 在分割窗口中打开多个文件
vim -O file1.txt file2.txt# 使用标签页管理文件
vim -p file1.txt file2.txt

7.3 批量查找和替换

" 查找并替换当前文件中的所有"foo"为"bar"
:%s/foo/bar/g" 查找并替换所有打开的文件中的所有"foo"为"bar"
:argdo %s/foo/bar/gc | update

8. Vim插件推荐

为了更好地进行文件操作与保存,安装一些插件会大大提升Vim的功能和使用体验。以下是几个推荐的Vim插件:

8.1 NERDTree

NERDTree是一个文件系统浏览器插件,可以让你在Vim中方便地浏览和管理文件。

安装方法:

Plug 'preservim/nerdtree'

使用方法:

:NERDTreeToggle

8.2 CtrlP

CtrlP是一个模糊文件查找插件,可以快速找到并打开文件。

安装方法:

Plug 'kien/ctrlp.vim'

使用方法:

CtrlP

8.3 vim-airline

vim-airline是一个状态栏增强插件,可以让你的Vim状态栏更加美观和实用。

安装方法:

Plug 'vim-airline/vim-airline'

9. 高级配置与自定义

9.1 自定义快捷键

Vim允许你自定义快捷键以提高编辑效率。你可以在.vimrc文件中添加以下内容:

" 将:wq映射为快捷键<leader>w
nnoremap <leader>w :wq<CR>" 将:q!映射为快捷键<leader>q
nnoremap <leader>q :q!<CR>

9.2 自动命令

Vim的自动命令功能可以在特定事件发生时自动执行某些命令。例如,你可以在每次打开一个新的Python文件时自动设置缩进:

autocmd FileType python setlocal expandtab tabstop=4 shiftwidth=4

9.3 多缓冲区管理

Vim的多缓冲区功能允许你在同一个Vim实例中编辑多个文件。以下是一些多缓冲区管理的基本命令:

" 打开新缓冲区
:enew" 切换到下一个缓冲区
:bn" 切换到上一个缓冲区
:bp" 删除当前缓冲区
:bd

9.4 会话管理

Vim的会话管理功能允许你保存和恢复编辑会话。要保存当前会话,可以使用:mksession命令:

:mksession! mysession.vim

要恢复会话,可以使用:source命令:

:source mysession.vim

10. 实战案例

10.1 项目文件管理

在实际项目中,文件管理是非常重要的。以下是一个使用Vim进行项目文件管理的示例:

# 创建项目目录
mkdir myproject
cd myproject# 使用Vim创建并编辑文件
vim main.py# 在分割窗口中打开多个文件
vim -O main.py utils.py# 在标签页中管理文件
vim -p main.py utils.py README.md

10.2 批量文件操作

在实际项目中,你可能需要对多个文件进行批量操作。以下是一个使用Vim进行批量文件操作的示例:

" 查找并替换所有Python文件中的"foo"为"bar"
:args **/*.py
:argdo %s/foo/bar/gc | update" 批量保存所有打开的文件
:wa

11. 总结

通过掌握Vim中的文件操作与保存技巧,你可以大大提高在Linux环境中的工作效率。本文介绍了从基本的打开和关闭文件,到高级的分割窗口和标签页管理,再到实用的查找和替换、批量保存等技巧。希望这些内容能帮助你更好地理解和使用Vim,为你的开发工作带来便利。如果你刚开始学习Vim,不妨从这些基本操作开始,逐步深入,掌握更多高级功能。

随着时间的推移,你会发现Vim的强大功能和灵活性能够极大地提高你的工作效率和代码质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防火墙限制docker了

今天有个安全方面的需求&#xff0c;演示环境禁止将3306等高危端口暴露到外网。 于是同事开启了防火墙&#xff0c;仅将应用端口暴露。结果导致演示环境无法使用。 由于公司的应用是基于docker部署的。结果他问我为什么同一台机器&#xff0c;应用无法访问mysql。 docker对于…

ELK Stack入门之部署EFK架构

前言&#xff1a; 日志分析对于现代IT系统来说至关重要&#xff0c;它可以帮助组织机构理解和优化其业务和技术基础设施。以下是日志分析的一些重要性方面&#xff1a; 问题诊断与故障排除&#xff1a; 当系统发生故障或出现异常时&#xff0c;通过对相关日志进行分析&#xf…

SQL labs-SQL注入(五,使用sqlmap进行cookie注入)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 引言&#xff1a; Cookie 是一些数据, 存储于你电脑上的文本文件中。当 web 服务器向浏览器发送 web 页面时&#xff0c;在连接关闭后&#xff0c;服务端不会记录用户的信息。Cookie…

第十一章 数据结构

第十一章 数据结构 11.1 数组 数组是元素的顺序集合&#xff0c;通常这些元素具有相同的数据类型 索引表示元素在数组中的顺序号&#xff0c;顺序号从数组开始处计数 数组元素通过索引被独立给出了地址&#xff0c;数组整体上有一个名称&#xff0c;但每个元素利用数组的的…

elasticsearch 解决全模糊匹配最佳实践

事件背景&#xff1a; 某 CRM 系统&#xff0c;定义了如下两个表&#xff1a; 客户表 t_custom 字段名 类型 描述 idlong自增主键phonestring客户手机......... 客户产品关系表 t_custom_product 字段名 类型 描述 idlong自增主键custom_idlong客户idproduct_idlong产品…

【buildroot系统中qt显示屏触摸方向更改】

buildroot系统和qt的显示触摸不一致&#xff0c;qt程序出现显示触摸上下颠倒问题 操作全部在启动qt程序之前设置系统显示配置 操作全部在启动qt程序之前设置系统显示配置 我的设备是上电自启动我的qt程序&#xff0c;所以为了方便我全部在调用我的qt程序位置处修改vi /etc/ini…

vue如何适应多个页面不同的布局

在 Vue.js 中&#xff0c;要适应多个页面不同的布局&#xff0c;你可以采用以下几种方法&#xff1a; 使用动态组件 (Dynamic Components)&#xff1a; 通过使用 Vue 的动态组件&#xff0c;可以在同一个页面中根据路由动态加载不同的布局组件。 <template><component…

笔记本检测工具 | 爱回收笔记本质检系统 v1.9.6

软件简介 爱回收笔记本质检系统是一款专为笔记本电脑硬件检测而设计的软件。它以其快速的检测速度、简便的操作流程和直观的检测结果&#xff0c;为用户提供了一种高效、易懂的硬件检测解决方案。 这款软件不仅适用于对电脑硬件有一定了解的用户&#xff0c;也特别适合对硬件…

SQL进阶:解锁高级特性,深化数据洞察

掌握了SQL的基础知识后&#xff0c;进一步探索其高级特性将帮助您更高效地处理复杂数据&#xff0c;深化数据分析的广度和深度。本文将带您领略SQL的高级功能&#xff0c;包括窗口函数、存储过程、触发器以及高级查询技巧等&#xff0c;让您在数据处理的道路上更进一步。 一、…

C#使用csvhelper实现csv的操作

新建控制台项目 安装csvhelper 33.0.1 写入csv 新建Foo.cs namespace CsvSut02;public class Foo {public int Id { get; set; }public string Name { get; set; } }批量写入 using System.Globalization; using CsvHelper; using CsvHelper.Configuration;namespace Csv…

如何为WordPress网站设置多语言站点

随着全球化的发展&#xff0c;拥有一个支持多语言的站点已成为提升用户体验、扩大受众范围的重要手段。本文将详细介绍如何为WordPress网站设置多语言站点&#xff0c;提供两种最佳方案详解&#xff0c;帮助您轻松实现多语言站点的搭建与管理。无论您是选择在同一站点内发布多语…

FastGPT 知识库搜索测试功能解析(一)

本文以 FastGPT 知识库的搜索测试功能为入口,分析 FastGPT 的知识检索流程。 一、搜索功能介绍 1.1 整体介绍 搜索测试功能包含三种类型:语义检索、全文检索、混合检索。 语义检索:使用向量进行文本相关性查询,即调用向量数据库根据向量的相似性检索; 全文检索:使用…

我在Vscode学Java集合类

Java集合类 一、集合1.1 集合和数组之间的对比1.2 集合框架的核心接口1.3 集合框架中的实现类单列集合双列集合 1.4 集合框架的特点 二、 Collection集合与Iterator迭代器2.1 Collection的概述2.1.1 常用方法增加元素的方法修改元素的方法删除元素的方法查询元素的方法遍历集合…

docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”

1.采用新的镜像地址 npm config set registry https://registry.npmmirror.com2.清理缓存 npm cache clean --force3.安装yarn npm install -g yarn4. 安装模块 在node_modules 同级目录执行下面命令&#xff1a; yarn add napi-build-utils env-paths express ejs cors …

Node.js基础【学习笔记】

一、命令行窗口、CMD窗口、终端、shell 1、打开命令行窗口 #mermaid-svg-S0niOoYZi1WPuV9Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-S0niOoYZi1WPuV9Y .error-icon{fill:#552222;}#mermaid-svg-S0niOoYZi1WP…

LLMs之Agent:Agentscope的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent&#xff1a;Agentscope的简介、安装和使用方法、案例应用之详细攻略 目录 Agentscope的简介 1、更新的日志 2、支持的模型API 3、支持的服务 Agentscope的安装和使用方法 1、安装 支持的本地模型部署 从源码安装 使用pip 配置 创建Agent 构造对话 Age…

Android Release模式下无法运行一例解决方法

报错 FATAL EXCEPTION: main Process: com.tools.xxxxx, PID: 10746 androidx.fragment.app.u: Subscriber class com.tools.xxxxx.ui.HomePageFragment and its super classes have no public methods with the Subscribe annotation at j4.d.i(Unknown Source:371) 由于我使…

Go语言编程 学习笔记整理 第2章 顺序编程 后半部分

1.流程控制 1.1 条件语句 if a < 5 { return 0 } else { return 1 } 注意&#xff1a;在有返回值的函数中&#xff0c;不允许将“最终的”return语句包含在if...else...结构中&#xff0c; 否则会编译失败&#xff01;&#xff01;&#xff01; func example(x int) i…

如何从Excel读取数据并调用BAPI来批量创建销售订单

准备Excel模板&#xff1a; 确保Excel模板中的列与BAPI BAPI_SALESORDER_CREATEFROMDAT2 所需的字段相对应。每个订单的数据应按照BAPI的要求格式排列&#xff0c;可能需要包括订单头信息和订单行项目信息。 读取Excel数据&#xff1a; 使用ABAP程序或其他支持的编程语言读取E…

阿里云ECS(CentOS镜像)安装docker-方法2(三条命令完成安装)

目录 1.更新系统 2.安装 EPEL 存储库 3.安装docker 4.启动 Docker 服务 5.验证安装 6.设置开机自启动 1.更新系统 sudo yum update 2.安装 EPEL 存储库 sudo yum install epel-release 3.安装docker sudo yum install docker 4.启动 Docker 服务 补充&#xff1a;…