Configuración avanzada de Vim

En la última configuración de Vim posterior del capítulo introductorio , la única descripción general de alto nivel de la configuración básica de Vim y varios complementos de uso común, pero descubrió que la configuración de Vim no es muy buena, especialmente en el uso posterior del minibúfer, taglist , Fileexplore entra directamente en conflicto y su gestión de complementos también es problemática. Esta publicación de blog es principalmente para resolver estos dos problemas y probar algunos complementos que son más adecuados para los productores de código.

Introducción

La intención original de utilizar Vim era, por un lado, la potencia de sus complementos, y el aspecto más importante era su idoneidad para la instalación. Sin embargo, a medida que aprendí más sobre Vim, descubrí que Vim es poderoso. Es suficiente ver en la siguiente evaluación:

  • Solo hay tres editores en el mundo, EMACS, VIM y otros
  • VIM es el Dios de los editores, EMACS es el editor de Dios
  • EMACS es en realidad un sistema operativo que pretende ser un editor

De acuerdo con los problemas de configuración en la publicación anterior del blog en el uso diario, aquí hay una solución. Para conflictos entre complementos, use la barra de etiquetas en lugar de la lista de taglistas, y la administración de complementos usa complementos de paquete. De hecho, hay muchos complementos útiles y convenientes en Vim.

Complemento eficiente

Hay muchos complementos para vim y las funciones son muy poderosas y muy poderosas. La dirección del complemento del sitio web oficial está aquí .

horizontal

Vundle es un complemento que se utiliza para administrar complementos de vim. Hace un uso eficiente de git, de modo que la instalación, actualización y desinstalación de los complementos de vim son administradas por vundle, liberando así a los usuarios de la instalación y configuración de vim.

  1. Instalar vundle

    git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    
  2. Utilice vundle para administrar los complementos de Vim

    1. Elija el complemento que desea usar en Vim Script

    2. Agregue el archivo de configuración de Vim .vimrc Plugin plugin_name

    3. Ejecute el comando de inicialización de vundle :PluginInstall, el complemento está instalado

    4. Comandos comunes

      # 更新插件
      :PluginInstall!
      # 清除不再使用的插件
      :PluginClean
      # 列出所有插件
      :PluginList
      # 查找插件
      :PluginSearch
      
    5. Configuración de Vundle en .vimrc

      " 文件类型检测关闭[必须](/usr/share/vim/vim74/filetype.vim)
      filetype off
      " 设置runtime path包含Vundle的路径并且初始化
      set rtp+=~/.vim/bundle/Vundle.vim
      " 设置plugins安装地址
      call vundle#begin('~/.vim/bundle/')
      " 安装Vundle,让其管理插件[必须]
      Plugin 'gmarik/Vundle.vim'
      
      """"""""""""""""""""""""""""""""""
      " Vundle插件安装样例:
      " 插件在github上
      " Plugin 'tpope/vim-fugitive'
      " 插件来自网页http://vim-scripts.org/vim/scripts.html
      " Plugin 'L9'
      " Git插件,但插件不在Github上
      " Plugin 'git://git.wincent.com/command-t.git'
      " 插件在本地机器上 (i.e. when working on your own plugin)
      " Plugin 'file:///home/gmarik/path/to/plugin'
      " The sparkup vim script is in a subdirectory of this repo called vim.
      " Pass the path to set the runtimepath properly.
      " Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
      " 使用用户名来避免插件冲突 ie. L9
      " Plugin 'user/L9', {'name': 'newL9'}
      """"""""""""""""""""""""""""""""""
      
      " 所有插件的添加在end之前[必须]
      call vundle#end()            
      " 文件类型对应的插件[必须](/usr/share/vim/vim74/ftplugin.vim)
      filetype plugin on
      " 文件类型对应的缩进文件
      filetype indent on
      

El árbol NERD

