vim 的配置详解/键盘映射配置详解

文章目录

  • 特性设置
  • 配置快捷键(键映射配置)
  • 键盘符号
  • 键盘映射命令和不同模式的对应关系
  • 取消键盘映射
  • 查看键盘映射

在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。而在每个用户的主目录下,都可以建立私有的配置文件,命名为: .vimrc

使用 vim 打开配置文件:

vim /etc/vimrc # 配置全局的
vim ~/.vimrc # 配置当前用户的,不存在则保存后自动创建该文件

特性设置

set nu " 显示行编号
set nocompatible " 关闭vi兼容模式,可以启用方向键和Backspace
set cursorline " 突出显示当前行
filetype on " 侦测文件类型
filetype indent on " 为特定文件类型载入相关缩进文件 set showmatch " 高亮显示匹配的括号set matchtime=1 " 匹配括号高亮的时间(单位是十分之一秒)
set history=1000 " 历史记录数
color evening
syntax on " 语法高亮显示
set autoindent " 自动缩进
set cindent " 针对C语言语法自动缩进
set fileformats=unix,dos,mac " 让vim自动识别文件格式
set smartindent
set ignorecase " 搜索忽略大小写
set showmatch
set guioptions-=T
set vb t_vb=
set nohls
set shortmess=atl
autocmd InsertEnter *se cul
set ruler " 打开状态栏标尺set smarttab " 在行和段开始处使用制表符
set enc=utf-8 " 编码设置
set langmenu=zh_CN.UTF-8 " 语言设置
set showcmd
set confirm
set incsearch
set laststatus=2 " 底下状态行显示的内容(包括文件类型和解码)set cmdheight=2 " 命令行(在状态行下)的高度,默认为1,这里是2if has("vms")
set nobackup " 覆盖文件时不备份
else
set backup " 覆盖文件时备份
endif" 后面这段是设置Tab键的缩进为4个空格
if has( "autocmd" )filetype plugin indent onautocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endifset tabstop=4 " 设置 Tab 的长度为 4 个空格
set shiftwidth=4 " 设定 <<>> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set noexpandtab " 不要用空格代替制表符
set expandtab " 允许空格代替制表符

注:" 是注释符号

配置快捷键(键映射配置)

