2024年,小白怎样快速配置上手nvim?带你真正理解nvim配置过程–for linux

2024年,小白怎样快速配置上手nvim?带你真正理解nvim配置过程–for linux简单说 nvim neovim 是一个开源的 vim 重构项目

大家好,欢迎来到IT知识分享网。

nvim介绍

简单说,nvim ( neovim ) 是一个开源的vim重构项目。

与vim相比,nvim具有更现代化的代码库和架构,更好的可扩展性和更好的性能。

同时,nvim支持几乎所有的vim插件,同时nvim深度集成了lua,如果你熟悉这种脚本语言,它将会大大提升你的配置效率。(本文我们主要讲更加通用的做法,即使用vim script的做法)

安装nvim

在linux平台,你可以在各个发行版的包管理工具中下载nvim,例如在debian系发行版中,可以使用

sudo apt install neovim 

安装后 ,可以通过在命令行输入

nvim -v 

检查安装,如果正确安装,应该显示安装的nvim的版本号。如下:

NVIM v0.7.2 Build type: Release LuaJIT 2.1.0-beta3 Compiled by  Features: +acl +iconv +tui See ":help feature-compile" system vimrc file: "$VIM/sysinit.vim" fall-back for $VIM: "/usr/share/nvim" Run :checkhealth for more info 

显示出类似的内容,说明安装成功。

基础使用

如果你有vim基础,建议跳过这一部分。

在基础的使用方式上,nvim与vim基本一致,在这里我们简单讲讲。

vim ( nvim ) 共有四种模式,即Normal模式、Command模式、Insert模式、Visible模式:

  • Normal模式
    这是你进入 nvim 时的默认模式,也是所有模式切换的中转站。
    在这里,你可以按ai进入Insert模式,或者按v进入Visable模式。

在Normal模式下,你不能输入,但可以使用快捷键对文档进行查找、替换、滚动等操作:
移动光标:类似fps游戏中的wasd,vim使用h(左)、j(下)、k(上)、l(右) 移动光标,
滚动屏幕:Ctrl + E 向上滚动,Ctrl + Y 向下滚动

  • Command模式
    在Normal模式下按:可以进入Command模式。
    在Command模式下,你可以输入命令。
    如常用的:
    w:
    q:
    /字符:
    数字:
    %s:







  • Insert模式
  • 即输入模式,这个模式下和其他编辑器差异不大。
  • visible模式
  • 相当于其他编辑其中的选中,你可以对选中的文本进行移动、复制等操作。

基础配置

nvim使用~/.config/nvim/init.vim对当前用户进行配置。

我强烈建议你逐条添加到 init.vim 中并在添加过程中运行观察效果,这对你理解配置文件很有帮助。完整的 init.vim 我会放在文末。

首先是一些基础的配置

 set nu "显示行号 set tabstop=4 set shiftwidth=4 set expandtab set tabstop "set nobackup "set cursorline syntax enable set laststatus=2 set backspace=2 

这些配置未必适合你,你可以根据你的需要去除某些配置,只需在行首添加 "将其变为注释即可。同样的,如果你有自己的配置需求,也可以直接添加在这里。

接下来是键盘映射。我的配置可以供你参考。

 imap jk <esc> imap Jk <esc> imap jK <esc> imap JK <esc> map <space> viw " -键 作为删除一行 map - dd " insert 模式下删除一行 inoremap <c-d> <esc>ddi " ctrl+u 插入模式转换当前单词为大写 "inoremap <c-u> <esc>viwUi "leader 默认为\ nnoremap <leader>d dd "重读我的vimrc文件 nnoremap <leader>sv :source $MYVIMRC<cr> "打开我的vimrc配置文件 nnoremap <leader>ev :vsp $MYVIMRC<cr> "普通模式下,双引号包括当前单词 nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel " abbreviations 缩略语 可以用于自动修改 iabbrev adn and 

插件

nvim的另一大魅力在于其庞大的插件社区。

这里我们使用vim-plug作为插件管理器。
项目地址:https://github.com/junegunn/vim-plug

首先安装vim-plug

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' 

然后我们来配置init.vim

为了调用vim-plug,我们要在init.vim中添加

call plug#begin('~/.vim/plugged') call plug#end() 

并在中间添加你要使用的插件。

