• vim更改背景等


    文本中每个位置的结果高亮显示,是根据该位置嵌套最深语法匹配设置的.如果这样的匹配缺少背景属性,则就用正常组.
    因此,必须独立更改每个"最终"比赛亮点.所以答案是否定的,你不能.至少,不能通过语法匹配机制.
    全局变量仍与旧脚本中的相同,因此unlet像以前一样工作.唯一的区别是现在总是需要g:前缀来访问全局变量.
    Vim9脚本中,:var用于定义外部不可见的局部变量.直接g:指定全局变量,尽量,用%=%<.
    在要截断字段前放%.默认这是第一个,即文件名太长.如,可查看默认状态行工作方式.
    :h statusline.
    "+p或"*p,复制时保存缩进.

    :autocmd BufNewFile,BufReadPost *.{yaml,yml} echo 'a'
    //自动命令
    :autocmd BufNewFile,BufReadPost *.{yaml,yml}
    //查看自动命令.
    
    • 1
    • 2
    • 3
    • 4

    设置xamlxml类型.

    :set filetype=xml
    au BufNewFile,BufRead *.xaml setlocal filetype=xml
    
    • 1
    • 2

    替换单词:

    :%s/^\w\+/\=substitute(submatch(0), '_\(\a\)', '\u\1', 'g')
    :[range]normal ^crc.
    //https://github.com/tpope/vim-abolish
    //处理单词变体.
    
    • 1
    • 2
    • 3
    • 4

    exepath()/executable来查找可执行文件.

    nnoremap gd m':keepjumps normal!gd$Bgf<CR>:noh<CR>
    
    • 1

    :keepjumps允许你在不更改跳转列表就执行命令,但映射使用正常模式命令和搜索.你可用:normal命令行运行正常模式命令,然后应用:keepjumps.
    我用:$B正常模式命令替换了你的搜索,它按不同的方式移动到相同的位置.
    此外,因为你正在使用:keepjumps,所以在运行gd前的位置不会存储在跳转列表中,因此用Ctrl-O返回时,会在移动到执行映射位置前跳转位置.为此,在运行:keepjumpsnormal命令之前使用m'手动添加到期望光标至跳转列表中.

    映射右侧不是命令,它不能有与之关联的脚本环境.因此,无法访问其中的脚本局部变量.
    可使用窗口局部变量来存储每个窗口数据,或在适当时使用全局变量.
    也可从映射中调用脚本局部函数(从而在内部访问脚本局部变量).但在Vim脚本中,局部函数是名字混乱的"全局变量",因此与变量不同,可从地方访问.

    augroup allfiles
        autocmd FileType * :set nocindent noexpandtab incsearch hlsearch
    augroup END
    
    • 1
    • 2
    • 3

    所有文件,加选项.
    g:syntax_on,确定是否打开语法高亮.

    :map <F7> :if exists("g:syntax_on") <Bar>
        \   syntax off <Bar>
        \ else <Bar>
        \   syntax enable <Bar>
        \ endif <CR>
    //可用函数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    单独切换每个缓冲区的语法状态,

    syntax manual
    map <F12> <cmd>let &syntax = exists('b:current_syntax') ? 'OFF' : 'ON'<CR>
    
    • 1
    • 2

    bwipeout完全删除缓冲区,bdelete只是隐藏.
    {为"排他性动作",如wdw动作.
    opfunc中准确地说,必须解析动作类型参数并采取相应的行动,即对于"行"运动,在新行上添加环绕等.
    vim9读寄存器:

    vim9script
    def ReadReg(file: string)
      readfile(file)->mapnew((_, line) => {
        var [reg, content] = split(line, ': ')
        execute $'@{reg} = {content}'
      })
    enddef
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    备份再恢复:

    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')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    :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`后面当作串,加至某个命令中.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    vim设置标题串:

    :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")
    :set title titlestring=%<%F%=%l/%L-%P titlelen=70
    
    
    • 1
    • 2
    • 3
  • 相关阅读:
    logging基本使用
    C Primer Plus第九章编程练习答案
    langchain 之 Tools 多案例使用(一)
    14.9 Socket 高效文件传输
    卷积层的输出
    AArch64 TrustZone
    【Hadoop】- MapReduce & YARN的部署[8]
    2022杭电多校联赛第五场 题解
    使用PM2部署goweb工程
    ConcurrentHashMap源码解读(jdk1.8以上版本)
  • 原文地址:https://blog.csdn.net/fqbqrr/article/details/126308782