vim配置全攻略(2)——vim的简单配置

2023-10-27

这篇文章主要讲的是vim的简单配置,相对于vim内置的一些快捷键和功能,vim的客制化才是vim的灵魂,也是vim存活31年仍被热衷的原因。

如果你还不了解vim的基本操作和体系,我建议你看一下我上一篇文章:
vim配置全攻略(1) —— vim的基本操作

还是建议大家积极评论,如果有什么地方有误,也希望大家斧正。

vim & neovim

在配置vim之前我想说一下vimneovim,相信大多数知道vim的小伙伴都听说或使用过neovim,那今天我就发表一下我对vim和neovim的简介,以及我的选择。

首先无论是vim还是neovim都是一款非常不错的编辑器,他们两款编辑器都有优点,不能说哪个好哪个不好,只能说每个人的需求不同罢了。

如果你经常写C的话,那么vim是你一个不错的选择,因为ta的体系和功能更加完备,用户体系更加庞大;如果你是java架构师或者经常写java程序的话,那么neovim可能对你更加友好(不过我还是建议写java的小伙伴使用IDEA,再不济vscode也是一个不错的选择)。

如今,neovim的出现以及展现出的生机,已经威胁到了vim,使vim的更新又相对频繁起来,我觉得vim成为一个被动的追赶者,去模仿neovim的一些功能,己经证明了ta的"廉颇老矣"。

这个结论不是绝对的,我也不否认vim的强大和neovim的激进。

我现在用的是neovim,因为ta更加迅速,现代化,我的体验更好。

vim的配置

配置文件

首先,我们想要配置vim和neovim,其原理就是在vim和neovim的配置文件中,写如vim支持的相关语法,从而达到想要的效果。

vim和neovim的配置文件位置各不相同:

  • vim:~/.vimrc
  • neovim:~/.config/nvim/init.vim

这是就是vim和neovim配置文件的位置,当然这里声明一下neovim的配置文件也可以是init.lua,但是lua的配置难度更大,需要对neovim有一定了解,所以这里就以.vim为例。

这里补充一下在你安装完neovim之后,你会发现是没有~/.config/nvim这个文件夹的,所以需要你自己创建:

# vim
vim ~/.vimrc

# neovim
mkdir ~/.config/nvim
nvim ~/.config/nvim/init.vim

配置

首先在你打开vim或者neovim之后,你会发现ta们类似windows上的记事本,没有什么特殊之处,很难想象这就是大名鼎鼎的编辑器之神。

行号

代码编辑器和文本编辑器之间最明显的区别就是行号,ta可以帮助我们在报错之后快速的寻找Bug和跳转。在vim和neovim中设置行号的方式有两种:

临时行号

顾名思义,临时行号就是‘一次性’的行号,仅仅只能显示一次,启动方法也很简单,只需要在命令模式中输入set number即可,之后你会发现出现了行号。

永久行号

如果想永久设置行号,只需在配置文件输入set number即可。

这里补充一下,在上一篇文章中,我曾说过可以通过*hjkl 来进行快速移动,然而在对于一些较远的行来说并不友好,所以便出现了一种特殊的行号——相对行号,将set number改为 set relativenumber即可。

这样我们想要跳转到哪一行,只需输入其左侧的数字移动即可。

但是这样也有一个弊端,就是我们无法查看行号了,于是我们就可以set numberset relativenumber一起使用,这样就可以兼得了。​

缩进 & 缩进显示

如果你在使用vim和neovim之后你会发现,ta们的缩进并不标准,所以我们需要调整缩进到我们想要的格数上。

set tabstop=4 
set softtabstop=4 
set shiftwidth=4

这样你就会发现,缩进变为了4格。

然后你会发现另一个缩进问题:在你写东西的时候ta没有办法自动缩进,需要手动的按下Tab键,这并不是一个大问题,但是非常影响心情。

set noexpandtab 
set nu  
set autoindent 
set cindent

这样设置,之后你就会发现ta可以自动缩进了,至于为什么这么设置,我只能说这就是.vim的语法,想记就记下来,不相记复制粘贴也没关系,毕竟谁也不会天天配置vim。

说完了缩进之后,我没来说缩进显示,缩进显示可以让我们明确的看到缩进的次数,对于我们开发非常友好。

set list
set listchars=tab:\|\,trail:·

这样我们就可一看到缩进了,当然在之后的文章中我会推荐一个缩进显示插件,功能会比这个强大一些。

高亮

