vimrc基本配置

news/2025/4/1 17:11:47/文章来源:https://www.cnblogs.com/yingchi/p/18800548

.vimrc是什么

.vimrc是Vim配置文件配置,Vim显示行号、支持utf8中文不乱码、突出显示Vim当前行,设置高亮显示括号匹配和tab缩进,解决Vim粘贴时多出缩进和空格问题

.vimrc配置文件分系统配置和用户配置两种

  • 系统vimrc配置文件存放在Vim的安装目录,默认路径为/usr/share/vim/vim74/vimrc_example.vim,其中 74 是版本号(不同系统版本可能存在差异)
  • 用户vimrc文件,存放在用户主目录下~/.vimrc。可以使用命令echo $HOME确定用户主目录。
  • 注意:用户配置文件优先于系统配置文件,Vim启动时会优先读取当前用户根目录下的.vimrc文件。所以与个人用户相关的个性化配置一般都放在~/.vimrc中

Vim基本配置

如果想自己配置,可以先将安装vim后现成的配置拷贝到用户目录下,具体命令:(注意,cp之后会导致xshell鼠标右键无法插入和选择复制,需设置 set mouse=(空的)鼠标才能右键复制)

yum install vim 
cp ~/.vimrc ~/.vimrc_bak 
cp /usr/share/vim/vim74/vimrc_example.vim ~/.vimrc  

如上,语法高亮、代码缩进 这些喜闻乐见的特性,立刻就自动生效

基本的Vim配置选项

自己添加只要加在配置文件最后的endif之前就好,要注意的是,配置乱了的话可能会影响自己的使用习惯,所以还是那句话,这个配置适合自己的才是最好的

支持中文不乱码

#设置编码 
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 
set termencoding=utf-8 
set encoding=utf-8  

与Vim编码有关的变量包括:encoding、fileencoding、termencoding。

  • encoding选项用于缓存的文本、寄存器、Vim 脚本文件等;
  • fileencoding选项是Vim写入文件时采用的编码类型;
  • termencoding选项表示输出到终端时采用的编码类型。

显示行号

#显示行号 
set nu 
set number  

nu是number的缩写,所以上面两个配置命令是完全等效的。

突出显示当前行

set cursorline 
set cul          #cursorline的缩写形式  

突出显示当前列

set cursorcolumn 
set cuc         #cursorcolumn的缩写形式  

启用鼠标

#set mouse的详细解释如下,留空可以不影响原本的鼠标右键操作 
set mouse=a 
set selection=exclusive 
set selectmode=mouse,key  
The mouse can be enabled for different modes:                               
n            Normal mode                               
v            Visual mode                               
i            Insert mode                              
c            Command-line mode                               
h            all previous modes when editing a help file                               
a            all previous modes                               
r            for |hit-enter| and |more-prompt| prompt Normally you would enable the mouse in all four modes with:                               
:set mouse=a 
When the mouse is not enabled, the GUI will still use the mousefor modeless selection.  This doesn't move the textcursor.   

Vim编辑器里默认是不启用鼠标的,也就是说不管你鼠标点击哪个位置,光标都不会移动。通过以上设置就可以启动鼠标,不过对于高级玩家来说,用Vim就是为了解放双方不用鼠标,所以这个设置可以根据个人爱好选择。

显示括号匹配

set showmatch  

设置缩进

#设置Tab长度为4空格 
set tabstop=4 
#设置自动缩进长度为4空格 
set shiftwidth=4 
#继承前一行的缩进方式,适用于多行注释 
set autoindent  

Vim缩进还有更多的设置,大家可以再自行上网查找,这里不做过多叙述。

设置粘贴模式

set paste  

在Vim中通过鼠标右键粘贴时会在行首多出许多缩进和空格,通过set paste可以在插入模式下粘贴内容时不会有任何格式变形、胡乱缩进等问题。

显示空格和tab键

set list 
set listchars=tab:>-,trail:-  

Vim编辑器中默认不显示文件中的tab和空格符,通过上面的配置可以获得以下的显示效果,方便定位输入错误。

显示状态栏和光标当前位置

#总是显示状态栏 
set laststatus=2 
#显示光标当前位置 
set ruler  

打开文件类型检测

filetype plugin indent on 

一份vimrc文件仅供参考

