vim简单使用与介绍

2024-03-22  本文已影响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()

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

'''

上一篇下一篇

猜你喜欢

热点阅读