对于语法高亮,我们可以轻松地阅读,以及分辨这个单词的类型。

syntax on

这样我们就可以看见语法高亮了。

如果你觉得这个高亮不适合你,我们有两种方式更改高亮颜色:一是设置主题,这个我会放到之后和桌面么美化,一起说;二是highlight设置,如:

highlight Function cterm=bold,underline ctermbg=red ctermfg=green

这样就可以设置颜色了,不过还是建议大家安装主题,应为自己美化是没有尽头的。

编码

与Vim编码有关的变量包括:encodingfileencodingtermencoding

  • encoding选项用于缓存的文本、寄存器、Vim 脚本文件等;
  • fileencoding选项是Vim写入文件时采用的编码类型;
  • termencoding选项表示输出到终端时采用的编码类型。
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

突出显示当前行/列

"  突出显示当前行
set cursorline
set cul          'cursorline的缩写形式'

# 突出显示当前列
set cursorcolumn
set cuc          'cursorcolumn的缩写形式'

启用鼠标

set mouse=a
set selection=exclusive
set selectmode=mouse,key

括号匹配

set showmatch

键盘映射

键盘映射是vim中非常重要的一种配置方式,ta可以将一些你不喜欢的快捷键修改为你舒适的键位。
在上一篇文章,我们说过vim有四种模式,所以键位也有四种表示方法对应四种不同的模式:

  • map
  • noremap/nmap
  • imap
  • vmap
  • cmap
  • unmap
  1. mapnmap的效果相似,都是在正常模式识别。
  2. imap是在编辑模式下的键盘映射。
  3. vmap是可视模式下的键盘映射。
  4. cmap是命令模式下的键盘映射。
  5. unmap则是取消某一个映射。

举个例子,如果我们想要在正常模式下将F10设置为清空全部内容:

nmap <F10> :1,$d<CR>

在这里我们可以看出设置键盘映射的格式为:

*map <设置的按键> <你在按下按键后执行的操作>

那么以后在我们按下<F10>后,vim就是将<F10>按键转义为:1,$d: 会进入命令模式 ,并且在后输入1,$d,<CR>为回车即执行。

也可在命令模式中输入map来查看你设置的键盘映射。

在说完了这些之后今天vim的基本配置就说完了,最后把我的neovim(.vim)文件附在这里,也希望大家提出更好的建议:
我的vim配置文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vim配置全攻略(2)——vim的简单配置 的相关文章