NERDTree es uno de los complementos más utilizados en Vim. Puede mostrar el directorio y la estructura de archivos cuando Vim se está ejecutando, similar al explorador de archivos en el lado izquierdo de TextMate, pero es más conveniente de operar. Puede explorar archivos rápidamente sin salir del teclado., y cambiar entre archivos y carpetas. El ejemplo se muestra en la siguiente figura:
[La transferencia de la imagen del enlace externo falló, el sitio de origen puede tener un mecanismo anti-sanguijuelas, se recomienda guardar la imagen y cargarla directamente (img-7F0iwiGm-1611336352634) (https: / /blog.haojunyu.com/imgs /the-NERD-tree.gif)]

  1. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle')
    " 在Vim的编辑窗口中树状显示文件目录[The-NERD-tree]
    Plugin 'The-NERD-tree'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " The-NERD-tree配置
    """"""""""""""""""""""""""""""""""
    " 不显示缓冲文件,中间文件
    let NERDTreeIgnore=[ '.pyc$', '.pyo$', '.obj$', '.o$', '.so$', '.egg$', '^.git$', '^.svn$', '^.hg$' ]
    " 只剩一个NERDTree窗口时退出vim
    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif
    " <F9>打开/关闭文件管理器
    nnoremap <silent> <F9> :NERDTreeToggle<CR>
    

El comentarista de NERD

Este complemento también es necesario, principalmente contenido de anotaciones automáticas. Cuando su xml es naturalmente una anotación xml, cuando es java, son naturalmente las reglas de comentarios de Java. El ejemplo se muestra en la siguiente figura:
[La transferencia de la imagen del enlace externo falló, el sitio de origen puede tener un mecanismo de cadena anti-sanguijuelas, se recomienda guardar la imagen y cargarla directamente (img-JoGpwKAh-1611336352636) (https: //blog.haojunyu.com/imgs /nerdcommenter.gif)]

  1. Instalación y configuración en Vim

    call vundle#begin('~/.vim/bundle/')
    " 快速添加/去除注释
    Plugin 'The-NERD-Commenter'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " The-NERD-Commenter配置
    """"""""""""""""""""""""""""""""""
    " 注释的时候自动加个空格, 强迫症必配
    let g:NERDSpaceDelims=1
    " mm智能判断加上/解开注释
    map mm <leader>c<space>
    

ctrlp

