原文
2023
更好的UTF-16
支持
添加strutf16len()
和utf16idx()
,并在byteidx(),byteidxcomp()
和charidx()
中添加utf16
标志,在内置.txt
文档中.
添加'crypymethod' xchacha20v2
与xchacha20
基本相同,但更能抵御libsodium
的变化.
2022
添加"smoothscroll"
用鼠标滚动换行
屏幕行,而不是文本行
.
在"statusline"
和"tabline"
中添加'showcmdloc',%S
控制"showcmd"
的显示位置
,或添加到状态行或标签行
.
支持kitty-keyboard-protocol
键盘协议,添加'keyprotocol'
对KiTTY
终端;更好处理修改键
.
添加WinResized
事件
更改窗口
大小时触发,事件.
WinScrolled
适合非活动窗口,有更多信息
以前,仅适合当前窗口
,且不提供更改内容
信息,滚动.
在col()
和charcol()
中添加winid
选项
从另一个
窗口取光标列
,col,char.
在readblob()
中添加offset
和size
参数,允许读取符设备
之前,总是读取整个文件
,读块.
添加'lispoptions'
设置lispoptions=indentexpr:1
,在启用'lisp'
时允许使用'indentexpr'
.
添加TextChangedT
在终端
窗口中,更改
文本后触发.
在"shortmess"
中添加"C"
在补全(ins-completion)
过程中抑制消息
声音功能可在macOS
上运行
sound_playevent()
这里现在适合macOS
.
添加:echowindow
在弹窗
中显示消息;同时添加popup_findecho()
这里.这里
在"fillchars"
中添加最后一行
设置当'display'
包含fillchars
或truncate
时使用
的符.
添加"splitkeep"
控制打开,关闭或调整
水平分割
时的滚动行为
.
matchaddpos()
可添加许多匹配项
以前限制为8个,这里.
虚文本
允许添加虚文本到缓冲.
放弃对WindowsXP
和Vista
的支持
添加keytrans()
转换转义序列
为串,这里.
添加:defer
退出函数
时运行代码,这里.
在writefile()
和mkdir()
中添加'D'
标志
在退出函数
时,删除文件或目录
,1,2.
在窗口
终端中设置光标形状
termcap-cursor-shape
适合窗口
,这里.
添加getscriptinfo()
:scriptnames
,但对脚本来说更方便,这里,1.
添加setcmdline()
从脚本
设置命令行内容和光标位置
,这里.
添加indexof()
用回调函数
,在列表中查找值,这里.
支持双,点和虚线
下划线
可在:highlight
中使用双,点和虚
下划线属性.
添加virtcol2col()
从虚列
中取字节索引
,这里.
添加<<
和>>
符号
按位移位
符号.
添加autocmd_add(),autocmd_get(),autocmd_delete()
操作autocmd
的函数,加,取,删.
在'formatoptions'
中添加/
在带内联注释
(仅'cindent'
)的行上使用o
时,不要插入\\
.
加getcmdcompltype(),getcmdscreenpos()
取当前命令行
补全的类型和位置
1,2.
加串插值
串以$
为前缀
时,允许在{...}
内使用式
;如
$"Hello, {$USER} at {strftime('%c', localtime())}"
添加列到"breakindentopt"
在指定列
处缩进
软包装行.
恢复映射
mapset()
接受从maparg()
或maplist()
返回的字典
,从而可轻松保存和恢复
映射.
1,2,3
添加isabsolutepath()
检查路径
是否为绝对路径
,1.
添加maplist()
取所有映射
列表.这里
添加hl-CurSearch
高亮
当前搜索匹配项
.这里
允许在heredoc
中使用式
如果添加了eval
,则允许heredoc
中按=expr
的表达式:
let lines =<< trim eval ENDSee the file `=$HOME`/.vimrc
END
支持通道中的LSP
在通道
中支持语言-服务器-协议(LSP)
.
添加--log
启动
时开始记录.
WinScrolled
事件
滚动
窗口内容后触发.
添加:profile
停止和转储
(以前仅在退出Vim
时),允许停止
分析并把配置文件
转储到文件
中.这里
在Unix
域套接字上打开通道
ch_open("unix:/tmp/socket")
添加"fuzzy"
到"wildoptions"
中
命令行的"模糊"
补全.
DirChangedPre
事件
在更改
目录前触发.
在"errorformat"
中添加%e
和%k
尾行和列
.
将"pum:"
添加到'wildoptions'
对命令行补全
,显示弹出菜单
.
添加"timeout"
到"spellsuggest"
限制搜索
拼写建议时间;以前总是5000
毫秒.
在可视模式下的P
在可视
模式下"放"
(粘贴
)文本,而不会复制已删除
文本到未命名寄存器
中.
win_move_separator(),win_move_statusline()
移动
并调整窗口大小.1,2
2021
内置.txt
把eval.txt
拆分为内置.txt
在*expr
选项中允许本地脚本函数
现在可用如setdiffexpr=s:MyDiffExpr()
.
添加:argdedeupe
从参数列表
中删除
重复项.
reduce(),filter()
和map()
对串起作用
赋值λ
给带函数的选项
'operatorfunc','tagfunc','completefunc','omnifunc'
和'imactivatefunc'
现在可接受λ
.
添加hl-CursorLineSign,hl-CursorLineFold
调整"'cursorline'
"的符号高亮
.
添加hlget(),hlset()
编程操作高亮
.1,2
添加WinClosed
事件
关闭
窗口时触发.
添加v:colornames
映射颜色名
到十六进制代码.
添加"guiligatures"
支持在GTKGUI
中使用连字
.
添加'thesaurusfunc'
同义
补全的函数.
ModeChanged
事件
在更改模式
时触发.这里
添加多空格到"listchars"
无论在哪,显示两个或多个
空格.
添加digraph_get(),digraph_getlist(),digraph_set(),digraph_setlist()
列举并定义
函数的二分法.1
2
3
4
添加列表到"breakindentopt"
对(用"formatlistpat"
设置)匹配编号列表或项目符号
列表的行添加
额外缩进.
添加\%.l,\%<.l
和\%>.l
模式
匹配光标
当前所在行;见/\%l
这里.
添加'cryptmethod'=xchaha20
libsodium
的更安全加密
.
添加zp,zP,zy
zp
不带尾随空格
按块模式粘贴
,zy
不带尾随空格
复制.
加{%
到"状态行"
{%expr%}
按"statusline"
格式串重新计算
式.
在:vimgrep
中添加f标志
"模糊"
匹配:vimgrep
结果.这里
添加"autoshelldir"
从终端
窗口自动更改Vim
中的目录.
添加strcharlen()
分别组合符,取串计数的长度
这里.
遍历串
循环串为'for char in "str"'
;循环是用组合符按代码点
的.
扩展"fillchars"
新值:"eob"
更改(~)
表示不存在
的行,"foldopen","foldclose"
和"foldsep"
更改"foldcolumn"
标记.
可按每窗口设置"fillchars"
(以前总是全局
的).还允许在"fillchars"
和"statusline"
中使用多字节符
.
添加followwrap
到"diffopt"
对差异窗口
,不要重置"换行"
.
添加fullcommand()
从缩写
中取完整命令名
(如:s->:substitute
),这里
lead
:在"ListChars"
中
设置"list"
时,高亮
前导空格.
检测终端中的焦点事件
FocusGain
和FocusLost
自动命令可在终端
内工作.见xterm-focus-event
.
:sleep!
休息并隐藏
光标.
添加charcol(),getcharpos(),setcharpos(),getcursorcharpos(),setcursorcharpos()
col(),getpos(),setpos(),getcurpos(),cursor()
的多字节
相关版本.
2020
加charidx()
转换字节索引
为符索引
.
添加VimSuspend
和VimResume
暂停/恢复
时触发;仅针对<C-z>
而不是SIGSTP/SIGCONT
信号.1,2
添加<Cmd>
勿更改
此键映射
中的模式
,以便无需使用<C-u>
或<C-o>
,插入或可视
模式中映射
总是有效
.如,noremap<C-q><Cmd>:normal!K<CR>
:sort
和sort()
可本地相关排序
:sortl
或sort(...,'l')
.
matchfuzzy(),matchfuzzypos()
"模糊"
匹配.
添加InsertLeavePre
离开
插入模式前触发这里.
??符号
echo value ??
如果值为空,则用上面.
添加gettext()
可用来翻译
插件.这里
添加setcellwidths(),charclass()
允许覆盖宽度歧义符
的显示宽度
.
添加g<Tab>;
支持:tabnext#
,:tabclose#
等
g<Tab>
返回上次访问的选项卡
,而:tab*
命令中的#
引用上次访问的选项卡
.
expand('<SID>')
对*func
和*expr
设置很有用,如
let &includexpr = expand('<SID>') .. 'fun()'
来使用s:fun()
添加"quickfixtextfunc"
自定义快修窗口
的文本内容
;也可按参数传递给setqflist()
这里
为readir(),readirex()
添加排序
向readdir()
和readdirex()
添加可选参数
以控制
排序.这里和这里
添加terminalprops()
列举此终端
支持功能.
添加'spelloptions'
唯一
接受的值是驼峰(camel)
来拼写检查CamelCase
单词.
添加SigUSR1autocmd
用来检测SIG_USR1
的事件.
添加flatten()
变平列表
添加getreginfo()
返回寄存器信息细节;可通过传递给setreg()
这里来恢复
.
添加searchcount()
取有关当前搜索
的细节.
允许在终端中设置下划线颜色
可在:highlight
中使用ctermul
来设置下划线颜色
,如果启用了'termguicolors'
,则可用guisp
.
添加reduce()
化简
列表为单个值这里.
添加readirex()
与readdir()
类似,但返回带属性
字典(即Unix
上的stat()
).
添加getmarklist()
类似:marks
,取标记列表
这里
添加unsigned
到"nrformats"
在数字
前忽略-
,并总是当作<C-a>
和<C-x>
的正,以便在如1985-06-18
上正常
工作.
添加mapset()
从脚本设置
映射,并可恢复
映射,这里.
从Lua
调用Vim
函数
vim.call("fun_name", "arg")
vim.fn.fun_name("arg")
从Lua
调用Vim
函数.
通道中的IPv6
支持
通道中的IPv6
支持
添加echoraw()
无需处理,输出串
到终端;可用来发送转义码
,这里.
添加可选错误码到:cquit
用指定代码
退出,而不是总是使用1
.v:exiting
已在8.2.2070
中添加.
2019
rand()
和srand()
生成随机数
.1,2
interrupt()
中止运行
中的脚本.
strptime()
解析
时间串这里
:terminal ++shell
在shell
中运行:terminal
命令.这里
v:argv
取调用Vim
时使用的命令行参数
.
添加gM
移动到行的中间
这里.
hl-LineNrAbove,hl-LineNrBelow
设置"relativenumber"
时,高亮光标上下方
的行号
.
添加'cursorlineopt'
更多控制
如何显示"光标"
.
边框和对齐'completepopup'
控制补全弹出
菜单的更多选项
.
"completeopt"
中的弹窗
(按预览窗口
的替代)在弹窗
中显示额外
补全信息.
:spellrare
在拼写文件中按稀有标记单词.
->
符号
expr->fun(args)
是fun(expr, args)
提高可读性的快捷方法:
[1, 2]->map({_, v -> v + 1})
见方法
弹窗
弹窗
类似补全窗口
,但可在VimScript
中更大
程度地控制它.见弹窗"previewpopup"
.这仍是一个实验性功能.
“补全斜杠”
覆盖'shellslash'
以补全.
#{}
字典注解
除了键值
不需要引号
,#{}
表示法与普通{}
字典表示法
相同:
#{foo: "bar"}
声音功能
可播放声音;见sound_playevent()
.
v:option_command,v:option_oldlocal,v:option_oldglobal
改进了OptionSet
事件.
:常量
常量,与如下等价
:let v = 1 | :lockvar v
win_execute()
在指定窗口的环境中execute()
.
"wincolor"
(温色)
对此窗口
,要用的高亮组
,而不是hl-Normal
.
g:actual_curwin
,g:statusline_winid
在"状态行
"(%{expr}
)中运行表达式
时的临时设置
.
:let=<<
Heredoc
赋值,这里:
let text =<< trim ENDtext
END
文本属性
赋值元数据
给缓冲
中的文本
,作为Vim
语法高亮的替代方法.见textprop
.这仍是实验性功能
.
listener_add()
添加更改缓冲
时调用的回调.
函数参数的默认值
如函数Fun(value=10)
.见optional-function-argument
.
:xrestore
重启
后重新连接
到X服务器
.
environ(),getenv()
和setenv()
处理
环境变量,123.
chdir()
用域和恢复
能力更改
目录.
:cbefore,:cafter
浏览光标
前后的错误
.
搜索时显示匹配位置
用n时且"S"
不在"shortmess"
中时,显示"3/44"
.
:cabove,:cbelow,:labove,:lbelow
浏览与光标
相关的错误.
控制窗口
上的字体权重
在"guifont"
中使用"W"
来控制窗口
上的字体权重.见gui-font
.
Tab-local
目录
见:tcd
.类似带有:lcd
的window-local
目录.
v:
前缀为必填项
以前,如计数也可.当:scriptversion>=3
时,必需要有v:
前缀.
给winnr()
添加更多参数
找出邻居窗口.
CompleteChanged
事件
每次更改"插入模式
"补全
菜单后,这里.
str2list()
和list2str()
按字节列表
转换串
,及相反.
readdir()
取目录
内容这里.
:scriptversion
指定VimScript
兼容版本.
..
符号
串
连接符号,因为一个.
有歧义,"a"..'b'
和'a'."b"
是相同的.还添加了..=
.
:autocmd
的++once
参数
只运行一次自动命令
,如:
au CursorMoved * ++once :echom 'ONCE'
添加窗口ID
参数到matchdelete(),clearmatches(),getmatches(),setmatches()
complete_info()
取有关当前补全信息.
rubyeval()
计算Ruby
式.
CTRL-W_gt
组合键,CTRL-W_gT
组合键
像gt
和gT
切换选项卡.主要用来从终端窗口
切换.
*=,/=,%=
如,let var*=2
a:
变量是不变的
以前,有时可更改a:
变量.
[:ident:], [:keyword:], [:fname:]
允许在"listchars"
中使用"tab:"
的第三个符
set listchars=tab:(_)
如上,按制表符
的最后符
设置第三个符
,按(______)
显示制表符.
Blob
类型
Blob
存储二进制数据
.Blob
文字以0z
开头,如0zDEADBEEF
.见blob
这里.
"FormatOptions"
中的"p"
标志
不要在句点
后面的单个空格
处换行
.
:redrawtabline
更改"tabline"
后重画tabline
(插件用).
sign_place(),sign_unplace()
等
定义和保存
标志的函数1,2.
允许函数和命令重定义自身
以前总是必须把!
添加到函数
中,才能覆盖
带相同名字
的函数.现在Vim
更智能了,它允许函数
覆盖自身
.即在vimrc
或插件
中,不再需要自动加载
或加上!
了.
:filter
支持更多命令
这里
:tlmenu
终端
的弹出菜单
.
包括xdiff
库
包括diff
库,而不依赖外部工具
来提高diff
质量.许多新的"diffopt"
设置如:
set diffopt+=internal,algorithm:patience
是个很好的设置.
"\
继续行注释
;见line-continuation-comment
:
au FileType git"\ Go to commit.\ nnoremap <Leader>g :exe printf(":!cd ~/src/vim && git diff %s^\!", split(getline("."), ' ')[1])<CR>"\ Delete commit.\| nnoremap <Leader>d :call search('^commit ', 'bc') \| :exe 'd' . (search('^commit ', 'n') - line("."))<CR>
cfilter
插件
过滤快修/位置列表
'vartabstop','varsofttabstop'
可变制表位宽度
,如set vartabstop=4,8
使第一个制表符
为4个
空格,其余为8个
空格.
选项集(OptionSet)autocmd
每当设置
选项时触发.
提示缓冲
主要用来给作业
提供用户输入
.
允许:unlet
的$ENV
以前无法真正取消
设置环境变量
(只需设置为空串
).
CTRL-R CTRL-L
在命令行
中,从缓冲
插入行
无参的job_info()
列举所有作业
如果目录已存在,mkdir('p')
不会失败
添加终端API
.
见terminal-api
这里.
trim()
清除空格
;之前必须使用substitute()
,这里.
将"!"
添加到"guioptions"
对!shell
命令,使用Vim
终端窗口.
终端菜单
使:popup
和右击,在终端
中工作.
窗口
控制台中的24
位颜色
见"termguicolors"
.
‘pumwidth’
补全
菜单的最小宽度
.
DirChanged
事件
(使用:cd,:lcd
等)更改目录
时,[这里]9https://vimhelp.org/autocmd.txt.html#DirChanged)
CmdlineChanged
事件
在命令行
中,更改
文本后,这里.
2017
TextYankPost
事件
复制或删除
文本后,这里.
win_screenpos()
.
取窗口
位置这里.
CmdlineEnter,CmdlineLeave
进入和离开
命令行时.1,2
:terminal
终端缓冲.
--clean,'viminfofile'
不用插件,使用默认
设置启动Vim
.
"cinoptions"
中的E标志
为extern
块设置
缩进.
'pyxversion'
,:pythonx
根据可用代码,更轻松地在Python2
和3
中运行Python
代码.