更改列表,:changes
显示,是更改的位置
列表,可用g;
和g,
浏览.
g+
和g-
用于撤销列表
.可用:undolist
显示它.
vim
默认关闭永久
会话列表.用set undofile
来打开.
你部分原因是,@/
在函数结束时恢复了.见:help function-search-undo
,可从函数中用return searchTerm
,并用
autocmd CursorMoved * let @/ = HighlightVisual(mode())
在set hls
后,要用redraw
.因为有时,不重画.
y
强制了普通模式,而gv
移动光标,导致函数内触发autocmd CursorMoved
,因而无穷循环
.
我在函数头尾设置并恢复set eventignore=CursorMoved
.
function! HighlightVisual(mode)
//自动突出显示当前视觉选择的所有匹配项
if mode()=~#"^[vV\<C-v>]"
set eventignore=CursorMoved
normal "hy
"保存在h中.
normal gv
let searchTerm = '\V'.substitute(escape(@h, '\/'), "\n", '\\n', "g")
let @/ = searchTerm
call histadd("search", searchTerm)
set hls
redraw
set eventignore=""
endif
endfunction
autocmd CursorMoved * :call HighlightVisual(mode())
vnoremap <silent> <ESC> :<C-u>set nohlsearch<CR>
:help zip
,加vim
至zip
中.
:execute "e $HOME/foo/bar/target-" . strftime("%Y-%m-%d") . ".txt"
可用:command!
创建命令,或nnoremap <C-s>
映射键.
^[
为C-v-esc
,而^I
为C-v-tab
.
export MANPAGER="vim -M +MANPAGER -c 'syntax off' -"
//-c额外配置.
系统:
let [w, h] = system("xrandr --query | grep ' connected primary'")->
matchlist('\d\+x\d\+')[0]->
split('x')->
map({_, v -> str2nr(v)})
vim9
读寄存器
:
vim9script
def ReadReg(file: string)
readfile(file)->mapnew((_, line) => {
var [reg, content] = split(line, ': ')
execute $'@{reg} = {content}'
})
/\<cat\>
,/\v<cat>
,\v
可减少<>+()
的转义.
:%s/\S\+\s*$/\l&/
,匹配非空格,
:%norm!$Bgul
调整文件类型
设置:
" ~/.vim/after/ftplugin/text.vim"
setlocal formatoptions-=t
" 不要忘了调整b:undo_ftplugin"
组外的autocmd!
删除所有非组内
(默认组)的自动命令
.
autocmd! BufWrite * :echom "Cats"
删除所有未归组的BufWrite *
,并加单个:echom "Cats"
命令.
autocmd
中从BufWrite
改为BufWritePost
时,空的autocmd!
会删除BufWrite
,并保留BufWritePost
.而特定事件或命令的autocmd!
会保留BufWrite/BufWritePost
.它仅删匹配的BufWritePost
.
:nnoremap cd /\d\+<enter>cgn
//修改数字.
位置列表是窗口本地快速修复列表