添加后,打开nvim,输入命令:PluginInstall,安装插件,vim-plug会自动读取init.vim中的插件列表。
安装完成后,重新进入nvim就可以使用了。

附完整版init.vim供参考:

" _ _ __ _ " (_)___ (_) /__ __(_)___ ___ " / / __ \/ / __/ | / / / __ `__ \ " / / / / / / /__| |/ / / / / / / / " /_/_/ /_/_/\__(_)___/_/_/ /_/ /_/ " " echom "Never Give Up Your Dream!!! >^.^<" let g:python3_host_prog = '/usr/bin/python3.12' " 替换为全局 Python 解释器的路径 set nu "显示行号 set tabstop=4 set shiftwidth=4 set expandtab set tabstop "set nobackup " set cursorline "set ruler "set autoindent "set hlsearch syntax enable "set nocompatible "set autochdir "set guifont=Consolas:h17 set laststatus=2 set backspace=2 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " -START- key mapping """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" imap jk <esc> imap Jk <esc> imap jK <esc> imap JK <esc> map <space> viw " -键 作为删除一行 map - dd " insert 模式下删除一行 inoremap <c-d> <esc>ddi " ctrl+u 插入模式转换当前单词为大写 "inoremap <c-u> <esc>viwUi "leader 默认为\ nnoremap <leader>d dd "重读我的vimrc文件 nnoremap <leader>sv :source $MYVIMRC<cr> "打开我的vimrc配置文件 nnoremap <leader>ev :vsp $MYVIMRC<cr> "普通模式下,双引号包括当前单词 nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel " abbreviations 缩略语 可以用于自动修改 iabbrev adn and """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " -END- key mapping """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "文件编码模式指定utf set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 "智能缩进,当匹配到func main() {} 当在大括号中间回车的时候,他会智能缩进 set smartindent "自动缩进,当你第一行敲 tab + 文字 回车后 下一行自动给你加个 tab set autoindent "代码折叠 "set foldmethod=indent "保存和加载视图 "augroup AutoSaveFolds "autocmd! "au BufWinLeave ?* mkview 1 "au BufWinEnter ?* silent loadview 1 "au BufWinEnter ?* if filereadable(expand('%')) | silent loadview 1| endif "au BufWinEnter ?* if filereadable("~/.local/share/nvim/view/~=+.config=+nvim=+".expand("%:p:h")."=1.vim") | silent loadview | endif "augroup END "用空格来切换折叠状态 "nnoremap <space> za """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " -START- Plugin config """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" call plug#begin('~/.vim/plugged') " " " Make sure you use single quotes " " " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align " Plug 'junegunn/vim-easy-align' " " " Any valid git URL is allowed " Plug 'https://github.com/junegunn/vim-github-dashboard.git' " " " " Multiple Plug commands can be written in a single line using | separators " " tab自动补全 Plug 'ervandew/supertab' Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' let g:UltiSnipsSnippetDirectories=["~/Documents/UltiSnips"] "let g:UltiSnipsExpandTrigger="<c-s>" "let g:UltiSnipsJumpForwardTrigger="<s-tab>" "let g:UltiSnipsEditSplit="vertical" " " " On-demand loading Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } | Plug 'Xuyuanp/nerdtree-git-plugin' map <C-n> :NERDTreeToggle<CR> " 回车右侧函数表 Plug 'majutsushi/tagbar' """ctags 并且软连接 ctags """为当前环境变量的ctags,然后利用ctags生成tags文件给vim函数分屏读取 let g:tagbar_right=1 set tags=tags; set autochdir "ctrl+m开启文件tagbar(就是函数提示分屏) map <cr> :TagbarToggle<CR> Plug 'vim-airline/vim-airline' | Plug 'vim-airline/vim-airline-themes' let g:airline_theme='bubblegum' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' "let g:airline_statusline_ontop=1 "let g:airline#extensions#tabline#formatter = 'unique_tail' " 可视化缩进 Plug 'nathanaelkane/vim-indent-guides' "代码缩进块显示 + 奇偶行缩进颜色配置 + 缩进块宽度 let g:indent_guides_enable_on_vim_startup = 1 let g:indent_guides_guide_size = 1 let g:indent_guides_auto_colors = 0 autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd ctermbg=237 autocmd VimEnter,Colorscheme * :hi IndentGuidesEven ctermbg=236 let g:indent_guides_exclude_filetypes = ['help', 'nerdtree'] let g:indent_guides_color_change_percent = 1 "彩虹括号 Plug 'kien/rainbow_parentheses.vim' 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'], \ ] let g:rbpt_max = 16 let g:rbpt_loadcmd_toggle = 0 au VimEnter * RainbowParenthesesToggle au Syntax * RainbowParenthesesLoadRound au Syntax * RainbowParenthesesLoadSquare au Syntax * RainbowParenthesesLoadBraces " 括号自动匹配 Plug 'jiangmiao/auto-pairs' " 真彩色 "Plug 'tpope/vim-sensible' "set termguicolors "if &term =~# '^screen' "let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" "let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" "endif " git左边栏增删改提示 Plug 'airblade/vim-gitgutter' set updatetime=100 highlight GitGutterAdd guifg=#009900 ctermfg=2 ctermbg=39 highlight GitGutterChange guifg=#bbbb00 ctermfg=3 ctermbg=204 highlight GitGutterDelete guifg=#ff2222 ctermfg=1 ctermbg=59 " 快乐搜索 Plug 'Lokaltog/vim-easymotion' let g:EasyMotion_smartcase = 1 nmap fw <Plug>(easymotion-w) nmap fW <Plug>(easymotion-b) nmap fe <Plug>(easymotion-e) nmap fE <Plug>(easymotion-E) nmap fj <Plug>(easymotion-j) nmap fk <Plug>(easymotion-k) nmap fh <Plug>(easymotion-linebackward) nmap fl <Plug>(easymotion-lineforward) nmap n <Plug>(easymotion-next) nmap N <Plug>(easymotion-prev) map / <Plug>(easymotion-sn) omap / <Plug>(easymotion-tn) "find target charater nmap fc <Plug>(easymotion-overwin-f) " latex support Plug 'lervag/vimtex' Plug 'KeitaNakamura/tex-conceal.vim', {'for': 'tex'} "latex的自动替换插件 filetype plugin indent on syntax enable let g:tex_flavor='latex' let g:vimtex_compiler_method = 'latexmk' let g:vimtex_view_method='zathura' "let g:vimtex_view_general_viewer = 'okular' let g:vimtex_view_general_options = '--unique file:@pdf\#src:@line@tex' let g:vimtex_compiler_latexmk_engines = { \ '_' : '-pdf', \ 'pdflatex' : '-pdf', \ 'dvipdfex' : '-pdfdvi', \ 'lualatex' : '-lualatex', \ 'xelatex' : '-xelatex', \ 'context (pdftex)' : '-pdf -pdflatex=texexec', \ 'context (luatex)' : '-pdf -pdflatex=context', \ 'context (xetex)' : '-pdf -pdflatex=''texexec --xtx''', \} let g:vimtex_compiler_latexmk = {'aux_dir': {-> expand("%:p:h")."/output"}, 'out_dir' : {-> expand("%:p:h")."/output"}} "let g:vimtex_quickfix_mode=0 "let g:vimtex_quickfix_enable=0 " let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]" let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]" let g:tex_conceal_frac=1 set conceallevel=1 let g:tex_conceal="abdgm" " python折叠 Plug 'tmhedberg/SimpylFold' let g:SimpylFold_docstring_preview = 1 "coq自动补全插件 " main one Plug 'ms-jpq/coq_nvim', {'branch': 'coq'} " 9000+ Snippets Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'} "let g:coq_settings = { 'auto_start': v:true } or let g:coq_settings = { 'auto_start': 'shut-up' } let g:coq_settings = { 'auto_start': v:true } " lua & third party sources -- See https://github.com/ms-jpq/coq.thirdparty " Need to configure separately Plug 'ms-jpq/coq.thirdparty', {'branch': '3p'} Plug 'mhinz/vim-startify' " " Plugin outside ~/.vim/plugged with post-update hook " Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " " " Unmanaged plugin (manually installed and updated) " Plug '~/my-prototype-plugin' " " " Initialize plugin system call plug#end() """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " -END- Plugin config """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115320.html

(0)
上一篇 2025-12-03 16:33
下一篇 2025-12-03 17:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信