Este es un complemento de búsqueda de archivos. Su función es similar a NERDTree, pero todavía hay una diferencia. La muestra se muestra a continuación:
empollón

  1. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " 文件搜索
    Plugin 'kien/ctrlp.vim'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " ctrlp配置
    """"""""""""""""""""""""""""""""""
    " 设置CtrlP的本地工作目录,0代表不设置该功能
    let g:ctrlp_working_path_mode=0
    " ctrlp窗口在底部
    let g:ctrlp_match_window_bottom=1
    " ctrlp窗口最大高度为15行
    let g:ctrlp_max_height=15
    " 窗口
    let g:ctrlp_match_window_reversed=0
    " 最近打开的文件的个数
    let g:ctrlp_mruf_max=500
    " 记录但去掉重复的软链接
    let g:ctrlp_follow_symlinks=1
    " <Ctrl-f>启动文件查找
    let g:ctrlp_map = '<c-f>'
    " Ctrlp启动文件查找
    let g:ctrlp_cmd = 'CtrlP'
    " 相当于mru功能,show recently opened files
    map <c-p> :CtrlPMRU<CR>
    " 忽略以下文件类型
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip
    " 忽略以下文件目录
    let g:ctrlp_custom_ignore = {'dir':  '/].(git|hg|svn|rvm)$','file': '(exe|so|dll|zip|tar|tar.gz)$'}
    

ctags

ctags puede establecer el índice de etiquetas del árbol de origen (una etiqueta es un lugar donde se define un identificador, como una definición de función), de modo que los programadores puedan localizar rápidamente funciones, variables, definiciones de macros, etc. para ver el prototipo durante la programación .

  1. Instalar la herramienta exuberant-ctags

    sudo apt-get install exuberant-ctags
    
  2. Crear índice base de código C ++

    1. Descargue los archivos de encabezado libstdc ++ , incluidos STL y transmisiones en C ++.

    2. Descomprima en el directorio ~ / .vim / tags y ejecute el comando ctags

      ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src
      mv tags ~/.vim/tags/cpptag
      
    3. Establecer en .vimrc

      set tags+=~/.vim/tags/cpptag
      
  3. Crear índice base de código Gcc

    1. Después de instalar build-essential en ubuntu, habrá archivos de encabezado C / C ++ en el directorio / usr / include / c ++.

      sudo apt-get install build-essential
      
    2. Copie los archivos en /usr/include/c++/4.8 a la carpeta ~ / .vim / tags / gcc y ejecute el comando ctags

      cp -R /usr/include/c++/4.8 ~/.vim/tags/gcc
      ctags -R --c++-kinds=+p --fields=+iaS --extra=+q gcc
      mv tags ~/.vim/tags/gcctag
      
    3. Establecer en .vimrc

      set tags+=~/.vim/tags/gcctag
      

cscope

Cscope, un programa de aplicación, los programadores lo utilizan para ayudar a escribir y rastrear el código del programa, utilizado principalmente en programas en lenguaje C. Se originó en Bell Laboratories y operó en PDP-11, y fue desarrollado por Joe Steffen.

  1. Instalar la herramienta cscope

    sudo apt-get install cscope
    
  2. Crear índice de biblioteca GNU C

    1. Descargue el archivo glibc , que es la biblioteca libc publicada por GNU, es decir, la biblioteca en tiempo de ejecución C. glibc es la API más baja del sistema Linux, casi cualquier otra biblioteca en tiempo de ejecución dependerá de glibc.

    2. Descomprima al directorio ~ / .vim / tags y ejecute el comando cscope

      cd ~/.vim/tags/glibc-2.22
              cscope -Rbq
      
    3. Establecer en .vimrc

      """"""""""""""""""""""""""""""""""
      " cscope配置
      """"""""""""""""""""""""""""""""""
      if has("cscope")
          " 设置cscope的命令位置
          set csprg=/usr/local/bin/cscope
          " 设定quickfix来显示cscope的结果
          set cscopequickfix=s-,c-,d-,i-,t-,e-
          " 先搜索tags标签文件,在搜索cscope数据库
          set csto=1
          " 使用cstag查询,也就是同时搜索cscope数据库和tags标签文件
          set cst
          " 不显示添加数据库是否成功
          set nocsverb
          "
          if filereadable("cscope.out")
          " 添加当前目录下的cscope数据库
          cs add cscope.out
          else
          " 添加vim自带的cscope数据库
          " gnu c 数据库
          cs add ~/.vim/tags/glibc-2.22/cscope.out ~/.vim/tags/glibc-2.22
          endif
          " 显示添加数据库成功
          set csverb
      endif
      
      " 映射快捷键"<C-_>g的按法是先按"Ctrl+Shift+-", 然后很快再按"g"
      " 查找本 C 符号(可以跳过注释)
      nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
      "查找本定义
      nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
      "查找调用本函数的函数
      nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
      "查找本字符串
      nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
      "查找本 egrep 模式
      nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
      "查找本文件
      nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
      "查找包含本文件的文件
      nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
      "查找本函数调用的函数
      nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
      

barra de etiquetas

El complemento de la barra de etiquetas es un complemento similar a la función de taglist, pero es mejor que el taglist y puede funcionar perfectamente con NERDTree.

  1. Ventajas de la barra de etiquetas

    • Admite la visualización de la lista de funciones de los archivos de encabezado Los
      lectores cuidadosos pueden encontrar que la barra de etiquetas también distingue el nivel de visibilidad de las funciones, usando respectivamente + - # y coloreando para distinguir
    • Mejor soporte orientado a objetos
      Aunque taglist también incluirá la lista de clases, en general sigue siendo muy poco intuitivo.
    • Reconstruye automáticamente la lista de
      lemas de acuerdo con la hora de modificación del archivo. En este punto, la experiencia es muy mala. De hecho, se puede lograr con esta marca de tiempo.
  2. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " 替换taglist的插件[tagbar]
    Plugin 'majutsushi/tagbar'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " tagbar配置
    """"""""""""""""""""""""""""""""""
    " 启动时自动focus
    let g:tagbar_autofocus=1
    " <F10>打开/关闭Tagbar
    nnoremap <silent> <F10> :TagbarToggle<CR>
    

arco iris

