原文
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 END
See 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
毫秒.
在可视
模式下"放"
(粘贴
)文本,而不会复制已删除
文本到未命名寄存器
中.
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
.
休息并隐藏
光标.
charcol(),getcharpos(),setcharpos(),getcursorcharpos(),setcursorcharpos()
col(),getpos(),setpos(),getcurpos(),cursor()
的多字节
相关版本.
2020
charidx()
转换字节索引
为符索引
.
VimSuspend
和VimResume
暂停/恢复
时触发;仅针对
而不是SIGSTP/SIGCONT
信号.1,2
勿更改
此键映射
中的模式
,以便无需使用
或
,插入或可视
模式中映射
总是有效
.如,noremap
:sort
和sort()
可本地相关排序:sortl
或sort(...,'l')
.
matchfuzzy(),matchfuzzypos()
"模糊"
匹配.
InsertLeavePre
离开
插入模式前触发这里.
echo value ??
如果值为空,则用上面.
gettext()
可用来翻译
插件.这里
setcellwidths(),charclass()
允许覆盖宽度歧义符
的显示宽度
.
g;
支持:tabnext#
,:tabclose#
等g
返回上次访问的选项卡
,而:tab*
命令中的#
引用上次访问的选项卡
.
expand('')
对*func
和*expr
设置很有用,如
let &includexpr = expand('' ) .. '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"
在数字
前忽略-
,并总是当作
和
的正,以便在如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()
解析
时间串这里
在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 END
text
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()
取目录
内容这里.
指定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:
变量.
"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个
空格.
autocmd
每当设置
选项时触发.
主要用来给作业
提供用户输入
.
:unlet
的$ENV
以前无法真正取消
设置环境变量
(只需设置为空串
).
CTRL-R CTRL-L
在命令行
中,从缓冲
插入行
job_info()
列举所有作业mkdir('p')
不会失败API
.见terminal-api
这里.
trim()
清除空格
;之前必须使用substitute()
,这里.
"!"
添加到"guioptions"
对!shell
命令,使用Vim
终端窗口.
使:popup
和右击,在终端
中工作.
窗口
控制台中的24
位颜色见"termguicolors"
.
补全
菜单的最小宽度
.
DirChanged
事件(使用:cd,:lcd
等)更改目录
时,[这里]9https://vimhelp.org/autocmd.txt.html#DirChanged)
CmdlineChanged
事件在命令行
中,更改
文本后,这里.
2017
TextYankPost
事件复制或删除
文本后,这里.
win_screenpos()
.取窗口
位置这里.
CmdlineEnter,CmdlineLeave
进入和离开
命令行时.1,2
终端缓冲.
--clean,'viminfofile'
不用插件,使用默认
设置启动Vim
.
"cinoptions"
中的E标志为extern
块设置
缩进.
'pyxversion'
,:pythonx
根据可用代码,更轻松地在Python2
和3
中运行Python
代码.