首页 > 其他分享 >四、nvim配置文件

四、nvim配置文件

时间:2024-06-10 10:21:37浏览次数:19  
标签:set 配置文件 noremap vim ctermbg let ctermfg nvim

这是一份没有插件的 neovim 配置。

init.vim

source $HOME/.config/nvim/general/settings.vim
source $HOME/.config/nvim/general/appearance.vim
source $HOME/.config/nvim/general/keyshortcuts.vim
source $HOME/.config/nvim/general/plugins.vim

下属四个子配置文件:

(一)settings.vim

set nocompatible  " 关闭 vi 兼容模式
set modelines=0  " 禁用模式行(安全措施)
set nobackup  " 不进行备份设置
set nowritebackup
set noswapfile  " 禁止产生交换文件
set autoread  " 自动检测文件外部更改

" === 中文显示
set langmenu=zh_CN.UTF-8
set helplang=cn
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030

" === 环境变量
let g:python3_host_prog = expand("/usr/bin/python3") 
let g:markdown_fenced_languages =['c', 'cpp', 'python', 'javascript']

" === 智能提示相关
syntax enable " 语法高亮
filetype on  " 文件类型检测
filetype plugin indent on  " 根据文件类型自动缩进


" === 显示相关
set termguicolors
set background=dark
" colorscheme desert
set showtabline=2 " 始终显示顶部tabline
set number  " 显示绝对行号
" set relativenumber  " 显示相对行号(和绝对行号的设置冲突)
set ruler  " 显示标尺:右下角显示光标位置
" set cursorline  " 高亮显示当前行(256色是一条横线,真彩显示才是高亮)
" set nowrap  " 不自动折行显示
set pumheight=10  " 弹出菜单的高度
set splitbelow  " 左右分割窗口时,新窗口默认出现在右侧
set splitright  " 水平分割窗口时,新窗口默认出现在底部
set ambiwidth=double  " 中文标点显示一致
set sidescroll=10  " 移动到看不见的字符时,自动向右滚动10个字符
set sm!  " 高亮显示匹配括号
set novisualbell  " 不要闪烁
set showcmd  " select 模式下显示选中的行数
set vb t_vb=  " 不要响铃

" === 光标样式
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_SR = "\<Esc>]50;CursorShape=2\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
" set virtualedit=block,onemore   " 允许光标出现在最后一个字符的后面

" === 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T

" === 操作相关
set mouse="" " 不使用鼠标
" set mouse=a  " 使用鼠标
" set mousehide  " 输入时隐藏光标
set hidden  " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set iskeyword+=-  " 将 - 分隔的单词作为一个单词文本对象
set backspace=2  " 允许退格键Backspace删除 indent,eol,start
set conceallevel=0  " 在 markdonw 文件中可以看到 `` 符号
autocmd BufWritePost $MYVIMRC source $MYVIMRC  " 修改配置时,自动加载文件
" =(start)= 跨会话撤销,即新打开的文件依然能够撤销之前的 undo
set undofile
set undodir=~/.cache/nvim/undodir
if !isdirectory(&undodir)
   call mkdir(&undodir, "p", 0700)
endif
" =(end)=
" set autochdir  " 自动切换工作目录

" == 搜索查找相关
set ignorecase  " 搜索忽略大小写
set smartcase  " 智能匹配大小写
set hlsearch  " 高亮查找匹配
set incsearch  " 开始实时搜索功能

" === 缩进相关
set autoindent  " 开始新行时处理缩进
set smartindent  " 智能缩进
set smarttab  " 在行和段开始处使用制表符
set tabstop=4  " 编辑时制表符占用空格数
set shiftwidth=4  " 格式化时,制表符占用的空格数
set softtabstop=4  " 设置 4 个空格为制表符
set expandtab  " 将制表符Tab展开为空格, 这对于Python尤其有用

" === 代码补全
set completeopt=longest,menu  " 让Vim补全菜单行为跟IDE一致
set wildmenu                             " vim自身命名行模式智能补全
set completeopt=menuone,preview,noselect " 补全时不显示窗口,只显示补全列表
set omnifunc=syntaxcomplete#Complete     " 设置全能补全
set shortmess+=c                         " 设置补全静默
set cpt+=kspell                          " 设置补全单词

(二)keyshortcuts.vim

let mapleader=' '
" 模式切换
inoremap jk <ESC>

" Window
noremap <Leader>wn <C-w>w
noremap <Leader>wh <C-w><left>
noremap <Leader>wl <C-w><right>
noremap <Leader>wk <C-w><up>
noremap <Leader>wj <C-w><down>
noremap <Leader>wv :vs<CR>
noremap <Leader>ws :sp<CR>
noremap <Leader>w= <C-w>=
noremap <Leader>w+ <C-w>5>
noremap <Leader>w- <C-w>5<