#设置编码 
set encoding=utf-8 
#语法高亮 syntax on 
#设置ruler会在右下角显示光标所在的行号和列号,不方便查看,改成设置状态栏显示内容 set ruler 
#设置状态行显示的内容. %F: 显示当前文件的完整路径. %r: 如果readonly,会显示[RO] 
#%B: 显示光标下字符的编码值,十六进制. %l:光标所在的行号. %v:光标所在的虚拟列号. 
#%P: 显示当前内容在整个文件中的百分比. %H和%M是strftime()函数的参数,获取时间. 
set statusline=%F%r\ [HEX=%B][%l,%v,%P]\ %{strftime(\#%H:%M\#)} 
#显示行号 
set nu #等同于 set number 
#突出显示当前行 
set cursorline #等同于 set cul 
#突出显示当前列 
set cursorcolumn #等同于 set cuc 
#自动保存 set autowrite 
#隐藏工具栏 
set guioptions-=T 
#隐藏菜单栏 
set guioptions-=m 
#光标立刻跳转到搜索到内容 
set incsearch 
#去掉输入错误时的提示声音 
set noeb 
# 默认按下Esc后,需要等待1秒才生效,设置Esc超时时间为100ms,尽快生效 
set ttimeout set ttimeoutlen=100 
#在处理未保存或只读文件的时候,弹出确认 
set confirm 
#去掉有关vi一致性模式,避免操作习惯上的局限. 
set nocompatible 
# mouse=留空 
set mouse= set selection=exclusive set selectmode=mouse,key 
#高亮显示括号匹配 
set showmatch 
#设置Tab长度为5空格 set tabstop=5 
#设置自动缩进长度为5空格 set shiftwidth=5 
#不要用空格代替制表符 set noexpandtab 
#显示空格和tab键 set listchars=tab:>-,trail:- 
#1=启动显示状态行, 2=总是显示状态行.设置总是显示状态行,方便看到当前文件名 set laststatus=2 
#打开文件类型检测,并载入文件类型插件,为特定文件类型载入相关缩进文 filetype plugin indent on

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

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

相关文章

从 0 到 1 打造代码扫描工具:实战指南与技术解析

在团队协作开发的场景中,代码规范的重要性不言而喻。当团队规模逐渐扩大,如何确保每个人提交的代码都符合规范,比如不能 import *、代码嵌套不能超3层,代码包层级依赖结构约定、 不能修改核心文件等,成为了一个亟待解决的问题。今天,咱们就来聊聊如何开发一个代码扫描工具…

深入解析Java Web开发中的异常处理机制:策略、实践与案例分析

一、引言 1. Java Web开发概述 Java Web开发是基于Java语言构建网络应用程序的过程,它通过Java Servlet、JSP(JavaServer Pages)、Spring MVC等技术,实现动态网页的生成和交互。Java Web应用广泛应用于企业级系统、电子商务平台、在线教育等领域。在这些应用中,用户通过浏…

Java Web开发中的请求与响应机制

一、Java Web开发基础概念 (一)Java Web开发概述 Java Web开发是指使用Java语言及相关技术开发基于Web的应用程序。它主要通过Java Servlet、JSP(JavaServer Pages)、Spring MVC等技术实现客户端与服务器之间的交互。Java Web应用广泛应用于企业级应用、电子商务平台、在线…

GUI猜数字

序言 本文将会介绍“GUI猜数字”这款原创软件的界面、功能、编译等。详见后文~下载地址开始前先晾出下载地址: https://biaozyx.lanzouq.com/i31nk2rcftsj (提取码:guiGN)内容展示 所含文件 GuessNumber.exe(Windows可执行程序) GuessNumber.py(源代码,可用后面教程编译…

Apple Final Cut Pro 11.1 - 专业后期制作 (视频剪辑)

Apple Final Cut Pro 11.1 - 专业后期制作 (视频剪辑)Apple Final Cut Pro 11.1 - 专业后期制作 (视频剪辑) Final Cut Pro 11.1.0 + Compressor 4.10.0 + Motion 5.10.0 请访问原文链接:https://sysin.org/blog/apple-final-cut-pro/ 查看最新版。原创作品,转载请保留出处。…

Adobe Photoshop 2025 v26.5 (macOS, Windows) - 照片和设计软件

Adobe Photoshop 2025 v26.5 (macOS, Windows) - 照片和设计软件Adobe Photoshop 2025 v26.5 (macOS, Windows) - 照片和设计软件 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroo…

VMware Aria Operations 8.18.3 新增功能简介

VMware Aria Operations 8.18.3 新增功能简介VMware Aria Operations 8.18.3 - 多云 IT 运维管理 通过统一的高性能平台,实现跨私有云、混合云和多云环境的 IT 运维管理。 请访问原文链接:https://sysin.org/blog/vmware-aria-operations/ 查看最新版。原创作品,转载请保留出…

CCF的GESP等级考试与CSP-J/S竞赛

CCF的GESP等级考试与CSP-J/S竞赛介绍一、GESP介绍 GESP 即 CCF 编程能力等级认证,由中国计算机学会发起并主办,是为青少年计算机编程学习者提供能力验证的线下平台. 其目的是提升青少年计算机和编程教育培训水平,推广和普及青少年计算机和编程教育,选拔优秀人才. 它的适用年…

【计算机网络】网络排错思路总结

明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。 有了这个技能,如果以后发生领导、妹子电脑上不了网的情况,你上去就是一顿操作,稳稳的~~注意:一般一台电脑有多个网卡。一个是PCI网卡是用于插网线的, 另一个是WireLes…

【计算机网络】CDN内容分发网络

背景本来是为了深入了解 CDN 的,结果发现前置知识:IP、域名、DNS 都还不算特别熟,所以先写了他们 现在终于来聊一聊 CDN 啦 本文素材均出自:https://www.bilibili.com/video/BV12T4y1P7Fh,动画仍然满分如何打开一个网站 前面说过了浏览器访问域名 DNS 负责解析域名,找到域…

关于electron如何获取dropAndDrag的文件全路径

问题 当托放文件到窗口时,React应用无法获取文件的全路径,因为新版本去掉了“path”属性。那么如何在托放文件时,获取全路径呢? 参考链接 https://www.electronjs.org/docs/latest/api/web-utils 使用webUtils 如下图,preload.js里面把webUtils.getPathForFile暴露给渲染进…

Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件

this.$emit()是 Vue.js 中一个很有用的方法,可以帮助子组件向父组件传递事件前言 在Vue中,this.$emit()方法用于触发自定义事件。它是Vue实例的一个方法,可以在组件内部使用。 使用 this.$emit() 方法,可以向父组件发送自定义事件,并传递数据给父组件。父组件可以通过监听这…