This version saves and restores the view position while saving the buffer, to keep the current view unchanged after doing ":w", which previously caused the window to scroll back to the very beginning of the buffer. I believe it's needles to say how annoying and actually counterproductive that was.
This version also eliminates the "Press ENTER or type command to continue" message, which was previously displayed after opening larger binary files. The use of "silent" and "redraw!" commands is also tailored specifically to avoid screen flickering, e.g. when doing ":w", caused by the buffer being filtered by an external command. While there, reformat the code to make it more readable, and use longer versions of the commands, to make it slightly more consistent and more understandable to newcomers. --- runtime/doc/tips.txt | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/3d5c6f3fb9d55bb68f25f8b7b2ace8fc7a4128ef.1691476159.git.dsimic%40manjaro.org.
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt index ea8d538bf..79b1574e2 100644 --- a/runtime/doc/tips.txt +++ b/runtime/doc/tips.txt @@ -431,14 +431,26 @@ comma-separated list of extension(s) you find yourself wanting to edit: > " vim -b : edit binary using xxd-format! augroup Binary - au! - au BufReadPre *.bin let &bin=1 - au BufReadPost *.bin if &bin | %!xxd - au BufReadPost *.bin set ft=xxd | endif - au BufWritePre *.bin if &bin | %!xxd -r - au BufWritePre *.bin endif - au BufWritePost *.bin if &bin | %!xxd - au BufWritePost *.bin set nomod | endif + autocmd! + autocmd BufReadPre *.bin set binary + autocmd BufReadPost *.bin + \ if &binary + \ | execute "silent %!xxd -c 32" + \ | set filetype=xxd + \ | redraw + \ | endif + autocmd BufWritePre *.bin + \ if &binary + \ | let s:view = winsaveview() + \ | execute "silent %!xxd -r -c 32" + \ | endif + autocmd BufWritePost *.bin + \ if &binary + \ | execute "silent %!xxd -c 32" + \ | set nomodified + \ | call winrestview(s:view) + \ | redraw + \ | endif augroup END ==============================================================================