" 括号相关的快捷键
inoremap ( () " inoremap 表示在插入模式下,你按下 ( 就会执行后面部分,后面的部分是 (),所以按下一个 (,就会出现完整的圆括号 ()
inoremap [ [] 
inoremap { {}
inoremap < <>" 光标移动到文件的开始处
inor <C-Up> <ESC>ggi " inor 表示在插入模式下,你按下 <C-Up> 就会执行后面部分,先执行 <Esc> 退出插入模式,返回普通命令模式,再执行 gg 光标跳到文档第 1 行的行首,最后执行 i 重新进入插入模式" 光标移到文档最后一行的开始处
inor <C-Down> <ESC>Gi inor <C-V> <ESC>v " 进入按字符选择的可视模式下" 复制词
inor <C-Y> <ESC>yiw" 复制行
inor <C-S-Y> <ESC>yy" 粘贴文本
inor <C-P> <ESC>pi" insert mode keymapping
inoremap <C-b> <LEFT>
inoremap <C-f> <RIGHT>
inoremap <C-a> <HOME>
inoremap <C-e> <END>
inoremap <C-j> <END><CR>" 删除快捷键
inoremap <C-d> <DELETE>
inoremap <C-v> <PageDown>
inoremap <C-l> <ESC>zza
noremap <C-l> ZZ" 缩进快捷键
nmap <tab> V> " 按下 Tab 键后,先进入行可视模式下,然后执行 >,将当前选中的行向右缩进,默认是缩进 8 个空格
nmap <s-tab> V<
vmap <tab> >gv
vmap <s-tab> <gv

键盘符号

标识符号代表含义
<Esc>代表 Escape
<CR>代表 Enter
<C-Esc>代表 Ctrl-Esc
<S-F1>表示 Shift-F1
<D>代表 Command 键,对于 Mac 用户,可以使用
<M-key><A-key>代表 Alt

注:关于键盘符号的详细说明,请使用 :h key-notation 命令查看帮助信息。

键盘映射命令和不同模式的对应关系

在这里插入图片描述
说明:

  1. Operator-pending 模式是指当你输入操作符(比如 d)时,然后继续输入的移动步长和文本对象(dw)的状态。我没有明白啥意思!!

  2. 第一列命令定义的映射,仍然可以被重新映射;第二列命令(包含noremap)定义的映射,是不可以被重新映射的。

取消键盘映射

如果想要取消一个映射,可以使用以下命令:

:unmap <F10>

注意:必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。

针对不同模式下的键盘映射,需要使用与其相对应的 unmap 命令。例如:使用 :iunmap 命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用 :nunmap 命令。具体可以看下面的关系图:

在这里插入图片描述

可以使用以下命令,取消所有映射。请注意,这个命令将会移除所有用户定义和系统默认的键盘映射。

:mapclear

查看键盘映射

使用 :map 命令,可以列出所有键盘映射。
在这里插入图片描述
其中第一列标明了映射在哪种模式下工作:

标记模式
<space>常规模式,可视化模式,运算符模式
n常规模式
v可视化模式
o运算符模式
!插入模式,命令行模式
i插入模式
c命令模式

使用 :map! 命令,则只列出插入和命令行模式的映射。而 :imap:vmap:omap:nmap 命令则只是列出相应模式下的映射。

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

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

相关文章

开闭原则 依赖倒置原则_坚实原则:依赖倒置原则

开闭原则 依赖倒置原则到目前为止&#xff0c;我们只研究了单一职责 &#xff0c; 打开/关闭 &#xff0c; liskov替换和接口隔离原则。 依赖倒置是我们所要研究的最后一个原理之一。 该原则指出 答&#xff1a;高级模块不应依赖于低级模块。 两者都应依赖抽象。 B.抽象不应…

java的传值调用什么_Java的传值调用

(本文非引战或diss&#xff0c;只是说出自己的理解&#xff0c;欢迎摆正心态观看或探讨)引子之所以写这篇文章是因为前些天写了一篇《Java中真的只有值传递么&#xff1f;》探讨了网上关于Java只有值传递的说法&#xff0c;当时写这篇文章的缘由是因为之前看的文章讲解的Java只…

Linux 命令之 apt -- Debian Linux 新一代的软件包管理工具

文章目录 一、命令介绍二、常用命令三、常用选项四、命令示例(一)安装、更新和删除软件包安装指定的软件包安装软件包的同时修复依赖问题安装指定版本的软件包安装本地的 deb 包文件删除软件包,保留配置文件删除软件包,不保留配置文件将已经安装的但是不再使用的软件包删除…

liskov替换原则_坚实原则:Liskov替代原则

liskov替换原则以前&#xff0c;我们深入研究了坚实的原则&#xff0c;包括单一责任和开放/封闭原则。 Liskov替代原则&#xff08;LSP&#xff09;是子类型关系的一种特殊定义&#xff0c;称为&#xff08;强&#xff09;行为子类型&#xff0c; 假设对象S是对象T的子类型&a…

java 聚合_Java聚合

聚合如果一个类有一个类的实体引用(类中的类)&#xff0c;则它称为聚合。 聚合表示HAS-A关系。考虑有一种情况&#xff0c;Employee对象包含许多信息&#xff0c;例如&#xff1a;id&#xff0c;name&#xff0c;emailId等。它包含另一个类对象&#xff1a;address&#xff0c;…

Linux 命令之 dpkg --Debian 的一个底层包管理工具

文章目录 一、命令介绍二、deb 软件包命名规则三、软件包管理相关文件/目录四、dpkg 数据库五、子命令六、常用选项(一)安装、升级和删除软件包(二)查询和检验软件包(三)其它七、命令示例(一)安装、升级和卸载软件包安装指定的软件包解开软件包到系统目录但不配置配置软…

java jep_Java 10 – JEP 286:局部变量类型推断

java jepJava 10即将发布&#xff0c;RC Build可在此处获得 。 可在此处找到此发行版的目标功能。 在针对Java 10的所有JEP中&#xff0c;开发人员社区中最有趣且最受关注的是286&#xff1a;Local-Variable Type Inference 。 什么是局部变量类型推断&#xff1f; 我们在Java…

java ffmpeg 视频水印_java 实现视频转换通用工具类:视频加水印-Ffmpeg(五-1)

java 实现视频转换通用工具类&#xff1a;视频相互转换-Ffmpeg(三)说明&#xff1a;视频加水印支持右上角、左上角、左下角、右下角、底部居中几个方位1.根据水印文字---添加视频水印/*** 根据水印文字---添加视频水印* param srcPath 原视频路径* param tarVideoPath 生成后的…

手动 clone 安装 Homebrew

文章目录 手动 clone 安装 HomebrewHomebrew 换源替换 homebrew 源替换 homebrew-core 源替换 homebrew-bottles 源bash用户zsh 用户更新 Homebrew手动 clone 安装 Homebrew 首先进入 homebrew 目录:cd "$(brew --repo)/Library/Taps/homebrew/"创建目录 homebrew-c…

lambda 匿名内部类_Lambda运行时内部:窥视无服务器巢穴

lambda 匿名内部类有没有想过lambda里面是什么样的&#xff1f; 不要怀疑了 让我们找出答案。 自从2014年问世以来&#xff0c;AWS的lambda函数就成为一个热门话题&#xff0c;在无服务器计算领域开辟了全新的历史。 无状态&#xff0c;零维护&#xff0c;按次执行的好东西实际…

java VM argument_java之program arguments与VM arguments

program arguments 中的值作为 args[] 的参数传入的&#xff0c;而 VM Arguments 是设置的虚拟机的属性。program arguments 是要传给你的应用程序的&#xff0c;它通过主函数中的 args 来传值。 VM arguments是系统的属性&#xff0c;要传给 java 虚拟机的。如图&#xff1a;是…

java iterator 嵌套_Java中的集合嵌套

import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public classDemo06 {public static voidmain(String[] args) {//大 MapHashMap> oraclenew HashMap>();//小MapHashMap java1018 new HashMap();HashMap java1227 new H…

Linux/Unix 如何查看 man 搜索到的手册页(manual page)的位置及复制手册页的内容

文章目录命令 man 是如何搜索手册页的&#xff1f;如何查看手册页所在的路径通过管道输出给 vim命令 man 是如何搜索手册页的&#xff1f; man uses a sophisticated method of finding manual page files, based on the invocation options and environment variables, the …

xml不利于调试_流利的接口不利于维护

xml不利于调试流畅的界面 &#xff08;最初由Martin Fowler 创造&#xff09;是一种与OOP中的对象进行通信的非常便捷的方式。 它使他们的外墙更易于使用和理解。 但是&#xff0c;它破坏了它们的内部设计&#xff0c;使它们更难以维护。 Marco Pivetta在他的博客文章Fluent In…

java输入月份求天数_java输入年份,月份,输出当月天数

package 第二次作业; public class 第二题 { //java文件名 public static void main(String[] args) { //相当于创建主函数 String 年份 = javax.swing.JOptionPane.showInputDialog("输入一个年份:"); //求出输…

java 换行 运算符格式_Java代码样式运算符换行格式

java 换行 运算符格式上周&#xff0c;我发现了什么决定了我在较长时间里一直在努力解决的问题的决定&#xff1a;是否放置&& &#xff0c; ||之类的运算符 或在同一行或下一行。 在构造布尔表达式或隐含字符串时&#xff0c;我们可能需要中断长行。 根据《 Google Ja…

pipeline java_架构模式:pipeline

知名的 Pipeline 模式unix 的 pipelinecat helloworld.txt | grep "hello world" | rev | > output.txt读取文本内容&#xff0c;并过滤 “hello world”&#xff0c;然后反转字符&#xff0c;将最终结果输出到 output.txtWeb 框架中间件Laravel 中的管道Laravel …

MacOS 系统使用命令安装软件包

文章目录 使用 Homebrew 安装软件包先安装 Homebrew使用命令 brew 安装软件包使用命令 installer 安装 pkg 软件包使用命令安装 dmg 格式的软件包包含普通的应用程序文件的 dmg 文件如何使用命令完成安装呢?包含 pkg 安装程序的 dmg 文件又该如何通过命令完成安装呢?Linux 操…

身份证验证 校验码_用户身份验证最佳做法清单

身份证验证 校验码用户身份验证是每个Web应用程序共享的功能。 我们已经实施了很多次了&#xff0c;所以早就应该完善它了。 然而&#xff0c;错误无时无刻不在。 造成这种情况的部分原因是&#xff0c;可能出错的事情列表很长。 您可能会错误地存储密码&#xff0c;可能会具有…

mysql查询不确定的信息_mysql 07.18

1.索引搜索引导&#xff0c;索引是一个特殊的数据结构&#xff0c;期存储的是数据的关键信息与详细详细的位置对应关系。目的&#xff1a;加速查询。索引的影响&#xff1a;不是说拥有索引就能加速&#xff0c;得看你的查询语句有没有正确使用索引&#xff0c;索引也需要占用额…