0
点赞
收藏
分享

微信扫一扫

vim更改背景等


文本中​​每个位置​​​的结果​​高亮​​​显示,是根据该​​位置嵌套最深​​​的​​语法匹配​​​设置的.如果这样的​​匹配​​​缺少​​背景​​​属性,则就用正常组.
因此,必须​​​独立更改​​​每个"最终"比赛亮点.所以答案是否定的,你不能.至少,不能通过​​语法匹配​​​机制.
​​​全局变量​​​仍与​​旧脚本​​​中的相同,因此​​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


举报

相关推荐

0 条评论