Improve the vimscript code in ":h hex-editing"

Commit: 
https://github.com/vim/vim/commit/6a500661a9cb7b57093cf1095aa67e9c4aabc709
Author: Dragan Simic' via vim_dev <[email protected]>
Date:   Wed Aug 9 17:23:57 2023 +0200

    Improve the vimscript code in ":h hex-editing"
    
    Save and restore the view position before and after saving the buffer,
    respectively, to keep the current view of the xxd(1)'s hex dump
    unchanged after doing ":w", which previously caused the window to
    scroll back to the very beginning of the buffer.  I believe it's
    needless to say how annoying and counterproductive that was.
    
    Get rid of 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 tailored specifically to avoid
    screen flickering, e.g. when doing ":w", which is caused by the buffer
    being filtered by an external command.
    
    Increase the number of octets per line, produced by xxd(1), from the
    default value of 16 to 32.  This puts bigger chunks of the hex dump
    on the screen and makes the whole thing much more usable.
    
    While there, reformat the code to make it more readable, and use the
    long form of the commands and variables to make the code slightly more
    consistent and more understandable to newcomers.

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
 
 ==============================================================================

-- 
-- 
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/E1qTxmG-00CgnC-8E%40256bit.org.

Raspunde prin e-mail lui