文本中每个位置的结果高亮显示,是根据该位置嵌套最深的语法匹配设置的.如果这样的匹配缺少背景属性,则就用正常组.
因此,必须独立更改每个"最终"比赛亮点.所以答案是否定的,你不能.至少,不能通过语法匹配机制.
全局变量仍与旧脚本中的相同,因此unlet像以前一样工作.唯一的区别是现在总是需要g:前缀来访问全局变量.
在Vim9脚本中,:var用于定义外部不可见的局部变量.直接g:指定全局变量,尽量,用%=和%<.
在要截断字段前放%.默认这是第一个,即文件名太长.如,可查看默认状态行的工作方式.
:h statusline.
"+p或"*p,复制时保存缩进.
:autocmd BufNewFile,BufReadPost *.{yaml,yml} echo 'a'
//自动命令
:autocmd BufNewFile,BufReadPost *.{yaml,yml}
//查看自动命令.
设置xaml为xml类型.
:set filetype=xml
au BufNewFile,BufRead *.xaml setlocal filetype=xml
替换单词:
:%s/^\w\+/\=substitute(submatch(0), '_\(\a\)', '\u\1', 'g')
:[range]normal ^crc.
//https://github.com/tpope/vim-abolish
//处理单词变体.
exepath()/executable来查找可执行文件.
nnoremap gd m':keepjumps normal!gd$Bgf<CR>:noh<CR>
:keepjumps允许你在不更改跳转列表就执行命令,但映射使用正常模式命令和搜索.你可用:normal从命令行运行正常模式命令,然后应用:keepjumps.
我用:$B正常模式命令替换了你的搜索,它按不同的方式移动到相同的位置.
此外,因为你正在使用:keepjumps,所以在运行gd前的位置不会存储在跳转列表中,因此用Ctrl-O返回时,会在移动到执行映射位置前跳转位置.为此,在运行:keepjumpsnormal命令之前使用m'手动添加到期望光标至跳转列表中.
映射右侧不是命令,它不能有与之关联的脚本环境.因此,无法访问其中的脚本局部变量.
可使用窗口局部变量来存储每个窗口数据,或在适当时使用全局变量.
也可从映射中调用脚本局部函数(从而在内部访问脚本局部变量).但在Vim脚本中,局部函数是名字混乱的"全局变量",因此与变量不同,可从地方访问.
augroup allfiles
autocmd FileType * :set nocindent noexpandtab incsearch hlsearch
augroup END
所有文件,加选项.
g:syntax_on,确定是否打开语法高亮.
:map <F7> :if exists("g:syntax_on") <Bar>
\ syntax off <Bar>
\ else <Bar>
\ syntax enable <Bar>
\ endif <CR>
//可用函数
可单独切换每个缓冲区的语法状态,
syntax manual
map <F12> <cmd>let &syntax = exists('b:current_syntax') ? 'OFF' : 'ON'<CR>
用bwipeout完全删除缓冲区,bdelete只是隐藏.
{为"排他性动作",如w与dw动作.
在opfunc中准确地说,必须解析动作类型参数并采取相应的行动,即对于"行"运动,在新行上添加环绕等.
vim9读寄存器:
vim9script
def ReadReg(file: string)
readfile(file)->mapnew((_, line) => {
var [reg, content] = split(line, ': ')
execute $'@{reg} = {content}'
})
备份再恢复:
call split('abcdefghijklmnopqrstuvwxyz', '\zs')
\ ->filter('!empty(getreg(v:val))')
\ ->map('printf("call setreg(%s, %s)",
\ string(v:val), string(getreginfo(v:val)))')
\ ->writefile('myregs.vim')
再:source myregs.vim恢复.
dict["key1"]["key2"],用da[%p来交换两个键.
保存视图:
command! -nargs=+ -complete=command Nomove call misc#nomove(<q-args>)
...
...
function! misc#nomove(cmd) abort
let l:pos = winsaveview()
try | return execute(a:cmd, '')
finally
call winrestview(l:pos)
endtry
//这里保存并恢复.
endfunction
...
...
:Nomove 10,20call Foobar(...)
//把`Nomove`后面当作串,加至某个命令中.
vim设置标题串:
:auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")
:set title titlestring=%<%F%=%l/%L-%P titlelen=70