随机推荐

  • 绘图系统二:多图绘制系统

    文章目录 坐标轴控件 坐标系控件 绘制多组数据 源代码 本文基于 从0开始实现一个三维绘图系统 坐标轴控件 三个坐标轴xyz从外观上看其实毫无区别 这种标签和输入框的组合十分常见 为了便于调用 最好实现一个类 tkinter只要继承Fram
  • MyBatis-Plus中的逻辑删除使用

    系列文章目录 Mybatis Plus SpringBoot结合运用 心态还需努力呀的博客 CSDN博客MyBaits Plus中 TableField和 TableId用法 心态还需努力呀的博客 CSDN博客 MyBatis Plus分页
  • 如何通过C语言自动生成MAC地址

    如何通过C语言自动生成MAC地址 最近在做虚拟机项目时 需要给创建的每一个虚拟机自动生成一个MAC地址 由于MAC地址为48位 而且格式是以 隔开的 所以下面我写了一个c程序 来自动生成MAC地址 MAC c include
  • solidity实现智能合约教程(5)-NFT拍卖合约

    文章目录 1 介绍 2 主要功能 3 代码示例 4 部署测试 猛戳订阅学习专栏 solidity系列合约源码 解析 1 介绍 拍卖作为历史悠久的交易方式 具有规范化 市场化的特点 在经济活动中扮演着重要角色 以其公开 公平 公正的价格发现功
  • unity动态加载(1)Resources加载方法

    在开发过程中我们很可能需要使用到动态加载 这样一方面可以节省性能 另一方面使我们的开发过程更加便捷 我之前写过一篇游戏中音效控制器 可以很方便的播放音效 就是用Resources 传送门 大家如果有兴趣可以参考 然后这篇博客实现以下使用Re
  • [推荐] (SqlServer)批量清理指定数据库中所有数据

    在实际应用中 当我们准备把一个项目移交至客户手中使用时 我们需要把库中所有表先前的测试数据清空 以给客户一个干净的数据库 如果涉及的表很多 要一一的清空 不仅花费时间 还容易出错以及漏删 在这儿我提供了一个方法 可快捷有效的清空指定数据库所
  • 杭电1005.找规律就好

    本题连接 点击打开链接 Number Sequence Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission
  • 【人工智能】Fisher 线性分类器的设计与实现(QDU)

    人工智能 Astar算法求解8数码问题 QDU 人工智能 利用 搜索的博弈树算法编写一字棋游戏 QDU 人工智能 Fisher 线性分类器的设计与实现 QDU 人工智能 感知器算法的设计实现 QDU 人工智能 SVM 分类器的设计与应用 Q
  • Invalid option 'latest' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to

    Easily Add PDF Word Excel Function to Your NET Apps You may be thinking that C 7 features are already supported with Vis
  • 【C语言】浮点型数据为什么不能直接比较

    由于浮点型的精度是有限的 经过运算就可能存在舍入误差 比如 x y y x 所以如果要比较浮点型数值 最好要先定义一个极小值MIN作为允许误差 1 浮点型与0比较 define MIN 0 0000000001 double temp if
  • 1个星期,教你快速上手Unity ASE-【UI流动】

    目录 前言回顾 效果图 节点预览 步骤 前言回顾 不熟悉节点属性的可以点击传送门预览 传送门 1个星期 教你快速上手Unity ASE 预览 传送门 1个星期 教你快速上手Unity ASE 遮罩 传送门 1个星期 教你快速上手Unity
  • Qt中ui文件的使用

    用designer设计的 ui文件可以通过uic工具转换为 h文件 在编译时也会自动生成这样一个ui h文件 有了这个 h文件就可以直接按照纯C 的方式对其中的类进行调用 ui文件的使用就是利用默认工具uic自动产生一个类 然后用该类的se
  • 【数据结构与算法】<==>二叉树下

    目录 堆的应用 1 堆排序 1 建堆 2 向下调整的时间复杂度 3 向上调整建堆的时间复杂度 二叉树链式结构的实现 遍历操作 其他操作 堆的应用 1 堆排序 堆排序即利用堆的思想来进行排序 总共分为两个步骤 1 建堆 升序 建大堆 序 建大
  • 小程序隐私保护的常见问题汇总 小程序隐私配置解决

    涉及调用用户个人信息相关接口的 每一个小程序均需补充相应用户隐私保护指引 1 设置隐私保护的时候 clientip is not registered 返回的错误信息 errCode 61004 errMsg access clientip
  • UE4,UE5虚幻引擎,怎么在蓝图中获取FPS帧速率,显示在UMG(UI)上

    前言 在UE中可以使用命令行比如stat fps显示帧率 但只是显示在界面 假设我们要在蓝图中获取FPS帧率 并且显示在我们创建的UMG控件蓝图 这种stat fps命令行的形式就不行了 因为它只会固定显示在右上角的位置 1 在Tick中获
  • js data 日期初始化

    创建一个日期对象 var objDate new Date arguments list 参数形式有 以下 种 1 new Date month dd yyyy hh mm ss 2 new Date month dd yyyy 3 new
  • 小白数学建模模型入门(一)

    数学建模模型入门 一 1 层次分析法 AHP 针对于难以完全定量的复杂系统做出决策的模型和方法 如图 判断好目标层 准测层 可理解为考虑元素 方案层 不把所有因素放在一起比较 而是两两互相比较 两因素比较的标度由参考论文或其他途径得出 得到
  • 【C++】类的默认成员函数(上)

    文章目录 类的默认成员函数 1构造函数 1 1构造函数特征 1 2编译器自动生成的构造函数 1 3编译器默认的构造函数 1 4C 11特征 2析构函数 2 1特征 2 2编译器默认的析构函数 3拷贝构造函数 3 1特征 3 2编译器默认生成
  • ssh渗透与hydra爆破(简明不啰嗦)

    适合新手上路 MSF与hydra两种方式渗透22端口 后进行远程连接 如有不足请各位见谅 此次实验仅供参考 切勿做违法犯罪 出事一切与本人无关后果自负 希望大家早日成为白帽子 渗透机 kali 靶机 192 168 75 128 1 扫描局
  • vim配置全攻略(2)——vim的简单配置

    这篇文章主要讲的是vim的简单配置 相对于vim内置的一些快捷键和功能 vim的客制化才是vim的灵魂 也是vim存活31年仍被热衷的原因 如果你还不了解vim的基本操作和体系 我建议你看一下我上一篇文章 vim配置全攻略 1 vim的基本