NeoVim使用
December 11, 2020
常用 vimrc 设置
1 set shiftwidth=4 tabstop=4 softtabstop=4 expandtab autoindent smartindent
设置
有哪些配置文件,在什么目录
:version
可查看配置文件搜索位置。
初始化过程
系统vimrc $VIM/vimrc
最先找到的脚本进行执行
1. $VIMINIT
1. $HOME/.vimrc
1. $HOME/.vim/vimrc
1. $EXINIT
1. $HOME/.exrc
1. $VIMRUNTIME/defaults.vim
加载 Plugin
一般插件放在: $HOME/.vim/plugin/**/*.vim
加载 package
一般位置: $HOME/.vim/pack/foo/start/bar/plugin/**/*.vim
runtimepath
runtimepath
就是一群目录,用来查找在其中 runtime files。
搜索顺序
User Home .vim
【用户一般放这】
Sysadmin folder
$VIMRUNTIME
【系统默认一般放这】
Sysadmin “after” folder
User Home “after” folder
例如:
1
2
3
4
5 /homes/someone/.vim
/usr/local/share/vim/vimfiles
/usr/local/share/vim/vim82
/usr/local/share/vim/vimfiles/after
/homes/someone/.vim/after
这些runtimepath
一般有如下目录结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 syntax/ # 语法高亮,高亮规则文件放里面,配合filetype配置使用
compiler/
ftdetect/ # 文件类型
filetype.vim # 文件类型
scripts.vim # 文件类型
autoload/ # 预定义函数放这里,通过 :call filename#function_name 调用
ftplugin/
plugin/
pack/
colors/
doc/
import/
keymap/
lang/
menu.vim
print/
spell/
tutor
indent/
:set rtp?
查看当前的 runtimepath
不想加载任何配置 & 插件
1
2
3 vim -u NONE
# 或
vim -u NORC
1
2 # 不加载任何config设置
vi -Nu NORC xxx.py
配置文件加载过程
runtimepath
搜索配置文件的目录列表
运行时加载配置
1
2
3
4
5
6
7
8
9 :filetype plugin indent on
# 文件类型
# - 直接指定
:filetype=python
# - 自动识别
:filetype detect
:syntax on
1
2 # 退格键支持删除
set backspace=start,eol,indent
1
2 let $RTP=split(&runtimepath, ',')[0]
let $RC="$HOME/.vim/vimrc"
1
2
3
4 # 显示TAB、换行等隐藏字符
:set list
# 关闭显示
:set list!
1
2
3
4 # 缩进设置
:set shiftwidth=4 tabstop=4 softtabstop=4 expandtab autoindent smartindent
# tab规则应用到当前已有代码
retab
q:
列出历史命令
1
2 setlocal path=.,**
setlocal wildignore=*/__pycache__/*,*.pyc
语法高亮
syntax on
打开语法高亮功能,使用默认颜色设置
syntax enable
打开语法高亮功能,使用自定义颜色设置
set syntax=java
到runtimepath 的 syntax 目录中找 java.vim ,据此高亮当前文件
echo exists('g:syntax_on')
查看syntax高亮开关状态,返回1,表明 syntax 高亮 on
文件类型
:h new-filetype
查看帮助
和runtimepath下的如下文件相关:
1
2
3 ftdetect/
filetype.vim
scripts.vim
Override filetype AFTER default filetype detection
Add :set filetype=file
autocommand to a file in ftdetect/
Only create a new filetype AFTER default filetype detection
Add :setfiletype file
autocommand to a file in ftdetect/
Define filetype BEFORE default filetype detection (detectable by name)
Add :setfiletype file
for all files you want to define in filetype.vim
例如:au BufNewFile,BufRead known_hosts setfiletype *.java
Define filetype BEFORE default filetype detection (detectable by content)
Add :setfiletype file
for all files you want to define in scripts.vim
autoload
当在vim或者plugin中调用 filename#funcname()
, Vim 在 runtimepath 中的 autoload
目录搜索文件 filename.vim
后调用 funcname()
例子,上传当前文件到Google Cloud
编辑 ~/.vim/autoload/gcp.vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 echo "INITIALIZING AUTOLOAD PLUGIN"
python3 << PYEND
from google.cloud import storage
def upload():
storage_client = storage.Client()
bucket = storage_client.bucket('your-pre-created-bucket-on-Google')
blob = bucket.blob('vim_demo')
blob.upload_from_filename(vim.eval("expand('%:p')"))
print('UPLOADED')
PYEND
function gcp#Upload()
:py3 upload()
endfunction
然后,任意文件vim打开后,执行 :call gcp#Upload
会上传当前文件。
编辑
目录操作
复制、粘贴
查找/替换 :s
1
2
3
4
5
6
7
8
9
10
11 # 全文搜索 eth1 ,并全部替换为 br1
:%s/eth1/br1/g
# 全文搜索 eth1 ,并全部替换为 br1,但每次都询问是否替换
:%s/eth1/br1/gc
# 全文搜索 eth1 ,并全部替换为 br1, 且忽略大小写(i,即 case insensitive)
:%s/eth1/br1/gi
# 在第3行 - 第7行中搜索 eth1 ,并全部替换为 br1,
:3,7s/eth1/br1/g
搜索
1
2
3
4
5 # 设置增量搜索
:set incsearch
# 高亮搜索结果
:set hls