Vim 安装与基础操作指南
0x00 链接
0x01 准备
(1)下载与安装
- 在官网地址找到 Download 标签,在其中根据操作系统选择相应的版本,以下以 Windows 为例
- 点击 vim-win32-installer site至下载链接,根据系统位数下载相应的
.exe
或.zip
文件- 32位——x86
- 64位——x64
- 安装路径建议不设置在 C 盘中,安装内容建议使用完全
(2)快捷方式说明
- gvim:正常模式标准的 Vim(正常开发的时候用)
- gvim read-only:只读模式的 Vim(防误删误改方便查阅代码)
- gvim easy:启动的时候是插入模式,适合普通 Windows 用户的习惯
(3)禁止 Vim 生成un~文件
当前小节内容参考自《禁止vim生成 un~文件 | 博客园-王学长》和《vim/gvim怎么禁止生成un~文件 | 百度经验》
这是 Vim 的 undofile 和备份文件,可以让你在关闭文件后再次打开时还可以撤销上次的更改
取消此功能的方法:在 Vim 软件安装目录中找到_vimrc,使用记事本打开,在其写入以下内容
set noundofile
set nobackup
set noswapfile
如果在 Windows 中,上述设置需要在 Vim 安装目录下的vimrc_example.vim中进行设置
原始设置内容:
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
if has('persistent_undo')
set undofile " keep an undo file (undo changes after closing)
endif
endif
修改之后:
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set nobackup " keep a backup file (restore to previous version)
if has('persistent_undo')
set noundofile " keep an undo file (undo changes after closing)
endif
endif
如果想使用这个功能的话,但是不想被那些文件烦的话,还可以写入
undodir=~/.undodir
(4)字体、中文、光标、行号、语法高亮、缩进、括号补全、备份与历史记录插件(可选操作)
当前小节内容参考自《windows10下安装、配置vim及YCM安装 | CSDN-既往不恋未来不迎》
- 以下设置写入至 Vim 配置文件——_vimrc
字体
set guifont=Consolas\ for\ Powerline\ FixedD:h16
- 字体:Consolas for Powerline FixedD
- 该字体文件非官方下载链接
- 字号:16
说明:等于号的右边和冒号之间是电脑上安装的某个字体的名字,注意字体中有空格的话,需要使用反斜杠
\
来对空格进行转义。冒号之后设置的是字体的大小。- 字体:Consolas for Powerline FixedD
中文
" 设置编码格式
set encoding=utf-8
set langmenu=zh_CN.UTF-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
" 解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" 设置中文提示
language messages zh_CN.utf-8
" 设置双字宽显示,防止有些字符显示不出来
set ambiwidth=double
光标
" 光标设置成块状且禁止闪烁
set gcr=a:block-blinkon0
" 显示光标当前位置,右下角可看到当前行和列数
set ruler
" 高亮显示当前行/列
set cursorline
set cursorcolumn
" 高亮显示搜索结果
set hlsearch
行号显示
set number
语法高亮
" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
缩进
" 自适应不同语言的智能缩进
filetype indent on
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让vim把连续数量的空格视为一个制表符
set softtabstop=4
括号补全
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>O
inoremap < <><ESC>i
备份与历史记录
" 禁止备份
set nobackup
" 保留历史记录
set history=500
(5)插件(可选操作)
当前小节内容参考自《windows10下安装、配置vim及YCM安装 | CSDN-既往不恋未来不迎》
a. 插件管理插件——Vundle
打开目录 C:/Users(用户)/用户名 ,此处打开命令行(该目录下可以找到 vimfiles 文件夹)
从 github 上克隆下来 Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/vimfiles/bundle/Vundle.vim
放在vimfiles文件夹里克隆完成后,在_vimrc中添加以下配置
" vundle插件环境设置
filetype off
set rtp+=~/vimfiles/bundle/Vundle.vim
" vundle管理的插件列表必须位于vundle#begin()和vundle#end()之间
call vundle#begin()
" 插件管理插件
Plugin 'VundleVim/Vundle.vim'
" 主题
Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'
Plugin 'morhetz/gruvbox'
Plugin 'vim-airline/vim-airline-themes'
" 自动补全
Plugin 'Valloric/YouCompleteMe'
" 底部栏增强
" Plugin 'Lokaltog/vim-powerline'
Plugin 'vim-airline/vim-airline'
" 目录树
Plugin 'scrooloose/nerdtree'
" 格式化代码
Plugin 'Chiel92/vim-autoformat'
" 显示缩进线
Plugin 'nathanaelkane/vim-indent-guides'
" 彩虹括号
Plugin 'kien/rainbow_parentheses.vim'
" 插件列表结束
call vundle#end()
filetype plugin indent on
Vundle 可以安装、卸载插件
- 安装插件
只需在_vimrc文件的vundle#begin()
和vundle#end()
之间加入语句:Plugin [插件名]
,比如要安装 gruvbox 主题,输入:Plugin 'morhetz/gruvbox'
。保存编辑,然后打开 Vim,输入::BundleInstall
然后回车,安装完成后就会看到左下角的Done!
- 查看插件列表
在 Vim 中输入::BundleList
- 删除插件
在_vimrc中注释掉或者删掉该插件所对应的行,保存,然后在 Vim 中输入:BundleClean
,然后回车,输入y
表示确定删除,n
表示放弃。
- 安装插件
修改主题
在 Vim 中执行命令
:colorscheme [主题名称]
更多插件可以参考 Vim Awesome
b. 底部栏增强插件——airline
" airline设置
" 这个是安装字体后 必须设置此项"
let g:airline_powerline_fonts=1
" 底部栏的主题
let g:airline_theme="molokai"
" 打开tabline功能,方便查看Buffer和切换
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
if !exists('g:airline_symbols')let g:airline_symbols = {}
endiflet g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.readonly = '⭤'
let g:airline_symbols.linenr = '⭡'
c. 格式化代码插件——autoformat
" 格式化代码风格设置:C为ANSI
let g:formatdef_ansi='"astyle --style=allman --pad-oper"'
let g:formatters_c=['ansi']
let g:formatters_cpp=['ansi']
au BufWrite * :Autoformat
"设置快捷键F5自动格式化代码并保存
noremap <F5> :Autoformat<CR>:w<CR>
d. 彩虹括号——rainbow_parentheses
" 彩虹括号设置
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
" 开启16对括号匹配
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
e. 自动补全——YCM(YouCompleteMe)
省略,如有需要可以参考原文“1.7 自动补全神器YCM(YouCompleteMe)”部分
f. 目录树——nerdtree
" 目录树设置
nmap <silent> <c-n> :NERDTreeToggle<CR>
- 在一般模式下,按
Ctrl+N
即可打开目录树
0x02 主要模式
(1)Normal Mode-普通模式
- 启动 Vim 后默认为普通模式
- 普通模式是 Vim 的默认模式,它用于导航、编辑和执行各种命令。在这个模式下,你可以移动光标、复制、粘贴、删除文本、搜索、替换等等
(2)Insert Mode-插入模式
- 在 Normal Mode 中推荐按
i
可以进入插入模式,按<ESC>
键退出 - 插入模式用于输入和编辑文本,就像其他常见的文本编辑器一样。在插入模式下,你可以直接键入文本
(3)Command Mode-命令模式
- 在 Normal Mode 中按
:
或/
或?
可以进入命令模式,按<ESC>
键退出 - 命令模式用于执行各种高级操作,如保存文件、搜索和替换、设置编辑器选项等
(4)Visual Mode-可视模式
- 在 Normal Mode 中按
v
可以进入可视模式,按<ESC>
键退出
(5)Replace Mode-替换模式
- 在 Normal Mode 中按
R
可以进入替换模式,按<ESC>
键退出
(6)Select Mode-选择模式
- 按住
<Shift>
键以及方向键即可进入选择模式,按<ESC>
键退出
0x03 操作(2006)
当前节内容参考自 ViEmu
(1)basic editing
- 在普通模式中,
h
j
k
l
是 vi/vim 的光标移动键,相比方向键更容易操作 - 在普通模式中,按
i
键进入插入模式,光标从块状变为竖线,此时可以输入文本,按ESC
返回普通模式 - 在普通模式中,按
x
键删除当前字符,或按X
键删除左侧的字符 - 在插入模式中,按
A
键在行末插入文本 - 在普通模式中,按
u
键撤销最后的操作——传统的 vi 仅能撤销一级,但是 Vim 支持无限制撤销(CTRL+R
还原操作) 0
键可以直接跳转至行首,$
键可以直接跳转至行末,^
键可以直接跳转至首个非空白位置- 在普通模式中,按
w
b
e
键可以按照所有字母数字或标点符号的序列移动光标- 对语句
function(x, y, z);
的分割示例:function
(
x
,
y
,
z
);
- 对语句
- 在普通模式中,按
W
B
E
键可以按照无空白字符块的序列移动光标- 对语句
function(x, y, z);
的分割示例:function(x,
y,
z);
- 对语句
- 在插入模式中,按
R
键可以使用覆写光标进行插入文本,此时键入的文本会覆盖光标所在位置已存在的文 - 在命令模式中,使用命令
:w
可以保存文本,使用:q
命令可以退出
(2)operators & repetition
- 在普通模式中,按
f
键再按另外一个需要查询位置的字符键,光标会跳转至这个字符在当前行所在的位置- 输入
fb
,光标悬停位置斜体示例:zabcd
- 输入
- 在普通模式中,按
t
T
键可以做到与f
键相同的功能,区别在于光标会正好停在该字符之前的字符- 输入
tb
,光标悬停位置斜体示例:zabcd
- 输入
- 在普通模式中,按
d
键以及动作键可以删除在光标和动作键描述的内容之间的文本,如dw
、df
等 - 在普通模式中,按
c
键可以做到与d
键相同的功能,区别在于删除完成后会进入插入模式 - 一些动作键如
j
k
是线条化的,会删除从起始行到结束行全部的内容 - 在普通模式中,
.
键可以重复最后一次输入的动作,包括文本输入、删除等 - 在普通模式中,
d2w
可以删除光标后2个使用w
选择的内容;d2t,
可以删除光标后全部内容直至第2个逗号前 - 在普通模式中,
2i
可以重复在完成输入操作按下ESC
之后文本 - 在普通模式中,重复操作键两次可以操作当前行,如
cc
或dd
等 - 在普通模式中,按
v
键可以进入可视模式(仅限 Vim 中)。移动时,文本将高亮显示。按下操作键可对选中的文本进行操作 - 在普通模式中,按
V
键可以进入可视行模式,与按v
键的功能相同,区别在于会按行高亮进行操作 - 在可视模式中,按
CTRL+v
可以选中矩形块
(3)yank & paste
- 在普通模式中,按
y
键以及动作键可以复制动作键选中的内容- 该功能也可以在可视模式中执行
- 当文本使用
d
c
x
删除后也会被复制
- 在普通模式中,按
p
键可以在光标的(如果按字符则右侧;如果按行则另起一行)后粘贴y
键复制的内容 - 在普通模式中,按
P
键可以在光标(如果按字符则右侧;如果按行则另起一行)前粘贴y
键复制的内容 - 在普通模式中,按
yy
可以复制当前行 - 在普通模式中,按
"
键加一个a
-z
范围内的字符在任何复制/删除/粘贴命令前可以选择一个寄存器。一个在复制/删除前的A
-Z
的寄存器意思是“附加副本”。"*
或"+
可以选择系统的粘贴板 - 在普通模式中,按
o
键可以在当前行下的空行中进入插入模式 - 在普通模式中,按
O
键可以做到与o
键相同的功能,区别在于在当前行上的空行进入
(4)searching
- 在普通模式中,
/
是基本的搜索动作。在键入/
后键入要搜索的文本,然后按回车键,光标会定位在首次查找到的位置。作为一个动作,可以在操作符之后使用它,也可以在可视模式下使用 ?
可以做到与/
键相同的功能,区别在于光标会定位到最后一个符合查询结果的位置n
可以在同一方向重复最后一次的搜索,N
可以在反方向重复最后一次搜索*
可以向前搜索光标下的标识符的下一个实例#
可以做到与*
键相同的功能,区别在于向后搜索
(5)marks & macros
- 在普通模式中,按
m
键以及一个a
-z
字符键可以来设置标记 - 在普通模式中,按``
键以及一个
a-
z`字符键可以跳转至该字符键对应的标记 - 在普通模式中,按
'
键以及一个a
-z
字符键可以跳转至在标记所在行第一个非空白位置 A
-Z
标记是全局的,a
-z
标记是每个缓冲区的- ``.`可以指到上次修改的位置
- 在普通模式中,按
q
键以及一个a
-z
字符键可以开始宏记录,再次按q
键可以停止宏记录 - 在普通模式中,按
@
键以及一个a
-z
字符键可以回放对应的宏记录 - 在普通模式中,按
@@
可以重复最后一次的宏指令
(6)various motions
%
可以在匹配成对的括号之间进行跳跃H
M
L
分别可以跳转至屏幕显示的顶部、中部、底部G
可以跳转到文件的结尾处,或者到#
输入之前的行-
/+
可以跳转至上/下一行(
和)
分别可以跳转至当前语句的开头/结尾{
和}
分别可以跳转至上/下空行[[
和]]
可以跳转至o列上/下的 ‘ { ’
(7)various commands
- 在普通模式中,按
J
键可以将当前行与下一行或当前可视选择中的所有行连接起来 - 在普通模式中,按
r
以及一个任意字符可以替换当前字符为键入的任意字符 - 在普通模式中,
C
是c$
的缩写,修改至行末,完成后会进入插入模式 - 在普通模式中,
D
是d$
的缩写,删除至行末 - 在普通模式中,
Y
是yy
的缩写,复制整行 - 在普通模式中,按
s
键可以删除光标下的字符并进入插入模式 - 在普通模式中,按
S
键可以清空当前行并进入插入模式 - 在普通模式中,按
>
键以及一个动作键可以缩进一行或多行 - 在普通模式中,按
<
键以及一个动作键可以取消缩进 - 在普通模式中,按
=
键以及一个动作键可以格式化选中范围内的文本 >
<
=
操作在可视模式/可视行模式也可以执行,同时在普通模式中双重输入(如>>
)可以操作当前行- 在普通模式中,按
~
键可以切换光标下字符的大小写
0x04 命令速查表(2023)
-End-
Vim 安装与基础操作指南的更多相关文章
- 编辑器之神VIM 总结(一) 基础部分
版本号 说明 作者 日期 1.0 vim基础知识 Sky Wang 2013/06/19 概要 vim和emacs,一个是编辑器之神,一个是神一样的编辑器.他们被称是UNIX系统下的 ...
- 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础
上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...
- 给VIM安装插件。让ubuntu的vim强大起来
简易安装方法: 打开终端,执行下面的命令就自动安装好了: wget https://raw.github.com/ma6174/vim/master/setup.sh -O ma6174_vim_se ...
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- vim学习笔记(一)—— vim安装方法
一.完全卸载vim的方法 sudo apt-get remove --purge vim (--purge 是完全删除,会连配置文件一起删除) 二.Vim前言——————“世界上只有三种编辑器,EMA ...
- [转] Spark快速入门指南 – Spark安装与基础使用
[From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...
- Vim 安装和配置、优化
Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install ...
- vim安装不上
前阵子,刚安装Ubuntu时,安装vim的问题,现在些出来分享一下.apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成有一些软件 ...
- NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者
NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者 作者: raindy 来源:http://bbs.hanzify.org/index.php?showtopic=30029 时间: ...
- mySQL的安装和基础使用及语法教程
mySQL的安装和基础使用及语法指南 一.MySQL的安装.配置及卸载 1.安装 2.配置 3.mySQL5.1的完全卸载 4.MYSQL环境变量的配置 二.MySQL控制台doc窗口的操作命令 1. ...
随机推荐
- 解决celery与django结合后,分别启动celery和django的进程同时调用定时任务的问题
django中引入celery后发现在代码中写如下这样的定时任务,启动celery和django的工程后,他们都会调用这个定时任务导致,任务有的时候会冲突出现奇怪的问题.如何解决请继续看. sched ...
- java获取kafka consumer lag、endOffsets、beginningOffsets以及 KafkaConsumer总结
一.java获取kafka consumer lag.endOffsets.beginningOffsets maven依赖: <dependency> <groupId>or ...
- [JS] 获取超星视频题答案
// 解除鼠标限制 var btnn = $(document.getElementById("iframe").contentWindow.document.getElement ...
- [学习笔记] CentOS + .Net后端常用的中间件工具安装
Redis 5.0+ 官方文档:https://redis.io/download/#redis-downloads sudo yum install redis RabbitMQ 3.7.11+ 官 ...
- end_of_line = lf 选择行尾序列 .editorconfig - 老项目不动代码存盘 文件变动 CRLF 的问题 vscode
end_of_line = lf 选择行尾序列 .editorconfig - 老项目不动代码存盘 文件变动 CRLF 的问题 缘由 vscode 老项目代码,没有变动,ctrl + s后 文件有变化 ...
- git reset --soft HEAD^^ 项目提交代码冲突 提交当前merge后,别提交远程,用命令回滚2次,到未提交的版本,再拉取同事代码,冲突解决
git reset --soft HEAD^^ 项目提交代码冲突 提交当前merge后,别提交远程,用命令回滚2次,到未提交的版本,再拉取同事代码,冲突解决 当多人写一个项目,最好还是关掉vscode ...
- MinimalApis自动注册
前言 在Asp.Net Core 6 推出了最小 Api(MinimalApis)来简化WebApi的开发,在前后端分离的趋势下越来越多的后端服务只提供Api接口,但是用Controller的开发模式 ...
- 基于ads1299神经信号采集之调试总结和备忘
前记 ads129x系列芯片在生理信号采集这块应用十分广泛,也是一个不可或缺的芯片.最近几个项目用到它,算是从一个陌生到熟悉的过程吧,这个过程踩过不少坑,中间经历过很多比较大的问题困扰和折磨,花费了 ...
- python 音频通道分离的源码实现
一 前记 作为一个音频工程师,仅仅依靠鼠标点击,没有一些自己的小工具的话,肯定是不合格的了. 最近用到了一个音频通道分离的功能,这里就用python敲击了一下,这里做个备忘吧,给有需求的小伙伴抛砖引玉 ...
- Git进阶命令-revert
有关Git,之前有写过两篇文章: Git五个常见问题及解决方法 Git进阶命令-reset 一.revert命令使用场景 有一天项目经理跟你说,你开发上线的代码有问题,需要马上撤回. 撤回?你第一反应 ...