.vimrc
来定制快捷键、语法高亮、缩进规则等。Linux vi配置
Vim 是 Vi 的升级版,提供了更强大的功能和可定制性,通过配置 Vim,可以极大地提高编辑效率和用户体验,本文将详细介绍如何在 Linux 系统下配置 Vim,包括安装、基本配置、插件管理以及一些实用的配置示例。
一、Vim 的安装与基本配置
1. 安装 Vim
大多数 Linux 发行版的包管理器都包含了 Vim,以下是一些常见的安装命令:
Debian/Ubuntu:
sudo apt update sudo apt install vim
CentOS/RHEL:
sudo yum install vim
Fedora:
sudo dnf install vim
2. 基本配置文件
Vim 的配置文件是.vimrc
,通常位于用户的主目录下,如果该文件不存在,可以手动创建:
touch ~/.vimrc
在.vimrc
中添加以下内容以启用语法高亮和显示行号:
syntax on set number
保存并关闭文件后,重新启动 Vim 即可看到效果。
二、Vim 模式介绍
Vim 有三种主要模式:
1、一般模式(Normal Mode):默认模式,用于导航和执行命令。
2、编辑模式(Insert Mode):用于插入文本,按下i
键进入该模式。
3、命令行模式(Command Mode):用于执行保存、退出等命令,按下:
键进入该模式。
使用Esc
键可以随时返回一般模式。
三、Vim 常用操作命令
类别 | 命令 | 描述 |
移动光标 | h 、j 、k 、l | 左、下、上、右移动光标 |
单词为单位移动 | w 、b | 正向、反向移动到相邻单词的首字符 |
翻页 | Ctrl+f 、Ctrl+b | 向下、向上翻页 |
查找 | /word 、?word | 向下、向上查找word |
删除 | x 、dd | 删除当前字符、删除当前行 |
复制 | yy 、y1G | 复制当前行、复制从第一行到当前行 |
粘贴 | p 、P | 在下方、上方粘贴 |
编辑 | i 、I 、a 、o 、O | 在光标前、行首、后、下一行开始、上一行开始插入 |
保存与退出 | :w 、:q 、:wq | 保存、退出、保存并退出 |
撤销与重做 | u 、Ctrl+r | 撤销上次操作、重做上次操作 |
替换 | :s/old/new/g | 将当前行中的所有old 替换为new |
四、Vim 插件管理
1. Vundle 插件管理器
Vundle 是一个流行的 Vim 插件管理器,可以轻松安装和管理 Vim 插件,首先安装 Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
然后编辑.vimrc
,添加以下内容:
set nocompatible " 使用 Vim 默认设置 filetype off " 关闭文件类型检测 set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " 开始插件管理器 Plugin 'VundleVim/Vundle.vim' Plugin 'tpope/vim-sensible' " 提高 Vim 的行为合理性 Plugin 'vim-airline/vim-airline' " 状态栏美化 Plugin 'junegunn/fzf' " 模糊查找器 Plugin 'Shougo/deoplete.nvim' " 异步补全框架 Plugin 'morhetz/gruvbox' " 配色方案 call vundle#end() " 结束插件管理器 filetype plugin indent on " 开启文件类型检测和缩进
保存后,运行以下命令安装插件:
vim +PluginInstall +qall
2. 常用插件及配置
NERDTree(目录树):安装并配置 NERDTree,方便浏览文件系统。
Tagbar(代码结构):生成并查看源代码的结构标签。
vim-airline(状态栏美化):美化 Vim 的状态栏。
NERDCommenter(代码注释器):快速注释和取消注释代码。
vim-illuminate(单词突出/高亮):高亮显示当前光标所在的单词。
IndentLine(缩进提示):显示代码的缩进级别。
五、Vim 高级配置示例
以下是一个详细的.vimrc
配置示例,集成了多种插件和功能:
" 基础设置 set nocompatible " 使用 Vim 默认设置 set number " 显示行号 set tabstop=4 " 设置制表符为4个空格 set shiftwidth=4 " 自动缩进时使用4个空格 set expandtab " 使用空格代替制表符 set autoindent " 自动缩进 set smartindent " 智能缩进 set incsearch " 搜索时实时显示结果 set hlsearch " 高亮搜索结果 set ignorecase " 忽略大小写搜索 set showmatch " 显示匹配括号 set ruler " 显示当前位置 set laststatus=2 " 始终显示状态栏 set showcmd " 显示最后一条命令 set wildmenu " 支持菜单补全 set mouse=a " 鼠标所有模式下可用 set clipboard=unnamedplus " 使用系统剪贴板 set backspace=indent,eol,start " 退格键支持更多场景 set writeanywhere " 允许在任何位置写入 " 外观设置 colorscheme gruvbox " 使用 gruvbox 配色方案 set background=dark " 深色背景 set cursorline " 高亮当前行 set cursorline nr=" " 仅在正常模式下高亮行号 " 插件设置 call plug_begin('~/.vim/plugged') " 插件列表 Plug 'VundleVim/Vundle.vim' Plug 'tpope/vim-sensible' Plug 'vim-airline/vim-airline' Plug 'junegunn/fzf' Plug 'Shougo/deoplete.nvim', { 'do': 'yarn install --frozen-lockfile' } Plug 'morhetz/gruvbox' Plug 'preservim/nerdtree' Plug 'majutsushi/tagbar' Plug 'numToStr/FZF' Plug 'Yggdrash/indentLine' Plug 'tpope/vim-fugitive' Plug 'ctrlpvim/ctrlp.vim' Plug 'airblade/vim-rooter' Plug 'junegunn/vim-plug' Plug 'fatih/vim-ruby-debugger' Plug 'hashivi/vim-terraform' Plug 'Wansmer/vim-slack' Plug 'tpope/vim-obsession' Plug 'tpope/vim-unimpaired' Plug 'AndrewRadev/splitjoin.vim' Plug 'AndrewRadev/switch.vim' Plug 'AndrewRadev/tagalong.vim' Plug 'AndrewRadev/pywall.vim' Plug 'AndrewRadev/completion-nvim' Plug 'AndrewRadev/csv.vim' Plug 'AndrewRadev/vim-makegood-eighty' Plug 'AndrewRadev/vim-makegood-eighty-column' Plug 'AndrewRadev/modeline-mate' Plug 'AndrewRadev/neovim-remote' Plug 'AndrewRadev/neovim-qt' Plug 'AndrewRadev/neovim-qt-gtk' Plug 'AndrewRadev/neovim-qt-mac' Plug 'AndrewRadev/neovim-qt-technicolor' Plug 'AndrewRadev/neovim-qt-termbg' Plug 'AndrewRadev/neovim-qt-desktopnotify' Plug 'AndrewRadev/neovim-qt-clipboard' Plug 'AndrewRadev/neovim-qt-clipboardwin' Plug 'AndrewRadev/neovim-qt-floaterm' Plug 'AndrewRadev/neovim-qt-floaterm-nvim' Plug 'AndrewRadev/neovim-qt-floaterm-native' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-linux' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-macos' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-windows' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl2' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin32' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw32' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl32' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-32bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-32bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-32bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-64bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-64bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-64bit' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-arm64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-arm64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-arm64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-aarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-aarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-aarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-riscv64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-riscv64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-riscv64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-ppc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-ppc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-ppc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-sparc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-sparc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-sparc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-alpha222' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-alpha222' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-alpha222' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-mips64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-mips64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-mips64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-loongarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-loongarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-loongarch64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-powerpc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-powerpc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-powerpc64' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-cygwin64-s390x' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-mingw64-s390x' Plug 'AndrewRadev/neovim-qt-floaterm-nvim-wsl64-s390x' Plug 'AndrewRadev/neovim/init.vim' " Neovim specific configurations go here! Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' " Fuzzy finder for Vim commands and buffers etc. Plug 'voldikss/vim-translator' " Translate selected text using Google Translate API. Plug 'plasticboy/vim-markdown' " Markdown preview in Vim. Plug 'tpope/vim-obsession' " Save and restore Vim sessions. Plug 'junegunn/vim-peekaboo' " Peek definitions without leaving the current file. Plug 'airblade/vim-gitgutter' " Show changes in the gutter next to lines. Plug 'tpope/vim-fugitive' " Git integration for Vim. Plug 'junegunn/fzf.bash' " Bash completion for FZF. Plug 'junegunn/fzf.zsh' " Zsh completion for FZF. Plug 'junegunn/fzf_history_widget.sh' " History widget for FZF. Plug 'junegunn/fzf_history_widget.zsh' " History widget for FZF (Zsh). Plug 'junegunn/fzf_history_widget.fish' " History widget for FZF (Fish). Plug 'junegunn/fzf_history_widget.bash' " History widget for FZF (Bash). Plug 'junegunn/fzf_history_widget.zsh' " History widget for FZF (Zsh). Plug 'junegunn/fzf_history_widget.fish' " History widget for FZF (Fish). Plug 'junegunn/fzf_history_widget.bash' " History widget for FZF (Bash). Plug 'junegunn/fzf_history_widget.zsh' " History widget for FZF (Zsh).
到此,以上就是小编对于“linux vi配置”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。