vim 插件使用 自动补全 自动缩进 缩进指示线等
mkdir -p ~/.vim/autoload/
git clone https://github.com/junegunn/vim-plug.git ~/.vim/autoload/
vim-plug插件是在github上面发布更新的,可以直接搜索vim-plug第一个就是,(https://github.com/junegunn/vim-plug.git)
这个地址就是vim-plug的git地址将其clone下来,
将其中的plug.vim文件拷贝到你vim的安装目录下面的vim\vim82\autoload目录下面即可,接下来只需要对用户目录下的_vimrc进行配置即可(对于linux用户而言是.vimrc),基本配置如下图所示
路径
"D:\gVim_8.2.4542\vim82\autoload\plug.vim"
"D:\gVim_8.2.4542\_vimrc"
下面必须加上前面,不然vim有bug
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2019 Dec 17
"
" To use it, copy it to
" for Unix: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-Windows: $VIM\_vimrc
" for Haiku: ~/config/settings/vim/vimrc
" for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings, bail
" out.
if v:progname =~? "evim"
finish
endif
" Get the defaults that most users want.
source $VIMRUNTIME/defaults.vim
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
if has('persistent_undo')
set undofile " keep an undo file (undo changes after closing)
endif
endif
if &t_Co > 2 || has("gui_running")
" Switch on highlighting the last used search pattern.
set hlsearch
endif
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
augroup END
" Add optional packages.
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd! matchit
endif
call plug#begin('D:\gVim_8.2.4542\vim82\plugged')
Plug 'mhinz/vim-startify'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
" 设置gvim下和外部的复制粘贴粘贴:gvim 内进入插入模式后ctrl+v,外部直接ctrl+v;如果要在gvim中搜索剪贴板内容,先按“/”然后点鼠标中键,笔记本中键要在 设置-设备-触摸板-其他设置-高级设置里例如将3指点击设置为中键(win10下)
vmap <C-c> "+y
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
" 支持使用鼠标
set mouse=a
" 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致
vim ~/.vimrc
例子
" Specify a directory for plugins
" - For Neovim: stdpath('data') . '/plugged'
" - Avoid using standard Vim directory names like 'plugin'
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
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Using a non-default branch
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug 'fatih/vim-go', { 'tag': '*' }
" Plugin options
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
" 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()
1.3 安装开屏软件vim-startify和代码缩进indentline
call plug#begin('~/.vim/plugged')
" 开屏,终端输入vim确定,后面不跟文件名,可以看到
Plug 'mhinz/vim-startify'
" python代码缩进线
Plug 'yggdroot/indentline'
let g:indentLine_char = "┆"
let g:indentLine_enabled = 1
call plug#end()
vim
安装插件
:PlugInstall
或者
:PluginInstall
如果失败可以尝试多装几次
在~/.vim/plugged有对应文件则成功
迅雷下载tagbar
./configure
make
sudo make install
在vimrc加入
vim ~/.vimrc
Plug 'majutsushi/tagbar'
然后进行安装,
vim打开一个文件,normal模式输入
TagbarToggle
在ctrl+w+w进入右边框,可以对着函数按enter跳转回来
设置快捷键映射.注意空格,不然不起作用
let mapleader=","
" tagar
nnoremap <leader>t :TagbarToggle<CR>
在normal模式输入,t就可以打开TagbarToggle
,t
1.5 补全coc.nvim
coc.nvim支持异步
1.5.1 乌班图安装vim8.2
sudo gedit /etc/hosts
加入ip(为什么这个地址:因为前几次总是超时,提示ip和网站,加入hosts就好了)
91.189.95.83 ppa.launchpad.net
sudo add-apt-repository ppa:jonathonf/vim
sudo apt-get update
sudo apt install vim
centos 安装im8
卸载im
yum remove vim-* -y
验证源
wget -P /etc/yum.repos.d/ https://copr.fedorainfracloud.org/coprs/lbiaggi/vim80-ligatures/repo/epel-7/lbiaggi-vim80-ligatures-epel-7.repo
安葬im
yum install vim-enhanced sudo -y
rpm -qa |grep vim
1.5.2安装最新版node.js
去官网看看最新版,来改版本号https://nodejs.org/en/download/
下方的下载地址,请根据需要版本号更换
wget https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz
解压:不要手动解压,不然安装失败
tar -xvf node-v12.19.0-linux-x64.tar.xz
sudo mv node-v12.19.0-linux-x64 /usr/local/node
cd /usr/bin
#创建node软连接
sudo ln -s /usr/local/node/bin/node node
# 创建npm软连接
sudo ln -s /usr/local/node/bin/npm npm
最后看版本
node -v
如果失败删除几个文件,从1.5.2重新装
|
1.5.3 在vimrc加入插件
vim ~/.vimrc
" Use release branch (recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
然后进行安装
1.5.4 安装python补全
首先要安装 语言服务器 python-language-server,不安装的话不能正常使用,插入时提示错误
pip3 install 'python-language-server[all]'
在vim界面输入安装coc-python
CocInstall coc-python
Install finished |
|~
- ✓ coc-python Installed extension coc-python@1.2.12 at /home/yys/.config/coc/extensions/no|~
de_modules/coc-python
python 需要安装 autopep8
pip3 install autopep8
vim ~/.vimrc
Plug 'sbdchd/neoformat'
let g:neoformat_python_autopep8 = {
\ 'exe': 'autopep8',
\ 'args': ['-s 4', '-E'],
\ 'replace': 1 " replace the file, instead of updating buffer (default: 0),
\ 'stdin': 1, " send data to stdin of formatter (default: 0)
\ 'env': ["DEBUG=1"], " prepend environment variables to formatter command
\ 'valid_exit_codes': [0, 23],
\ 'no_append': 1,
\ }
let g:neoformat_enabled_python = ['autopep8']
注意,加入上面两个let后会出现请按 ENTER 或其它命令继续解决方法
使用
:Neoformat
安装其他扩增插件
CocInstall coc-cmake
安装代码检查
pip3 install pylint
编辑.imrc
vim ~/.vimrc
Plug 'dense-analysis/ale'
let g:ale_sign_error = '>>'
let g:ale_sign_warning = '--'
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 1
let b:ale_linters = {'python': ['pylint']}
sudo apt install latexmk
sudo apt install xelatex
vim ~/.vimrc
"帮助写latx
Plug 'lervag/vimtex'
" vimtex 配置
let g:tex_flavor='latex'
"使vimtex默认xelatex为编译器
let g:vimtex_compiler_latexmk_engines = {'_':'-xelatex'}
let g:vimtex_compiler_latexrun_engines ={'_':'xelatex'}
"设置可以看到编译提示
let g:vimtex_quickfix_mode=1
https://www.cnblogs.com/chester-cs/p/11647333.html
下面附上这个文章的核心Vimtex的简易命令说明:
Start compiling the document with '\ll'
Open pdf viewer and/or do forward searching with '\lv'
Stop the running compilation with '\ll' (or 'lk')
To parse the log file for errors and warnings, press '\le'
To clearn auxiliary files, press '\lc' (or '\lC' to remove pdf's)
最终vimrc配置
安装哪个失败时候要取~/.vim/plugged文件夹删除对应插件文件夹,再重新安装插件
call plug#begin('~/.vim/plugged')
" 开屏
Plug 'mhinz/vim-startify'
" python缩进线
Plug 'yggdroot/indentline'
" tagbar
Plug 'majutsushi/tagbar'
" 补全
" Use release branch (recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
let mapleader=","
" tagar
nnoremap <leader>t :TagbarToggle<CR>
1.建文件夹
cd ~
mkdir -p .vim/bundle
2.下载源码:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
3.打开.vimrc
vim .vimrc
4.把代码放进去
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'davidhalter/jedi-vim'
" python模块补全 例如 os.
Plugin 'vim-scripts/indentpython.vim'
" " python自动缩进
Plugin 'Yggdroot/indentLine'
" " 缩进指示线
call vundle#end()
filetype plugin indent on
set nu
5.安装插件
vim
:PluginInstall
6.安装成功界面(这个界面不要乱动,不要关闭,直到下面显示done,不然会有bug自动补全没效果,删除重新开始,试了好多次才成功,如果失败了删除bundle下的文件重新第一步开始)
(需要按tab键)
1. 下载Pydiction
cd ~/.vim/bundle
git clone https://github.com/rkulla/pydiction.git
2. 配置Pydiction
#- UNIX/LINUX/OSX: Put python_pydiction.vim in ~/.vim/after/ftplugin/
cp -r ~/.vim/bundle/pydiction/after/ ~/.vim
#在.vimrc文件添加如下配置
vim ~/.vimrc
filetype plugin on
let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict'
3.效果
vi/vim 中Tab
4. 可能遇到的问题(如果window下载,再传到Linux)
报错:
vim E492: Not an editor command: ^M
解决办法:
#设置vim配置文件的文件格式为unix
用vi打开.vimrc文件,输入 :set fileformat=unix
如果是vim-plug
git clone https://github.com/mattn/emmet-vim.git ~/.vim/autoload/emmet-vim
vim .vimrc
插入一句
Plug 'mattn/emmet-vim'
如果是vundle
git clone https://github.com/mattn/emmet-vim.git ~/.vim/bundle/emmet-vim
vim .vimrc
插入一句
Plugin 'mattn/emmet-vim'
vim命令输入安装
:PluginInstall
在终端插入模式下输入:html:5,然后按ctl+y+, 就可以创建html了
例如操作如下
html:5
ctl+y+,(逗号)
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
嵌套操作符
使用 > 生成元素子节点
输入 div>ul>li 使用ctl+y+,展开
<div>
<ul>
<li></li>
</ul>
</div>
使用 + 生成元素兄弟节点
<!-- div+p+bq -->
<div></div>
<p></p>
<blockquote></blockquote>
操作符 ^ 的作用和 > 刚好相反
用 ^ 可以在父级生成新的节点
<!-- div+div>p>span+em^bq -->
<div></div>
<div>
<p><span></span><em></em></p>
<blockquote></blockquote>
</div>
用n个 ^ ,就可以在第n父级生成新的节点
<!-- div+div>p>span+em^^^bq -->
<div></div>
<div>
<p><span></span><em></em></p>
</div>
<blockquote></blockquote>
使用 * 生成多个相同元素
<!-- ul>li*5 -->
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
圆括号 () 是Emmet的高级用法,用来实现比较复杂的DOM结构
<!-- div>(header>ul>li*2>a)+footer>p -->
<div>
<header>
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</header>
<footer>
<p></p>
</footer>
</div>
还可以嵌套使用圆括号 ()
<!-- (div>dl>(dt+dd)*3)+footer>p -->
<div>
<dl>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
</div>
<footer>
<p></p>
</footer>
属性操作
Emmet给元素添加ID和CLASS的方法和CSS的语法类似
<!-- div#header+div.page+div#footer.class1.class2.class3 -->
<div id="header"></div>
<div class="page"></div>
<div id="footer" class="class1 class2 class3"></div>
使用[attr]标记来添加自定义属性
<!-- td[title="Hello world!" colspan=3] -->
<td title="Hello world!" colspan="3"></td>
使用 $ 操作符可以对重复元素进行有序编号
<!-- ul>li.item$*5 -->
<ul>
<li class="item1"></li>
<li class="item2"></li>
<li class="item3"></li>
<li class="item4"></li>
<li class="item5"></li>
</ul>
还可以用多个 $ 定义编号的格式
<!-- ul>li.item$$$*5 -->
<ul>
<li class="item001"></li>
<li class="item002"></li>
<li class="item003"></li>
<li class="item004"></li>
<li class="item005"></li>
</ul>
使用 @ 修饰符可以改变编号的格式
在 $ 后面添加 @- 可以改变编号顺序
<!-- ul>li.item$@-*5 -->
<ul>
<li class="item5"></li>
<li class="item4"></li>
<li class="item3"></li>
<li class="item2"></li>
<li class="item1"></li>
</ul>
在 $ 后面添加 @N 可以改变编号基数
<!-- ul>li.item$@3*5 -->
<ul>
<li class="item3"></li>
<li class="item4"></li>
<li class="item5"></li>
<li class="item6"></li>
<li class="item7"></li>
</ul>
还可以组合使用上面的修饰符
<!-- ul>li.item$@-3*5 -->
<ul>
<li class="item7"></li>
<li class="item6"></li>
<li class="item5"></li>
<li class="item4"></li>
<li class="item3"></li>
</ul>
文本操作
Emmet使用 Text:{} 给元素添加文本内容
a{Click me}--><a href="">Click me</a>
<!-- a{click}+b{here} -->
<a href="">click</a><b>here</b>
<!-- a>{click}+b{here} -->
<a href="">click<b>here</b></a>
<!-- p>{Click }+a{here}+{ to continue} -->
<p>Click <a href="">here</a> to continue</p>
其他例子
<!-- #page>div.logo+ul#navigation>li*5>a{Item $} -->
<div id="page">
<div class="logo"></div>
<ul id="navigation">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
<li><a href="">Item 3</a></li>
<li><a href="">Item 4</a></li>
<li><a href="">Item 5</a></li>
</ul>
</div>
Emmet没有预设任何标签名,所以可以使用任何可用名称来生成HTML标签:div → <div></div> 或 foo → <foo></foo>
其他常用快捷键:
<ctrl-y>, 展开简写式
<ctrl-y>d Balance a Tag Inward(选中包围的标签?)
<ctrl-y>D Balance a Tag Outward
<ctrl-y>n 进入下个编辑点
<ctrl-y>N 进入上个编辑点
<ctrl-y>i 更新<img>图像尺寸
<ctrl-y>m 合并文本行
<ctrl-y>k 删除标签
<ctrl-y>j 分解/展开空标签
<ctrl-y>/ 注释开关
<ctrl-y>a 从URL生成anchor标签
<ctrl-y>A 从URL生成引用文本
本文作者: 永生
本文链接: https://yys.zone/detail/?id=122
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)