在 Linux 上把 Vim 配置为默认编辑器

图片

目录

⛳️推荐

在 Linux 命令行中编辑

将 Vim 设置为其他程序的默认值

在 Alpine 中编辑电子邮件

总结


⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

我使用 Linux 大概有 25 年了,在那之前我还使用了几年的 Unix。在这段时间里,我对一些日常使用的工具形成了偏好。Vim 是我使用的最重要的工具之一。

我在 90 年代初学习 Solaris 时,就开始使用 Vi 了,因为有人告诉我,它在任何系统上都能使用。从我的经验来看,确实是这样。我也试过其他编辑器,它们都能够胜任工作。但是,对于我来说,Vim 的使用效果最好。我经常使用它,以至于形成了肌肉记忆,甚至我在使用其他编辑器时也会下意识地去按 Vim 的快捷键。

另外,我只是单纯地喜欢 Vim 而已。

许多配置文件使用的名字是 Vi 而不是 Vim,你可以运行 vi 命令。不过,vi 命令其实是 vim 命令的一个链接。

许多 Linux 工具使用的编辑器都是在模拟或是直接调用的 Nano、Emacs 或者 Vim。其他的一些工具允许用户(比如那些有着明确偏好的用户)使用他们喜欢的编辑器。举两个对我影响最大的例子,一个是 Bash 命令行,它默认使用 Emacs;另一个是 Alpine 文本模式的邮件客户端,它默认使用 Pico。事实上,Pico 是专门为 Pine 邮件客户端编写的,而 Pine 是 Alpine 的前身。

并非所有使用外部编辑器的程序都是可配置的。有些程序只使用开发者指定的编辑器。对于那些可配置的应用程序,有不同的方法来选择你喜欢的编辑器。

在 Linux 命令行中编辑

除了实际编辑文本文件外,另一个我经常使用,且和编辑密切相关的工具是 Bash shell。Bash 的默认编辑器是 Emacs。虽然我也用过 Emacs,但我肯定更喜欢 Vim。所以很多年前,我把 Bash 命令行的默认编辑器从 Emacs 换成了 Vim,这对我来说更舒服。

有很多种方法可以配置 Bash。你可以使用一个本地配置文件,比如 /home/yourhomedirectory/.bashrc,它只对你的用户账户进行默认修改,而不对同一系统的其他用户进行修改。我个人倾向于让这些改变成为全局性的,基本上就是我的个人账户和 root。如果你也想全局配置,你可以创建你自己的配置文件,并把它放在 /etc/profile.d 目录中。

我在 /etc/profile.d 中添加了一个名为 myBashConfig.sh 的文件。/etc/profile.d 目录中存放了所有已安装的 shell 的启动文件。在启动终端会话时,每个 shell 仅会根据文件名的扩展名,读取为其准备的启动文件。例如,Bash shell 只读取扩展名为 .sh 的文件。

<截断>alias vim='vim -c "colorscheme desert" '# 把 vi 设置为 Bash 的默认编辑器set -o vi# 为所有检查 $EDITOR 变量的程序设置默认编辑器为 viEDITOR=vi<截断>

在这个全局 Bash 配置文件段中,set -o vi将 Vi 设置为默认编辑器。这个 set 命令中的 -o 选项将 vi 定义为编辑器。为使配置生效,你需要关闭所有正在运行的 Bash 会话,并打开新的会话。

现在,你现在可以使用所有你熟悉的 Vim 命令,包括光标移动。只要按下 Esc 键就可以进入 Vim 编辑模式。我特别喜欢多次使用 b 将光标移回多个字的功能。

将 Vim 设置为其他程序的默认值

一些 Linux 命令行工具和程序会检查 $EDITOR 环境变量来决定使用哪个编辑器。你可以用下面的命令检查这个变量的当前值。我在一个新安装的虚拟机上运行过该命令,以查看默认的编辑器到底是什么。

# echo $EDITOR/usr/bin/nano#

默认情况下,检查 $EDITOR 环境变量的 Fedora 程序会使用 Nano 编辑器。在 myBashConfig.sh 中添加一行 EDITOR=vi(如上面的片段所示),可以将默认值改为 Vi(Vim)编辑器。然而,不是所有使用外部编辑器的命令行程序都会检查这个环境变量。

在 Alpine 中编辑电子邮件

几周前,我认为 Pico 不太适合作为我的电子邮件编辑器。我可以使用它,而且在从 Thunderbird 转到 Alpine之后的一段时间内我也用了一段时间。但我发现,Pico 妨碍了我,我总是习惯使用 Vim 按键序列,这影响了我的工作效率。

