安装vim
Vim (官网) 是一个非常流行的文本编辑器,可以在多种操作系统上安装和使用。下面是如何在不同系统上安装 Vim 的方法:
在 Linux 上安装 Vim
大多数 Linux 发行版都在其软件包管理器中包含 Vim。可以使用包管理器来安装它。
Debian/Ubuntu 系列
1 2
sudo apt update sudo apt install vim
CentOS
1
sudo yum install vim
在 macOS 上安装 Vim
macOS 通常预装了 Vim,但可能不是最新版本。你可以使用 Homebrew 来安装或更新 Vim。
使用 Homebrew 安装
确保 Homebrew 已安装。你可以在终端中运行以下命令来安装 Homebrew:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
使用 Homebrew 安装 Vim:
1 2
brew update brew install vim
在 Windows 上安装 Vim
在 Windows 上,你可以通过以下方法安装 Vim:
直接下载安装程序:
访问 Vim 官方下载页面。推荐vim-win32-installer(会及时提供最新编译版)。
在 “PC: MS-DOS and MS-Windows” 部分,下载适用于 Windows 的安装程序(通常是
gvim
安装程序)。运行下载的安装程序,按照提示完成安装。
安装完成之后建议添加如下两个环境变量。
Path环境变量:添加的值为vim安装路径里面的具体版本。如:
D:\Vim\vim91
or%VIM%\vim91
环境变量VIM:值为vim的安装路径。如
Windows版本的vim提供了卸载程序。在程序和功能中找到即可卸载。
Windows安装结束后,你会发现开始菜单中有好多Vim,而且名字都不一样。
他们的区别如下:
- 有g和没有g gVim 是在windows下的Gui图形用户界面的的 vim (GUI Vim),支持windows的一些快捷方式,支持鼠标操作 vim 是在windows下的类似linux vi 编辑的界面,只能用键盘操作。 vim的操作指令同时适用于gVim
- Vim, Vim Diff, Vim Easy, Vim Read-only Diff 是用来对比两个文件内容用的,直接打开挺没用的,不过直接拖2个文件到快捷方式上倒是可行; Easy启动的时候是insert模式,适合普通windows用户的习惯; Read-Only的用途:比如用read-only打开已经用vim打开过的文件,就不会提示让人烦躁的.swp文件存在的问题;
通用方法:编译安装 Vim
如果你希望安装最新版本的 Vim 或自定义编译选项,可以从源代码编译安装。
安装必要的依赖项(以 Ubuntu 为例):
1 2
sudo apt update sudo apt install git make ncurses-dev gcc
克隆 Vim 的源代码仓库:
1 2
git clone https://github.com/vim/vim.git cd vim
配置并编译 Vim:
1 2
./configure make
安装 Vim:
1
sudo make install
在IDE中安装vim插件
许多现代集成开发环境(IDE)提供了 Vim 模拟插件。我们在享受 IDE 强大功能的同时,可以继续使用Vim的编辑风格。
要在IDE中安装vim插件,只需要在对应IDE的插件市场搜索安装即可,我常用的:
- JetBrains系列:IdeaVim
- 可以配置
~/.ideavimrc
文件来个性化设置。
- 可以配置
- Visual Studio Code (VS Code):Vim
- 可通过
settings.json
文件进行配置和自定义。
- 可通过
- Sublime Text:Vintageous
- 可以通过 Sublime Text 的设置进行配置和自定义。
- ……
配置vim
Vim 是一个高度可配置的文本编辑器,可以通过编辑其配置文件来调整和扩展其功能。
配置文件介绍
Vim没有提供图形化的配置界面,配置Vim都是通过配置文件(.vimrc
)实现的:
在 Unix 或 Linux 系统中,
.vimrc
文件通常位于用户的主目录中,例如~/.vimrc
。在 Windows 系统中,
.vimrc
文件可以放在用户主目录下,例如C:\Users\<username>\_vimrc
,或者C:\Users\<username>\.vimrc
。**总结:Vim配置文件都在用户的家目录下,名称都可以用
.vimrc
表示。**没有手动创建一个空文件,直接使用。要修改配置,就在
.vimrc
文件中修改就行。
注意事项:
注释是以
"
开头。部分vim插件版的配置文件名并不是
.vimrc
:- 如ideavim:
~/.ideavimr
。
- 如ideavim:
这里总结一下git bash内置的vim插件:
该vim版本也可以用
~/.vimrc
进行配置值。- 默认的配置文件在
git安装位置/etc/vimrc
。只读。
- 默认的配置文件在
如果期望git bash不使用内置的vim插件,使用的是自己安装的vim版本:
- 可以修改git bash的配置文件
.bashrc
,添加vim的安装位置。
1
export PATH="/d/vim/vim91:$PATH"
- 原理:使自己安装的vim版本优先级最高。先加载。尽管我在PATH变量中添加了自己安装的vim版本路径,但是无法保证谁的优先级高,所以使用了上面办法,使自己安装的vim版本优先级最高。先加载。
- 可以修改git bash的配置文件
常见的 Vim 配置项
.vimrc
:
|
|
注意配置了上面大部分设置,在大多数主题中只需要在vim-plug
后面选择颜色方案colorscheme
即可。
插件使用
Vim 的功能可以通过插件进一步扩展。使用插件可以增强Vim的功能,如语法高亮、代码补全、文件浏览器、版本控制集成、模糊搜索等。
为了方便安装,更新,删除插件,我们一般使用插件管理器进行插件管理。
推荐使用的插件管理器是vim-plug。与其他插件管理器(如 Vundle 和 Pathogen)相比,vim-plug
提供了更快的性能和更多的功能,如并行安装插件、延迟加载插件、使用简单等。
安装 vim-plug
下载并安装
vim-plug
: 在终端中运行以下命令,这会将vim-plug
下载到你的 Vim 自动加载目录下:Linux:
1 2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows:
1 2
curl -fLo ~/vimfiles/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
注意:需要拥有curl命令,并且终端能够访问外网。
如果没有,可以手动下载plug.vim,并将文件放在 windows 中的
~/vimfiles/autoload
或 Linux 中的~/.vim/autoload
文件夹内,没有手动创建。
插件推荐
状态栏和主题
- lightline.vim:轻量级状态栏插件。
- vim-airline:高级状态栏插件,提供丰富的功能和美观的主题。
- **dracula-theme**主题
- **material.vim**主题
- **vim-transparent**终端透明。
- 这个插件,可以配置让其他插件也透明。
- vim-deus主题
- 配置主题建议都配置
set termguicolors
" 启用真彩色颜色支持,让配色方案显示更好。会让终端透明效果更好。
如果喜欢用gvim(我用sublme的Vim插件)。可以:
全屏显示:
gvimfullscreen_win32 32位系统: - 下载
gvimfullscreen.dll
- 将其放入gvim.exe
同目录的文件夹下 - 配置文件中map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
64位系统同上, 用
gvimfullscreen_64
代替现在你就可以用
<F11>
来进行全屏操作透明显示
方法基本同上, 选择
vimtweak32.dll
或vimtweak64.dll
放入文件夹, 在vimrc中1
au GUIEnter * call libcallnr("vimtweak64.dll", "SetAlpha", 200)
其中数值200可以选择0-255, 255为不透明
一组默认配置(每个人都同意默认的配置):vim-sensible:插件的功能:
'backspace'
:在插入模式下按退格键可删除任何内容。默认只能删除新添加的。'incsearch'
:按回车键之前开始搜索。'listchars'
:使:set list
(可见空白)更漂亮。'scrolloff'
:始终在光标上方/下方显示至少一行。'autoread'
:自动加载文件更改。您可以按 撤消u
。runtime! macros/matchit.vim
:加载 Vim 附带的 matchit.vim 版本。
文件浏览和导航
语法高亮和语法检查
- vim-polyglot:支持多种编程语言的语法高亮。
- ALE:异步语法检查和修复工具。
代码补全
- YouCompleteMe:强大的代码补全插件,支持多种编程语言。
- coc.nvim:基于 VSCode 插件的代码补全和语言服务器支持。
- 没打算用vim写代码,没花时间去配置。
版本控制
- vim-fugitive:Git 集成插件,提供强大的 Git 操作支持。
- gitgutter:在编辑器中显示 Git 的改动信息。
- 都是在终端中使用git,我没有配置。
其他实用插件
- vim-highlightedyank:让复制区域高亮。(ideavim内置插件。)
- auto-pairs:成对添加、删除、高亮括号。
- surround.vim:轻松操作成对符号(例如引号、括号)。
- auto-pairs的扩展。成对修改括号为别的括号。如
cs"'
将成对"
改为'
。
- auto-pairs的扩展。成对修改括号为别的括号。如
- commentary.vim:快速注释和取消注释代码。
- 在普通模式下,移动光标到要注释的行,然后使用
gcc
注释/取消注释当前行。 - 在可视模式下,选择要注释的代码块,然后使用
gc
注释/取消注释选定的代码。 - 很智能,好用。(ideavim内置插件。)
- 在普通模式下,移动光标到要注释的行,然后使用
配置插件
编辑
.vimrc
文件,添加插件管理器配置:windwos为例,将插件安装位置保存在
$VIM/vimfiles/plugged
,将下面代码追加到.vimrc
中:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
""""""插件vim-plug"""""" " 初始化 vim-plug " Linux上默认 " call plug#begin() " windows上自定义插件安装位置 call plug#begin('$VIM/vimfiles/plugged') " The default plugin directory will be as follows: " - Vim (Linux/macOS): '~/.vim/plugged' " - Vim (Windows): '~/vimfiles/plugged' " - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged' " You can specify a custom plugin directory by passing it as the argument " - e.g. `call plug#begin('~/.vim/plugged')` " - Avoid using standard Vim directory names like 'plugin' " 添加插件列表,确保使用的是单引号。 " Plug 'tpope/vim-sensible' " Plug 'scrooloose/nerdtree' " Plug 'itchyny/lightline.vim' " Call plug#end to update &runtimepath and initialize the plugin system. " - It automatically executes `filetype plugin indent on` and `syntax enable` " 结束插件配置 call plug#end() " You can revert the settings after the call like so: " filetype indent off " Disable file-type-specific indentation " syntax off " Disable syntax highlighting """"""插件vim-plug结束""""""
添加插件:我们只需要将插件添加到
Plug ''
里面即可,别忘记取消注释。插件名一般为为github作者/仓库名
。安装插件:打开vim运行
:PlugInstall
命令来安装.vimrc
中定义的插件。更新插件: 要更新所有插件,运行:
:PlugUpdate
清除未使用的插件: 如果你从配置中移除了一些插件,可以运行
:PlugClean
命令来删除未使用的插件。检查插件状态: 要检查插件的状态和版本,运行
:PlugStatus
。Done
表示成功,:q
退出插件管理器。失败退出重试。或R重试。插件安装成功示例:
效果展示
vim配置效果:
material:default:
material:palenight:
区别不是很大。
deus:
我的完整配置。
扩展
自定义快捷键
在Vim中自定义快捷键,其实就创建快捷键与命令之间的映射关系。
用到的命令是map
或noremap
。注意:要将命令配置在.vimrc
中。
格式:映射命令 自定义快捷键 命令
,中间用空格分隔开。
前面有n, i, v, c
中的任意一个字符表示对应的模式。如nmap
或nnoremap
表示Normal模式下的映射关系。没有表示所有模式的映射关系。
二者区别:
map
会递归解析映射。noremap
不会递归解析映射。意思是如果命令中有别的映射,一个会解析,一个不会。如:
1 2 3
nmap yy dd # 修改了默认映射。 nnoremap ,y "*yy # 会执行复制一行命令到剪切板。 nmap ,d "*yy # 会删除一行命令到剪切板。解析了yy映射。
看需求使用,是否需要递归映射。没有需求推荐使用
noremap
创建映射,防止映射多了,递归解析,导致无限循环或意外行为。
注意事项:
当自定义的快捷键与vim预定义的快捷键冲突时,自定义的快捷键会覆盖预定义的快捷键。
查看自定义的快捷键
:map
。或者查看.vimrc
。- 使用
:verbose map
命令可以查看详细的映射信息,包括映射是在哪里定义的。
- 使用
取消自定义的快捷键:在自定义快捷键的后面添加
u+自定义的快捷键
。如1 2 3
nnoremap ,y "*yy # 自定义快捷键 ... unnoremap ,y # 取消快捷键
常用键表示法
普通字符:
- 直接输入字母、数字、符号。例如:
a
,b
,1
,2
,#
,*
。
- 直接输入字母、数字、符号。例如:
控制键:
- 使用
<Ctrl>
(或<C>
)表示控制键。例如:<C-a>
表示Ctrl+a
。
- 使用
功能键:
- 使用
<F1>
到<F12>
表示功能键。例如:<F2>
表示功能键F2
。
- 使用
特殊键:
- 使用尖括号包围的特殊键表示法。例如:
<Esc>
:Escape 键<CR>
:回车键(Enter)<Tab>
:制表符键(Tab)<Space>
:空格键(Space)<BS>
:退格键(Backspace)<Del>
:删除键(Delete)<Up>
:上箭头键<Down>
:下箭头键<Left>
:左箭头键<Right>
:右箭头键
- 使用尖括号包围的特殊键表示法。例如:
组合键:
- 可以组合使用。例如:
<C-Space>
表示Ctrl+Space
,<C-Left>
表示Ctrl+Left
。
- 可以组合使用。例如:
Leader 键
使用
<leader>
键可以避免与默认快捷键冲突。默认情况下,<leader>
键是反斜杠\
,但你可以在.vimrc
中重新定义它:1
let mapleader = ","
然后你可以使用
<leader>
键创建自定义快捷键:1
nnoremap <leader>y "*yy
这样,你的自定义快捷键将使用
,y
来触发,并且<leader>
可以更改为你喜欢但不冲突的键。逗号跟反斜杠就是,不过我更喜欢用逗号。
示例:在vim中没有快捷键删除光标后面的字符。我们来自定义映射实现:
|
|
通过上面的命令,我们实现了终端在Emacs模式下的ctrl-k
快捷键。但是只能在vim中使用,并且vim版本需要支持表达式寄存器。
如果终端的编辑模式为vi,依旧不能解决问题。在insert模式下不能使用ctl-k
快捷键。需要修改终端的映射关系.inputrc
。不过够用了。
示例:配置复制、粘贴、剪切快捷键:
|
|
需要注意的是不要配置普通模式下的ctrl-v
,它是可视块的快捷键,可以配置visual模式的,需要按两次才能粘贴。不过够用了。
命令参考:Vim Common Commands