2401vim,vim重要修改更新大全

原文

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()中添加offsetsize参数,允许读取符设备

之前,总是读取整个文件,读块.

添加'lispoptions'

设置lispoptions=indentexpr:1,在启用'lisp'时允许使用'indentexpr'.

添加TextChangedT

终端窗口中,更改文本后触发.

"shortmess"中添加"C"

补全(ins-completion)过程中抑制消息

声音功能可在macOS上运行

sound_playevent()这里现在适合macOS.

添加:echowindow

弹窗中显示消息;同时添加popup_findecho()这里.这里

"fillchars"中添加最后一行

设置当'display'包含fillcharstruncate使用的符.

添加"splitkeep"

控制打开,关闭或调整水平分割时的滚动行为.

matchaddpos()可添加许多匹配项

以前限制为8个,这里.

虚文本

允许添加虚文本到缓冲.

放弃对WindowsXPVista的支持

添加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毫秒.

在可视模式下的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"时,高亮前导空格.

检测终端中的焦点事件

FocusGainFocusLost自动命令可在终端内工作.见xterm-focus-event.

:sleep!

休息并隐藏光标.

添加charcol(),getcharpos(),setcharpos(),getcursorcharpos(),setcursorcharpos()

col(),getpos(),setpos(),getcurpos(),cursor()多字节相关版本.

2020

charidx()

转换字节索引符索引.

添加VimSuspendVimResume

暂停/恢复时触发;仅针对而不是SIGSTP/SIGCONT信号.1,2

添加

更改键映射中的模式,以便无需使用,插入或可视模式中映射总是有效.如,noremap:normal!K

:sortsort()可本地相关排序

:sortlsort(...,'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()

解析时间串这里

: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 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.类似带有:lcdwindow-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组合键

gtgT切换选项卡.主要用来从终端窗口切换.

*=,/=,%=

如,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

根据可用代码,更轻松地在Python23中运行Python代码.

你可能感兴趣的:(vim,vim)