我在 Alpine 的用户帮助中看到,默认编辑器是可以修改的。我决定把它改成 Vim。实际上这很容易做到。

在 Alpine 主菜单上,按 S 键进入设置,然后按 C 键进行配置。在 “编辑器设置(Composer Preferences)” 部分,按 X 选择 “启用外部编辑器命令(Enable Alternate Editor Command)” 和 “隐式启用外部编辑器(Enable Alternate Editor Implicitly)” 项目。在往下滚动几页的 “高级用户设置(Advanced User Preferences)” 部分,找到 `Editor 那一行。如果它还没有被修改的话,它应该是这样的:

Editor    = <No Value Set>

用光标栏突出显示 Editor 这一行,然后按回车键来编辑。将 <No Value Set> 改为 vim,再按回车键,然后按 E 键退出,最后按 Y 键保存修改。

要用 Vim 编辑电子邮件,只需进入电子邮件正文,Vim 就会自动启动,就像 Pico 那样。所有我喜欢的编辑功能都还在,因为它实际上是在使用 Vim。甚至退出 Vim 的 Esc :wq 序列也是一样的。

总结

与其他编辑器相比,我更喜欢 Vim,对我的系统进行的这些改动后,那些默认使用其他编辑器的应用程序,将使用 Vim 来替代它们的默认编辑器。有些程序使用 $EDITOR 环境变量,因此你只需要做一次修改就够了。其他有用户配置选项的程序,如 Alpine,则必须为每个程序单独设置。

这种可以选择你喜欢的外部编辑器的能力,非常符合 Unix 哲学的宗旨:“每个程序都只做一件事,而且要做得出色”。既然已经有几个优秀的编辑器,为什么还要再写一个呢?而且它也符合 Linux 哲学的宗旨:“使用你最喜欢的编辑器”。

当然,你可以把你的默认文本编辑器改为 Nano、Pico、Emacs 或任何其他你喜欢的编辑器。

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

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

相关文章

NTP授时服务器(GPS授时器)在DCS系统应用

NTP授时服务器&#xff08;GPS授时器&#xff09;在DCS系统应用 前言 随着计算机和网络通信技术的飞速发展&#xff0c;各行业自动化系统数字化、网络化的时代已经到来。这一方面为各控制和信息系统之间的数据交换、分析和应用提供了更好的平台、另一方面对各种实时和历史数据…

【MHA】MySQL高可用MHA介绍7-常见问题

目录 常见问题解答 支持哪些 MySQL 版本&#xff1f; 支持哪些操作系统&#xff1f; MHA 可靠吗&#xff1f; 是否提供 MHA 的商业支持&#xff1f; 是否支持基于行的二进制日志格式&#xff1f; 在云环境中是否工作&#xff1f; 是否有其他解决方案可以完成与 MHA 相同…

Golang实现一个批量自动化执行树莓派指令的软件(1)文本加密配置命令行交互实现

简介 实现一个在配置文件设置信息&#xff0c;一运行就可以自动执行设定指令的软件。 这次实现的是 &#xff1a; 1. 加密解密模块&#xff0c; 用于加密密码&#xff0c; 在配置时配置已加密的密码就可以&#xff1b; 2. 需要配置&#xff0c;自然也就有配置文件的序列化反序列…

Unity读书系列《Unity3D游戏开发》——脚本(一)

文章目录 前言一、脚本模版及其拓展1、脚本模版2、拓展脚本模版 二、脚本的生命周期三、脚本的执行顺序四、脚本序列化1、序列化数据2、serializedObject3、监听部分元素修改事件 五、定时器与间隔定时器六、工作线程&#xff08;多线程&#xff09;总结 前言 脚本在Unity的重…

【信安评估】2024年全国职业院校技能大赛高职组“信息安全管理与评估”安徽省选拔赛赛项规程

培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;624032112 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 移动应用开发群&#xff1a;548238632 极安云科专注于技能提升&#xff0c;赋能 2024年广东省高校的技…

ChatGPT API - 笔记

1 新手如何用Python玩转ChatGPT API,详细讲解 新手如何用Python玩转ChatGPT API,详细讲解-Django社区,Django中文网,django教程,Django! import time import requestsOPENAI_API_KEY = "****" proxy = "127.0.0.1:7890" # 你需要添加你的代理,懂得都…

Centos的一些基础命令

CentOS是一个基于开源代码构建的免费Linux发行版&#xff0c;它由Red Hat Enterprise Linux (RHEL) 的源代码重新编译而成。由于 CentOS是基于RHEL构建的&#xff0c;因此它与RHEL具有非常类似的特性和功能&#xff0c;包括稳定性、安全性和可靠性。并且大部分的 Linux 命令在C…

sqlplus / as sysdba登陆失败,(ORA-01017)

周一上班检查alert log&#xff0c;看到某个库报出大量的错误 提示无法连接到ASM实例&#xff0c;这是某知名MES厂商DBA创建的11G RAC刚刚​转交到我手上的&#xff0c;这又是给我挖了什么坑&#xff1f; 报错为ORA-01017​用户名密码不对&#xff1f;​what&#xff1f; 登陆o…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型.检索增强的大语言模型输入优化策略.指令微调策略.预训练策略.总结应用建议未来方向大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径上具…

在Mac M1笔记本上跑大语言模型llama3的4个步骤?(install、pull、run、ask)

要点 Ollama一个功能强大的本地大语言模型LLM运行工具&#xff0c;支持很多模型&#xff0c;并且操作极其简单快速回忆步骤&#xff1a; 下载ollama工具&#xff1a;https://ollama.com/download 下载模型&#xff1a;ollama pull llama3 #根据libs列表直接指定名字 运行模型…

HttpURLConnection 接收长字符串时出现中文乱码出现问号��

HttpURLConnection 接收长字符串的时候随机位置出现中文乱码&#xff0c;显示问号&#xff0c;究其原因是utf8解码长度问题&#xff0c;程序上写法需要注意&#xff0c;要把字节全部读进来一起转码&#xff0c;不能边读取边转码&#xff0c;会截断中文的字节码&#xff0c;导致…

卡巴斯基plus(kaspersky plus) 21.16主界面出不来

请选择下载x86版本的dotnet 6.0 x86版本的dotnet 6.0 https://download.visualstudio.microsoft.com/download/pr/4aded178-a52a-4fcc-a779-59bb444df048/67924e3556a3a69da09528bd74dca9ef/dotnet-sdk-6.0.421-win-x86.exe

企业微信hook接口协议,ipad协议http,发送大视频文件

发送大视频文件 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信send_userid是long要发送的人或群idisRoom是bool是否是群消息 请求示例 {"uuid":"1688853790xxx", //uuid 默认随机生成如果初始化传了id则用初始…

软考-论文写作-论架构风格论文

题目 素材 框架 一、 摘要 2020年12月,我参加了某省政协委员履职系统的开发。该系统为政协机关人员线上开展各项工作以及委员完成各项履职提供了全方位的软件支撑。我在该项目重担任系统架构师一职,负责履职系统的架构设计。本文结合实践,以委员履职系统为例,主要讨论软件…

12.6.1 实验5:IOS恢复

1、实验目的 通过本实验可以掌握&#xff1a; copy方式恢复IOS的步骤。TFTPDNLD方式恢复IOS的步骤。Xmodem方式恢复IOS的步骤。 2、实验拓扑 路由器IOS恢复的实验拓扑如下图所示。 3、实验步骤 如果工作中不慎误删除路由器IOS&#xff0c;或者升级了错误版本的IOS&#xff…

密码学系列0-总述

通过这一系列文章&#xff0c;帮助读者能快速入门密码学安全性证明。 这一系列文章主要包括以下内容&#xff1a; 1.可证明安全的概念 2.密码学常用困难性问题&#xff1a;CDH,DDH,DLP,BDH等。然后讨论问非对称&#xff0c;对称双线性配对上困难性问题。讨论为什么对称双线性DD…

问答机器人学习资料

longchain 5 分钟内搭建一个免费问答机器人&#xff1a;Milvus LangChain-腾讯云开发者社区-腾讯云 chatglm大模型 基于本地知识的问答机器人langchain-ChatGLM 大语言模型实现方法详解_python_脚本之家 探索QRobot&#xff1a;智能对话与聊天机器人的开源奇缘-CSDN博客 如何…

推荐一个带java环境的tomcat镜像,使用jdk 1.8.0_312

镜像名称和版本&#xff1a;tomcat:10.0-jdk8拉取命令&#xff1a;docker pull tomcat:10.0-jdk8镜像tar包&#xff08;百度网盘&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1TM8k7Z97NYhahCrrTh3vBw?pwdrq93 提取码&#xff1a;rq93docker启动命令&am…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

制作一个RISC-V的操作系统十三-抢占式多任务和兼容协作式多任务

文章目录 强占式多任务流程代码具体流程兼容协作式多任务&#xff08;软中断&#xff09;寄存器 msip流程代码结果 强占式多任务 流程 抢占式多任务由计时器中断触发&#xff0c;最后在处理程序中切换到下一个进程 代码具体流程 上下文中增加pc寄存器 寄存器保留上下文和切…