Este complemento también es necesario. La función principal del complemento es distinguir el emparejado () {} [] con diferentes colores, lo cual es muy conveniente para ver el alcance de los corchetes

  1. Instalación y configuración en Vim

    call vundle#begin('~/.vim/bundle/')
    " 括号显示增强
    Plugin 'luochen1990/rainbow'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " rainbow配置
    """"""""""""""""""""""""""""""""""
    " rainbow激活
    let g:rainbow_active = 1
    
  2. Agregue la función de inicio automático al arco iris

    if (exists('g:rainbow_active') && g:rainbow_active)
        auto syntax * call rainbow#hook()
        auto colorscheme * call rainbow#show()
        " 下面这命令使rainbow在vim启动时被打开
        autocmd VimEnter * nested call rainbow#toggle()
    endif
    

fantástico

Este es un complemento muy útil, puede verificar la gramática y el estilo de codificación en tiempo real, usándolo casi no se logra ningún error de compilación después de que se completa la codificación. Y también integra una herramienta de verificación estática: lint, que puede hacer que su código sea más perfecto. Más potente, admite casi un centenar de lenguajes de programación, como un completo compilador en tiempo real. Después de que ocurre un error, es muy conveniente saltar al error. La muestra se muestra a continuación:
empollón

  1. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " 语义高亮
    Plugin 'scrooloose/syntastic'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " syntastic配置
    """"""""""""""""""""""""""""""""""
    " 首次打开和保存时都要进行语义检查
    let g:syntastic_check_on_open = 1  
    " 设置错误提示符'x'
    let g:syntastic_error_symbol = 'x'  
    " 设置警告提示符'!'
    let g:syntastic_warning_symbol = '!'  
    " 当鼠标放在错误行则显示错误信息
    let g:syntastic_enable_balloons = 1  
    " 保存退出时不用进行语义检测
    let g:syntastic_check_on_wq = 0
    " 编译有误则错误窗口显示,否在不显示
    let g:syntastic_auto_loc_list = 1
    " 错误总会填充到错误窗口
    let g:syntastic_always_populate_loc_list = 1
    

Tu me completas