" Buffer
noremap <Leader>bp :bp<CR>
noremap <Leader>bn :bn<CR>

" Tab
noremap <Leader>tn :tabnew<CR>
noremap <Leader>tn :tabnext<CR>
noremap <Leader>tp :tabprevious<CR>
noremap <Leader>tc :tabc<CR>

" 使用 \ + s 保存, \ + q 退出
noremap <Leader>fs :w<CR>
noremap <Leader>qq :q<CR>

" 打开或关闭目录树
nnoremap <leader>fe :Lexplore<CR>

(三)appearance.vim

" ===== 状态行 =====
set laststatus=2  " 始终显示状态栏  
set cmdheight=2  " 命令行区的高度  

" %F 完整文件路径名;%m 当前缓冲被修改标记;%r 当前缓冲只读标记  
" %h 帮助缓冲标记;%w 预览缓冲标记
set statusline=%1*%F%m%r%h%w%=\ 
" %Y 文件类型
set statusline+=%2*\ %Y\ \|\
" %{...} 评估表达式的值,并用值代替  
" %{"[fenc=".(&fenc==""?&enc:&fenc).((exists("+bomb") && &bomb)?"+":"")."]"} 显示文件编码  
set statusline+=%3*%{\"\".(\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\"+\":\"\").\"\"}\
" %l 行数;%v 列数  
set statusline+=%4*[%l:%v]\ 
" %p 当前行数占总行数的的百分比
set statusline+=%5*%p%%\ \|\
" %L 总行数
set statusline+=%6*%LL\
" 其他可用配置:%b ASCII值;%B 十六进制值;%{&ff} 显示文件类型

" 颜色
hi User1 cterm=none ctermfg=gray ctermbg=darkgray
hi User2 cterm=none ctermfg=darkgrey ctermbg=darkgray
hi User3 cterm=bold ctermfg=darkgrey ctermbg=gray
hi User4 cterm=bold ctermfg=yellow ctermbg=gray
hi User5 cterm=none ctermfg=darkgrey ctermbg=gray
hi User6 cterm=none ctermfg=darkgrey ctermbg=gray

" ===== Tabline 文件选项卡 =====
" Tabline 背景色
hi TabLineFill term=reverse ctermfg=5 ctermbg=7 guibg=#6c6c6c
" 设置 tab 选中状态时的颜色
hi SelectTabLine term=Bold cterm=Bold ctermfg=DarkYellow ctermbg=LightGray
hi SelectPageNum cterm=None ctermfg=DarkRed ctermbg=LightGray
hi SelectWindowsNum cterm=None ctermfg=DarkCyan ctermbg=LightGray
" 设置 tab 未选中状态时的颜色
hi NormalTabLine cterm=None ctermfg=Gray ctermbg=DarkGray
hi NormalPageNum cterm=None ctermfg=Gray ctermbg=DarkGray
hi NormalWindowsNum cterm=None ctermfg=Gray ctermbg=DarkGray

" 设置每个 tab 的显示样式,比如使用「」包裹
function MyTabLine()
    let s = ''
    for i in range(tabpagenr('$'))
        " select the highlighting
        let hlTab = ''
        let select = 0
        if i + 1 == tabpagenr()
            let hlTab = '%#SelectTabLine#'
            let s ..= hlTab . '⎡%#SelectPageNum#%T' . (i + 1) . hlTab
            let select = 1
        else
            let hlTab = '%#NormalTabLine#'
            let s ..= hlTab . "⎡%#NormalTabLine#%T" . (i + 1) . hlTab
        endif

        " the label is made by MyTabLabel()
        let s .= ' %<%{MyTabLabel(' . (i + 1) . ', ' . select . ')} '
        "追加窗口数量
        let wincount = tabpagewinnr(i + 1, '$')
        if wincount > 1
            if select == 1
                let s .= "%#SelectWindowsNum#" . wincount
            else
                let s .= "%#NormalWindowsNum#" . wincount
            endif
        endif
        let s .= hlTab . "⎦"
    endfor

    " after the last tab fill with TabLineFill and reset tab page nr
    let s ..= '%#TabLineFill#%T'

    " right-align the label to close the current tab page
    if tabpagenr('$') > 1
      let s ..= '%=%#TabLine#%999X░❨X❩'
    endif

    return s
endfunction

" Now the MyTabLabel() function is called for each tab page to get its label. >
function MyTabLabel(n, select)
    let label = ''
    let buflist = tabpagebuflist(a:n)

    for bufnr in buflist
        if getbufvar(bufnr, "&modified")
            let label = '+'
            break
        endif
    endfor

    let winnr = tabpagewinnr(a:n)
    let name = bufname(buflist[winnr - 1])

    if name == ''
        if &buftype == 'quickfix'
            let name = '[Quickfix List]'
        else
            let name = '[No Name]'
        endif
    else
        let name = fnamemodify(name, ':t')
    endif

    let label .= name
    return label
endfunction

set tabline=%!MyTabLine()

" ===== netrw 文件资源管理器 =====
let g:netrw_banner = 0         " 设置是否显示横幅
let g:netrw_liststyle = 3      " 设置目录列表样式:树形
let g:netrw_browse_split = 4   " 在之前的窗口编辑文件
let g:netrw_altv = 1           " 水平分割时,文件浏览器始终显示在左边
let g:netrw_winsize = 25       " 设置文件浏览器窗口宽度为25%
let g:netrw_list_hide= '^\..*' " 不显示隐藏文件 用 a 键就可以显示所有文件、 隐藏匹配文件或只显示匹配文件

(四)plugins.vim

call plug#begin("~/.config/nvim/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'

" 这里只添加了 coc 一个插件
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Initialize plugin system
" - Automatically executes `filetype plugin indent on` and `syntax enable`.
call plug#end()

标签:set,配置文件,noremap,vim,ctermbg,let,ctermfg,nvim
From: https://www.cnblogs.com/7ytr5/p/18239504

相关文章

  • 从零手写实现 nginx-13-nginx.conf 配置例子解释 + nginx 配置文件要如何解析?
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • SpringBoot配置文件敏感信息加密方案
    在SpringBootProject中,会将一些敏感信息配置到application.yml/application.properties配置文件中(同样适用于SpringCloud的各个微服务其实(微服务实例)本质就是一个SpringBoot),例如数据库的用户名和密码、Redis的密码等。为了保证敏感信息的安全,我们需要将此类数据进行加密配置。J......
  • spring和Mybatis的核心配置文件
    目录四、核心配置文件详解五、MyBatis获取参数值的两种方式5.1、搭建新的module:mybatis_parameter5.2、单个字面量类型的参数5.3、多个字面量类型的参数5.3、map集合类型的参数5.4、实体类类型的参数用的较多5.5、使用@Param标识参数四、核心配置文件详解<?xmlversion="1.0"......
  • conda的配置文件.condarc频道优先级和定义频道
    先观察清华源的conda配置文件:channels:-defaultsshow_channel_urls:truedefault_channels:-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r-https://mirrors.tuna.tsinghua.edu.cn/anaconda......
  • 60款柯达Kodak电影胶片调色预设SP-3000扫描仪配置文件2383电影卷2393视频lut优质精选
    60款柯达Kodak电影胶片调色预设SP-3000扫描仪配置文件2383电影卷2393视频lut优质精选预设预设在精不在多,素材湾倾心提供优质精选预设并整理安装使用教学助你学习工作中提升效率,更多时间专心于优质创作。*包含内容:5组共60款柯达电影胶片调色预设1款柯达SP-3000扫描仪配置(XMP......
  • YOLOV5 配置文件
    模型配置anchors=[[(10,13),(16,30),(33,23)],#多尺度的先验框基本尺寸,(在三个尺度的特征图上放置anchors)[(30,61),(62,45),(59,119)],[(116,90),(156,198),(373,326)]]strides=[8,16,32]#先验框生成器的步幅model=dict......
  • Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
    打包与运行window版本上制作我们要把idea中的程序抽取出来作为一个独立的jar包把jar包放到服务器上服务器是长期运行的我们就能随时访问了在Maven的生命周期中选择package打包功能在资源管理器中查找java-jar文件名.jarjava-jar文件名.jar但是我们在测试里面......
  • YOLOv5训练数据集的配置文件格式与使用技巧
    文章目录一·概述二·配置文件说明2.1官方配置文件解析2.2自定义数据集配置文件2.3其他格式指定数据集路径2.4多个数据集路径指定三·总结注意事项一·概述本文档主要记录YOLOv5算法在进行模型训练前,关于加载数据集的配置文件的说明。默认情况下,YOLOv5......
  • 浅谈SpringBoot配置文件
    文章目录一、配置文件作用二、配置文件分类三、SpringBoot内置的配置文件格式3.1、.properties3.1.1、.properties配置语法3.1.2、.properties读取方式3.2、.yml/.yaml3.2.1、.yml配置语法3.2.2、.yml读取形式四、两种配置文件优缺点4.1、.properties4.2、.yml4.2.1、......
  • 学习Django【2】把视图和路由连接起来的是URLconfigs的配置文件
    在view.py视图中定义:defdetail(request,question_id):returnHttpResponse("You'relookingatquestion%s."%question_id)defresults(request,question_id):response="You'relookingattheresultsofquestion%s."......