美文网首页
vim简单使用与介绍

vim简单使用与介绍

作者: 一点朱砂印 | 来源:发表于2024-03-22 22:20 被阅读0次

    # vim使用介绍

    照着配置了许多,也参考了许多,但是始终没有找到一个好的方法,用起来不太爽

    基础的操作方法这里就不写了。网上很多。

    - 全篇在linux下实践

    # 基础的配置命令解释

    '''

    "搜索忽略大小写

    set ignorecase

    "搜索逐字符高亮

    set hlsearch

    set incsearch

    "设置字体

    set guifont=Consolas:h12:cANSI

    "设置搜索高亮 ,取消请使用set nohlsearch

    set hlsearch

    " 关闭 .swp 文件

    set noswapfile

    " 显示行号;取消显示可输入 set nonu

    set number

    " 突出显示当前行

    set cursorline

    "去掉讨厌的有关 vim 一致性模式,避免以前版本的一些 bug 和局限.

    set nocompatible

    "否则无法使用退格键

    set backspace=indent,eol,start

    "开启语法高亮

    syntax on

    "设置命令历史记录为10条.

    set history=100

    "设置替换 tab 键 [缩进]

    set expandtab

    "设置 tab 键为4个空格.

    set tabstop=4

    set softtabstop=4

    "设置当行之间交错时使用4个空格

    set shiftwidth=4

    "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

    set showmatch

    "搜索选项.(比如,键入"/bo",光标自动找到第一个"bo"所在的位置.)

    set noincsearch

    "字符集

    set fileencodings=ucs-bom,utf-8,chinese,cp936

    "依据上面的对起格式,智能的选择对起方式,对于类似C语言编.

    "set smartindent

    "自动缩进

    "set autoindent

    "C风格缩进

    set cindent

    "设置文件类型

    " set filetype=php

    set filetype=go

    "set filetype=html

    " 用空格键来开关代码折叠

    set foldenable

    " 手动折叠代码

    " set foldmethod=manual

    " 按缩进自动折叠代码

    " set foldmethod=indent

    " 按语法高亮折叠代码

    " set foldmethod=syntax

    " 按标记折叠代码

    set foldmethod=marker

    " 自动写入

    set autowrite

    " 自动读取

    set autoread

    "自动缩进

    set ai

    '''

    # 命令

    >:Toc  --->创建一个快速垂直窗口显示文档目录 

    >:Toch  --->创建一个快速水平窗口显示文档目录 

    # 插件的使用,主要介绍如何使用插件

    ## 插件管理工具vim-plug

    前置条件,先安装一个插件管理工具,不然一个一个的拷贝也比较复杂,不爽利。

    在这里我使用的是vim-plug

    - 安装vim-plug

    下载:git clone

    > git clone https://github.com/junegunn/vim-plug.git

    将文件plug.vim拷贝到/usr/share/vim/vim80/autoload/

    > sudo cp vim-plug/plug.vim /usr/share/vim/vim80/autoload/

    - 使用此工具,vimrc中写入

    '''

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

      .....         

      Plug 'xxxxxxx'

      .....

    call plug#end()

    '''

    > call plug#begin('~/.vim/plugged')  插件开始的地方

    > call plug#end() 插件结束的地方

    > Plug 'xxxxxxx' 要使用的插件

    - 当写好配置后

    随意在终端中启动vim

    输入

    > :PlugInstall

    等待插件安装完成

    其它命令,自行搜索

    ## 代码补全

    网上这种也挺多,我用的coc

    - 安装依赖 nodejs 方法不一,但是系统直装的不一定能用,所以这里写了两种方法

    > sudo apt-get install -y nodejs

    > https://nodejs.cn/download/#google_vignette

    > sudo mv node-v18.19.1-linux-x64 /usr/local/node18

    sudo ln -s /usr/local/node18/bin/npm /usr/bin/npm

    sudo ln -s /usr/local/node18/bin/node /usr/bin/node

    - 插件安装

    > Plug 'neoclide/coc.nvim', {'branch': 'release'}

    - 插件使用

    在配置中加入

    '''

    let g:coc_global_extensions = [

        \ 'coc-marketplace',

        \ 'coc-json',

        \ 'coc-vimlsp',

        \ 'coc-markdownlint',

        \ 'coc-sh',

        \ 'coc-pyright',

        \ 'coc-yaml',

        \ 'coc-tabnine',

        \ 'coc-translator',

        \ 'coc-snippets',

        \ 'coc-java',

        \ 'coc-java-intellicode',

        \ 'coc-xml',

        \ 'clangd',

        \]

    '''

    配置coc

    > 打开vim(nvim),命令模式下输入:CocConfig进行配置。也可以编辑默认目录下的文件~/.config/nvim/coc-settings.json

    '''

    {

      "coc.preferences.extensionUpdateCheck": "daily",

      "suggest.noselect": true,

      "suggest.enablePreselect": false,

      "suggest.autoTrigger": "always",

      "suggest.timeout": 5000,

      "suggest.enablePreview": true,

      "suggest.floatEnable": true,

      "suggest.detailField": "preview",

      "suggest.snippetIndicator": "",

      "suggest.triggerCompletionWait": 100,

      "suggest.echodocSupport": true,

      "suggest.completionItemKindLabels": {

        "class": "\uf0e8",

        "color": "\ue22b",

        "constant": "\uf8fe",

        "default": "\uf29c",

        "enum": "\uf435",

        "enumMember": "\uf02b",

        "event": "\ufacd",

        "field": "\uf93d",

        "file": "\uf723",

        "folder": "\uf115",

        "function": "\u0192",

        "interface": "\uf417",

        "keyword": "\uf1de",

        "method": "\uf6a6",

        "module": "\uf40d",

        "operator": "\uf915",

        "property": "\ue624",

        "reference": "\ufa46",

        "snippet": "\ue60b",

        "struct": "\ufb44",

        "text": "\ue612",

        "typeParameter": "\uf728",

        "unit": "\uf475",

        "value": "\uf89f",

        "variable": "\ue71b"

      },

      "diagnostic.errorSign": "\uf467",

      "diagnostic.warningSign": "\uf071",

      "diagnostic.infoSign": "\uf129",

      "diagnostic.hintSign": "\uf864",

      "diagnostic.displayByAle": false,

      "diagnostic.refreshOnInsertMode": false,

      "diagnostic.checkCurrentLine": true,

      "diagnostic.virtualTextPrefix": " ❯❯❯ ",

      "diagnostic.virtualText": true,

      "codeLens.enable": true,

      "list.previewHighlightGroup": "Statement",

      // 保存时调整格式

      "coc.preferences.formatOnSaveFiletypes": [

        "javascript",

        "typescript",

        "html",

        "css",

        "json",

        "java",

        "python",

        "vue",

        "c",

        "cpp",

        "markdown",

        "lua",

        "bash"

      ],

      "snippets.ultisnips.directories": [

        "$HOME/.vim/plugged/vim-snippets/UltiSnips"

      ],

      "coc.preferences.snippetStatusText": "Ⓢ ",

      "python.formatting.provider": "black",

      "java.configuration.runtimes": [

        {

          "name": "JavaSE-17",

          "path": "/usr/lib/jvm/java-17-openjdk-amd64"

        },

        {

          "name": "JavaSE-1.8",

          "path": "/usr/lib/jvm/jdk1.8.0_202/bin/java",

          "default": true

        }

      ],

      "languageserver": {

        "bash": {

          "command": "bash-language-server",

          "args": [

            "start"

          ],

          "filetypes": [

            "sh"

          ]

        }

      },

      "yaml.format.enable": true

    }

    '''

    ## NERDTree

    这个插件是几乎所有研发人员都会安装的一个插件——目录树,可以支持在不退出vim的编辑器的前提下,

    在文件中快速切换,同时能让开发人员快速掌握项目目录结构,

    是提升开发效率必不可少的工具。预览结果如下图所示:

    - 插件安装

    > Plug 'preservim/nerdtree'

    - 配置

    ## auto-pairs

    这个就是插件的功能简单而实用:在输入/删除左括号时,能自动补上/删除右括号。

    具体功能如下:

    ![alt text](image.png)

    - 安装

    >Plug 'jiangmiao/auto-pairs'

    使用

    开箱即用的插件,无需过多的配置。

    '''

    au Filetype FILETYPE let b:AutoPairs = {"(": ")"}

    au FileType php      let b:AutoPairs = AutoPairsDefine({'<?' : '?>', '<?php': '?>'})

    '''

    ## vim-airline

    vim-airline是vim的底部状态增强/美化插件

    其中vim-airline-themes是主题插件,可以使得状态栏的颜色更加丰富。

    - 安装

    >Plug 'vim-airline/vim-airline'

    Plug 'vim-airline/vim-airline-themes'

    - 配置

    '''

    set laststatus=2  "永远显示状态栏

    let g:airline_powerline_fonts = 1  " 支持 powerline 字体

    let g:airline#extensions#tabline#enabled = 1 “ 显示窗口tab和buffer

    let g:airline_theme='moloai'  " murmur配色不错

    if !exists('g:airline_symbols')

    let g:airline_symbols = {}

    endif

    let g:airline_left_sep = '▶'

    let g:airline_left_alt_sep = '❯'

    let g:airline_right_sep = '◀'

    let g:airline_right_alt_sep = '❮'

    let g:airline_symbols.linenr = '¶'

    let g:airline_symbols.branch = '⎇'

    '''

    ## ag

    > sudo apt-get install silversearcher-ag

    > Plug 'mileszs/ack.vim'

    '''

    if executable('ag')

      let g:ackprg = 'ag --vimgrep'

    endif

    let g:ackprg = 'ag --nogroup --nocolor --column'

    map <F2> :Ack<space>

    '''

    # 附录

    '''

    "搜索忽略大小写

    set ignorecase

    "搜索逐字符高亮

    set hlsearch

    set incsearch

    "设置字体

    set guifont=Consolas:h12:cANSI

    "设置搜索高亮 ,取消请使用set nohlsearch

    set hlsearch

    " 关闭 .swp 文件

    set noswapfile

    " 显示行号;取消显示可输入 set nonu

    set number

    " 突出显示当前行

    set cursorline

    "去掉讨厌的有关 vim 一致性模式,避免以前版本的一些 bug 和局限.

    set nocompatible

    "否则无法使用退格键

    set backspace=indent,eol,start

    "开启语法高亮

    syntax on

    "设置命令历史记录为10条.

    set history=100

    "设置替换 tab 键 [缩进]

    set expandtab

    "设置 tab 键为4个空格.

    set tabstop=4

    set softtabstop=4

    "设置当行之间交错时使用4个空格

    set shiftwidth=4

    "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

    set showmatch

    "搜索选项.(比如,键入"/bo",光标自动找到第一个"bo"所在的位置.)

    set noincsearch

    "字符集

    set fileencodings=ucs-bom,utf-8,chinese,cp936

    "依据上面的对起格式,智能的选择对起方式,对于类似C语言编.

    "set smartindent

    "自动缩进

    "set autoindent

    "C风格缩进

    set cindent

    "设置文件类型

    " set filetype=php

    set filetype=go

    "set filetype=html

    " 用空格键来开关代码折叠

    set foldenable

    " 手动折叠代码

    " set foldmethod=manual

    " 按缩进自动折叠代码

    " set foldmethod=indent

    " 按语法高亮折叠代码

    " set foldmethod=syntax

    " 按标记折叠代码

    set foldmethod=marker

    " 自动写入

    set autowrite

    " 自动读取

    set autoread

    "---------------------------------------------------------------------

    " 文件树的设置

    nmap <Leader><Leader> :NERDTreeToggle<CR>

    let NERDTreeWinSize=32

    " 设置NERDTree子窗口宽度

    let NERDTreeWinPos="left"      " 设置NERDTree子窗口位置

    let NERDTreeShowHidden=1        " 显示隐藏文件

    let NERDTreeMinimalUI=1        " NERDTree 子窗口中不显示冗余帮助信息

    let g:rainbow_conf = {

    \  'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],

    \  'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],

    \  'operators': '_,\|+\|-_',

    \  'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],

    \  'separately': {

    \      '*': {},

    \      'tex': {

    \          'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],

    \      },

    \      'css': 0,

    \  }

    \}

    "---------------------------------------------------------------------

    "主题gruvbox

    autocmd vimenter * nested colorscheme gruvbox

    set bg=dark

    ”--------------------------------------------------------------------

    "搜索

    if executable('ag')

      let g:ackprg = 'ag --vimgrep'

    endif

    let g:ackprg = 'ag --nogroup --nocolor --column'

    map <F2> :Ack<space>

    ”--------------------------------------------------------------------

    "窗口管理 WinManager

    let g:winManagerWindowLayout='FileExplorer|TagList'  "FileExplorer和TagList同时在左边窗口显示

    " let g:winManagerWindowLayout='FileExplorer,TagList'  "FileExplorer和TagList同时仅有一个在左边窗

    let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim

    nmap wm :WMToggle<cr>  " 打开/关闭WinManager

    ”--------------------------------------------------------------------

    “ ctags

    let Tlist_Ctags_Cmd='ctags'        "taglist依赖于ctags,设置ctags位置

    let Tlist_Use_Right_Window=0        "窗口显示:1--右边,0--左边

    let Tlist_Show_One_File=1          "显示一个文件:1--是 0--否

    let Tlist_File_Fold_Auto_Close=1    "非当前文件,函数列表折叠隐藏

    let Tlist_GainFocus_On_ToggleOpen = 1  "打开taglist时,光标保留在taglist窗口

    let Tlist_Exit_OnlyWindow=1        "当taglist是最后一个分割窗口时,自动退出vim

    let Tlist_Process_File_Always=1    "实时更新tags 1--是 0--否

    let Tlist_Inc_Winwidth=0

    nmap <leader>tl :Tlist<CR>

    ”--------------------------------------------------------------------

    “ markdown

    let g:vim_markdown_folding_disabled=1      "禁用折叠

    let g:vim_markdown_initial_foldlevel=1

    "let g:vim_markdown_no_default_key_mappings=1  "禁用默认键

    "对文件名后缀为md,mdown,mkd,mkdn,markdown,mdwn的文件,使用markdown语法

    au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=mkd

    ”--------------------------------------------------------------------

    " coc 代码补全

    let g:coc_global_extensions = [

        \ 'coc-marketplace',

        \ 'coc-json',

        \ 'coc-vimlsp',

        \ 'coc-markdownlint',

        \ 'coc-sh',

        \ 'coc-pyright',

        \ 'coc-yaml',

        \ 'coc-tabnine',

        \ 'coc-translator',

        \ 'coc-snippets',

        \ 'coc-java',

        \ 'coc-java-intellicode',

        \ 'coc-xml',

        \]

    ”--------------------------------------------------------------------

    " auto-pairs 括弧补全

    au Filetype FILETYPE let b:AutoPairs = {"(": ")"}

    au FileType php      let b:AutoPairs = AutoPairsDefine({'<?' : '?>', '<?php': '?>'})

    ”--------------------------------------------------------------------

    " vim-airline

    set laststatus=2  "永远显示状态栏

    let g:airline_powerline_fonts = 1  " 支持 powerline 字体

    let g:airline#extensions#tabline#enabled = 1 “ 显示窗口tab和buffer

    let g:airline_theme='moloai'  " murmur配色不错

    if !exists('g:airline_symbols')

    let g:airline_symbols = {}

    endif

    let g:airline_left_sep = '▶'

    let g:airline_left_alt_sep = '❯'

    let g:airline_right_sep = '◀'

    let g:airline_right_alt_sep = '❮'

    let g:airline_symbols.linenr = '¶'

    let g:airline_symbols.branch = '⎇'

    ”--------------------------------------------------------------------

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

    Plug 'scrooloose/nerdtree' 

    Plug 'vim-scripts/taglist.vim'

    Plug 'MwumLi/WinManager'

    Plug 'mileszs/ack.vim'

    Plug 'morhetz/gruvbox' 

    Plug 'plasticboy/vim-markdown'

    Plug 'neoclide/coc.nvim', {'branch': 'release'}

    Plug 'jiangmiao/auto-pairs'

    Plug 'vim-airline/vim-airline'

    Plug 'vim-airline/vim-airline-themes'

    call plug#end()

    “---------------------------------------------------------------------

    '''

    相关文章

      网友评论

          本文标题:vim简单使用与介绍

          本文链接:https://www.haomeiwen.com/subject/cnyctjtx.html