YouCompleteMe completa el código completamente al nivel del compilador, y de ninguna manera es más débil que Visual Assist. Está basado en LLVM / clang, un compilador compatible con Apple para reemplazar GNU / GCC. Es porque YouCompleteMe tiene compatibilidad con el compilador en lugar de la coincidencia basada en texto como los complementos anteriores, por lo que la tasa de precisión es alta. Además, es una arquitectura C / S, creará un lado del servidor en la máquina, usará clang para analizar el código y luego devolverá el resultado al cliente, por lo que resuelve la velocidad de varios complementos de finalización causados ​​por el Un solo hilo de VIM Es demasiado lento. Cuando lo usas, casi no puedes sentir ningún retraso y la experiencia ha alcanzado el nivel de Visual Assist.
Además de la finalización, YouCompleteMe también tiene un papel muy importante: los saltos de código también pueden lograr una precisión a nivel de compilador, comparable a Visual Assist y Source Insight. La muestra se muestra a continuación:
empollón

  1. Instale el software de requisito previo

    sudo apt-get install clang llvm cmake python python-dev
    
  2. Compilación manual

    cd ~/.vim/bundle/YouCompleteMe
    ./install.sh --clang-completer
    
  3. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " 自动补全
    Plugin 'Valloric/YouCompleteMe'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " YouCompleteMe配置
    """"""""""""""""""""""""""""""""""
    " 设置YCM配置文件的路径
    let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
    " 开启关键字语法检测
    let g:ycm_seed_identifiers_with_syntax = 1
    " 自动触发补全
    let g:ycm_auto_trigger = 1
    " YCM触发的条件
    let g:ycm_semantic_triggers = {  
    \ 'c' : ['->' , '.'],
    \ 'cpp,objcpp' : ['->','.','::'],
    \ 'java,javascript,python,scala' : ['.'],
    \ 'ruby' : ['.','::'],
    \}
    " 不用每次询问.ycm_extra_conf.py位置
    let g:ycm_confirm_extra_conf=0
    " YCM也从tags文件中收集标识符
    let g:ycm_collect_identifiers_from_tags_files=1
    " 当输入注释的时候不用弹出提示
    let g:ycm_complete_in_comments=0
    " 当输入字符的时候弹出提示
    let g:ycm_complete_in_strings=1
    

CONSEJOS: La pestaña no es válida.
Si ve el mensaje de YouCompleteMe después de instalar YouCompleteMe, pero no puede usar <Tab> para completar automáticamente, solo puede usar las teclas de flecha arriba y abajo + Enter para seleccionar, debe verificar si el .vimrc es abierto Se establece el modo de pegar, es decir, se establece pegar. Este modo bloqueará todas las asignaciones y abreviaturas. (El mismo problema para ultisnips)

ultisnips

Este complemento también es necesario. La función principal del complemento es ingresar rápidamente bloques de código fijos, como la declaración de derechos de autor al principio del archivo, #ifndef... #def... #endiftales definiciones de macros y la reducción para escribir la información principal del jekyll entrada en el blog. Lo más importante es que puedes personalizar los bloques de código según tus propios hábitos , para que no tengas que entrenarte según los hábitos de los IDE. Los efectos dinámicos son los siguientes:
ultisnippets

  1. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " ultisnips
    Plugin 'SirVer/ultisnips'
    " Snippets are separated from the engine
    Plugin 'honza/vim-snippets'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " ultisnips配置
    """"""""""""""""""""""""""""""""""
    " 如果使用了Valloric/YouCompleteMe,就别设置为<tab>
    let g:UltiSnipsExpandTrigger="<c-j>"
    " 前选片段
    let g:UltiSnipsJumpForwardTrigger="<C-f>"
    " 后选片段
    let g:UltiSnipsJumpBackwardTrigger="<C-b>"
    " 使用:UltiSnipsEdit打开片段定义文件时分屏位置
    let g:UltiSnipsEditSplit="vertical"
    
  2. Bloque de código personalizado
    Notamos que en el proceso de instalación de ultisnips, además de instalarse él mismo, también se instalaron vim-snippets de honza, y su función principal es proporcionar una gran cantidad (actualmente 80) de fragmentos de programa, como c, python, Markdown, make, sh, sql, etc. Y estos fragmentos se encuentran en la carpeta .vim / bundle / vim-snippets / snippets. Además, también podemos personalizar nuestros propios bloques de código. Se recomienda ponerlos en el directorio .vim / UltiSnippets (el mismo nivel que el paquete). Por un lado, los bloques de código en .vim / bundle / vim- snippets / snippets son proyectos git de otras personas. Por otro lado, los archivos en .vim / UltiSnippets pueden sobrescribir la configuración en vim-snippets, que está más en línea con el propósito de DIY. En cuanto a cómo escribir fragmentos, no se encuentran muchos recursos en Internet. Se dan las siguientes sugerencias:

    • Ver el código en .vim / bundle / vim-snippets / snippets

    • Por :help snippetsvisualización ultisnips documentación de ayuda

    • Bowen personaliza su propia columna en forma de bloque

      ## head Jekyll写博文时插入的头文件信息
      snippet head "Jekyll post header" b # b代表begin(snippet should be expanded only at the beginning of a line )
      ---
      layout:       default
      title:        ${1:blog_name}
      category:     [${2:cate1,cate2}]
      comments:     true
      date:         `!v strftime("%Y-%m-%d %H:%M:%S")`
      ---
      ${0}        # 代表tab最终停留的位置
      
      endsnippet
      

tabular

