From 4604a1f920a9ce7be0fb7b21004c17ef66e17025 Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Thu, 20 Nov 2014 21:19:11 +0100 Subject: add vim folder --- vim/boxdraw/boxdraw.txt | 164 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 vim/boxdraw/boxdraw.txt (limited to 'vim/boxdraw/boxdraw.txt') diff --git a/vim/boxdraw/boxdraw.txt b/vim/boxdraw/boxdraw.txt new file mode 100644 index 0000000..b821a43 --- /dev/null +++ b/vim/boxdraw/boxdraw.txt @@ -0,0 +1,164 @@ +Summary +------- + * Draw diagrams and tables using "real box drawing characters" (AKA ANSI +art). + * Move rectangular/linear blocks of text around. + * Trace box-drawing typeset diagrams -- follow the lines, etc. + +Detailed description +-------------------- +These scripts facilitate drawing simple 'ANSI' graphic containing box +drawing characters (not just '+', '-' and '|', but REAL box drawing +characters). It can be useful to draw diagrams and fancy tables (at +least, I use it this way). + +Upon sourcing the script defines several macros: + + -- moves cursor in specified direction leaving trail of +box drawing characters, making all joins and crossings. +g+ -- follow line of boxdrawing characters until it reaches +intersection or ends. + in visual mode -- move selected rectangular block in +specified direction. +\e -- ends box drawing mode (unmap shift+arrows macros and restore +virtualedit value) +\b -- restarts box drawing (map shift+arrows macros and set virtual + edit=all) +\s -- selects 'single-line' boxdrawing characters +\d -- selects 'double-line' boxdrawing characters +\a -- convert all characters in selection into ascii '+', '-', '|' (utf8 + only, not implemented) +("\" prefix may be changed by changing mapleader variable, see :h mapleader) + +When rectangular block is selected, it can be moved around using + keys. Unfortunately, as of version 6.1 multibyte +characters and rectangular blocks do not live together too good, so this +feature is experimental. + +When line block is selected, and moves it up or down +nondestructively, decreases indent and increases +indent. + +Currently box drawing is supported for utf8 and cp437 (DOS) encodings. + +Script does not use any "weird" box drawing characters from unicode set +that are not present in, say, cp437. So, it is safe to save utf-8 file +in any single byte encoding that contains regular single box drawing +characters. +This script also contains mapping that converts all boxdrawing +characters in current selection into ascii '+', '-', '|'. + +If vim encoding is single byte, this script assumes cp437 (DOS). Most +encodings have boxdrawing characters at the same place, however, some +(notably, koi8-r) have them in different code postions. +If you want to use it with encoding that contains such +characters in diferent place, please drop me a note -- I will be happy +to add support for that codepage too. + +To help you determine which boxdrawing characters are suppored by your +terminal I have included file sampler.txt. Just type it (or cat it) on +the termianal and encoding that labels the block that looks "right" will +be your supported encoding. + +Note for PuTTY users +-------------------- + +It turns out that PuTTY does not translate Shift+Arrow combination into +X key code (like xterm does), so mappings will not work for this +terminal. I have modified initialization script to use instead +of + in Unix environment. + +Perl scripts +------------ + +Some box-drawing related procedures are more naturally done with +external scripts. These scripts take ascii standard input and produce +utf8 encoded standard output. + +bdua2b.pl -- converts regular '+-|'-style drawing into single-line utf8 + boxdrawing. This script has does not just blindly replace characters, + but instead looks to the neighbourhood and chooses boxdrawing + character that fits best. Use this script as a filter to convert + existing ascii drawings. + Option -ss selects single border characters, -sd -- double border, + -sh -- single vertical double horizontal, -sv single horizontal double + vertical. + +outline.pl -- outlines groups of similar characters in the input with + boxdrawing characters. Option -d makes output twice as wide, options + -s* select boxdrawing flavor as in previous script. + For example, + + aaaacc + abbcc + ccbbc + cccb + +will be converted into + + ┌───┬─┐ + │┌─┬┘┌┘ + ├┴┐└┐│ + │ └┐├┘ + └──┴┘ + +or + + ┌───────┬───┐ + │ ┌───┬─┘ ┌─┘ + ├─┴─┐ └─┐ │ + │ └─┐ ├─┘ + └─────┴─┘ + + +Both scripts were tested with ActivePerl 5.6.1. + +Plans: +------ +* Support double boxes in a cleaner way. + +Installation +------------ +Copy boxdraw.vim to the place where you normally keep vim scripts (e.g. ~/.vim +or c:\vim\vimfiles) and source it every time you want to draw a diagram or nice +table. + +You may wish also to add this to your menu by adding a line to your .gvimrc +(_gvimrc) file (use actual path to boxdraw.vim): +:menu Tools.Bo&x\ Draw :so ~/.vim/boxdraw.vim + +Environment +----------- +I run Windows and use boxdraw.vim in gvim (it supports utf-8 very +nicely) and bd-single in vim (its support of utf-8 is kind of unclear +for me). Both major Windows monospaced fonts (Courier New and Lucida +Console) support wide range of Unicode characters, including box +drawing. + +Why use box drawing characters? +------------------------------- +These characters are in Unicode standard for compatibility with wide +range of existing 8-bit encodings that have them. The wording of Unicode +standard discourages usage of such characters, other than for the +purpose of converting between encodigns and storage of legacy data. +Having said all that I found that sometimes a picture, even crude and +primitive, is worth pages of explanations. Just about the only way to +include picture in source code is to use ascii or "ansi" art. Ascii is +more compatible, but "ansi" looks way better. Since I have to use +Unicode to include cyrillic characters in comments anyway, I decided to +stop on "ansi" art as a format of choice for in-source drawings. + +Author +------ +Andrew Nikitin + +History +------- +2002-01-09 -- v0.0 -- initial upload, single boxes in utf-8 encoding +2002-01-10 -- v0.1 -- double boxes +2002-01-30 -- v0.2 -- single-byte, box->ascii conversion +2003-11-24 -- v0.3 -- perl scripts + some rectangular block movements +2004-06-18 -- v0.4 -- following the lines, updated perl scripts +2004-11-26 -- v1.0 -- combined single-byte and utf8 versions, included +sampler.txt to help determine encoding +2008-12-17 -- v1.1 -- special processing for line-block movements, changed cabbr for perl -- cgit v1.2.3-54-g00ecf