当前位置:首页 > 行业动态 > 正文

如何在Linux中配置vi编辑器以优化您的开发体验?

在Linux中配置vi或vim编辑器,可以通过修改其配置文件 .vimrc来定制快捷键、语法高亮、缩进规则等。

Linux vi配置

如何在Linux中配置vi编辑器以优化您的开发体验?  第1张

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配置”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

0