Este es un complemento imprescindible para Virgo o programadores, porque cuando ves código / texto desordenado, los signos de igual, los dos puntos, las tablas, etc.no se pueden alinear, deberías estar loco. El complemento tabular puede resolver este problema perfectamente. Al igual que en la siguiente ilustración, solo necesita ingresar el comando :Tabularize /*(* representa el símbolo de alineación):
[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-zXU3zpd4-1611336352641) (https://blog.haojunyu.com/imgs/vim-tabular.gif)]

  1. Instalación y configuración en Vim

    call vundle#begin('~/.vim/bundle/')
    " tab对齐
    Plugin 'godlygeek/tabular'
    call vundle#end()  
    
    """"""""""""""""""""""""""""""""""
    " tabular配置
    """"""""""""""""""""""""""""""""""
    " 目前还尚在摸索中
    

vim-markdown

vim-markdown es un complemento para el resaltado semántico y la coincidencia de reglas de la sintaxis de rebajas nativas y de rebajas extendidas.

  1. Instalación y configuración en vim

    call vundle#begin('~/.vim/bundle/')
    " markdown语义高亮
    Plugin 'plasticboy/vim-markdown'
    call vundle#end()
    
    """"""""""""""""""""""""""""""""""
    " tabular配置
    """"""""""""""""""""""""""""""""""
    " vim识别md
    autocmd BufNewFile,BufReadPost *.md set filetype=markdown
    let g:vimmarkdownfoldingdisabled=1 "取消代码折叠
    let g:vimmarkdownnodefaultkeymappings=1 "取消默认的键对应
    let g:vimmarkdownmath=1 "使用数学符号
    let g:vimmarkdownfrontmatter=1 "高亮YMAL frontmatter
    

[vista previa de sincronización de rebajas] [vista previa de rebajas]

markdown-preview es un complemento que se utiliza para traducir el archivo markdown abierto por vim a html y mostrarlo en el navegador. Lo más destacado del complemento es la actualización en tiempo real.

  1. Instalación y configuración en Vim

    call vundle#begin('~/.vim/bundle/')
    " markdown同步显示
    Plugin 'iamcco/mathjax-support-for-mkdp'
    Plugin 'iamcco/markdown-preview.vim'
    call vundle#end()
    
    """"""""""""""""""""""""""""""""""
    " markdown-preview.vim配置
    """"""""""""""""""""""""""""""""""
    " 设置启动chrome浏览器的命令
    let g:mkdp_path_to_chrome = "open -a Google\\ Chrome"
    " 设置为1则打开markdown文件时自动打开浏览器
    let g:mkdp_auto_start = 1
    " 设置为1则在编辑markdown的时候预览窗口是否打开,未开则自动打开
    let g:mkdp_auto_open = 1
    " 切换buffer时自动关闭预览窗口,设置为0则在切换buffer时不自动关闭
    let g:mkdp_auto_close = 1
    " 设置为1则只有在保存文件或退出插入模式时更新预览,默认为0,实时更新预览
    let g:mkdp_refresh_slow = 0
    " 设置为1则所有文件都使用MarkdownPreview进行预览,默认只有markdown文件可以
    let g:mkdp_command_for_global = 0
    

emmet-vim

El predecesor de Emmet se llama Zen Coding, es un complemento de interfaz. Muchos softwares son oficialmente compatibles, como Sublime Text, Notepad ++, Dreamweaver, Eclipse, Adobe Brackets, etc., y Emmet.vim no es el nacimiento de Emmet, sino que fue desarrollado por Yasuhiro Matsumoto en Japón. Para los desarrolladores de front-end, es un artefacto que puede ahorrar una gran cantidad de trabajo de codificación repetitivo. En vista de la falta de desarrollo de front-end, aquí hay solo una marca.

referencias

  1. Divertido juego de vim
  2. Guía de estudio de Vim
  3. complemento vim
  4. Guión Vim
  5. Configuración de Vim e instrucciones-entorno de programación IDE
  6. Complemento vim eficiente
  7. Diagrama mnemónico de VIM
  8. El mundo del programa de Vimer
  9. vimium
  10. tu me completas
  11. fantástico
  12. Python IDE
  13. ultisnips
  14. Personaliza tu propio bloque de código
  15. Artefacto de desarrollo de front-end Emmet
  16. Tutorial de Emmet
  17. Artefacto de alineación tabular
  18. vim-markdown

Si este artículo es útil para usted, o si está interesado en artículos técnicos, puede seguir la cuenta pública de WeChat: Technical Tea Party. Puede recibir artículos técnicos relacionados lo antes posible, ¡gracias!

Fiesta del té técnica

Este artículo es publicado automáticamente por ArtiPub , una plataforma de publicación múltiple.

Supongo que te gusta

Origin blog.csdn.net/haojunyu2012/article/details/113012955
Recomendado
Clasificación