Skip to content

eiro/slides.vim

Repository files navigation

› slides.vim: simple slides made simple

   ~ 50 lines of vim config
   WYSIWYG
   emphasize/highlighted with non breaking spaces
   easy mode switching (edition/presentation)

        :set fen! list! 

› when ?

     need slides, have no time
     prototyping
     remote/collaborative display

› install

  clone git@github.com:eiro/slides.vim.git as a start section of a vim pack.
  if you don't know about packs, I suggest to read `:help packages`.
  if you don't care, just follow those instuctions.

    mkdir ~/.vim/pack/slides.vim/start
    git clone -C !$ git@github.com:eiro/slides.vim.git

› prototyping

    ▶ git revision
    ▶ lightweight as a text file
    ▶ autofolding: quick rearange
    ▶ WYSIWYG

› remote/collaborative display

    ▶ ssh forced command
    ▶ slides.vim + ii + tmux + ...

› cons ?

    only text, code, emojis and all unicode but ...

     vim customization (see emphasize slide)
     !eog -f  ~/slides*(o)& when things get visual

› system requirement

     a fullscreen terminal
     vim + slides.vim
     your *.slides

› which term ?

    Worth watching first: Features of a Modern Terminal Emulator
    https://www.youtube.com/watch?v=9DgQqDnYNyQ

    I tested terminology, gnome-terminal, st,
    tilix, kitty, coolretroterm.

› so which term ?

    both kitty and tilix have

    👍 good support of 256 colors term
    👍 nice emoji rendering
    👍 transparency and background

› SO which term ?

    kitty renders "▒░" as a field of dots, which
    is very hugly. did I miss an option ?

    I use tilix.

› special mention: coolretroterm

    Awesome theming for old school or futuristic/cyberpunk
    looking.

    Now available in debian package.

    I used to use a docker file to build it:
    (https://github.com/eiro/slides.vim/blob/master/tips.md)

› usage

    # install slides.vim (:h packages)
    # vim is now aware of .slides file extension

    $ vim yourtalk.slides

› insertion mappings


    (*    ┃ ▶<space>
    (-    ┃ <space>
    ("    ┃ ›<space>
    (5    ┃  <cr> <cr> <cr> <cr> <cr><esc>5kA

    " TIP: whenever you  want to edit (:h 'fen)
    :set fen!

› presentation mappings

    in normal mode

    next slide       ┃ PageDown
    last slide       ┃ PageUp
    show/hide agenda ┃ :AgendaToggle<cr>

› emphasize

    because some words are important
    you can use npsp (alt-space) to
    emphasize them.

› SlidesRC

the SlideRC command can abitrary vim code in the range

    /^"<vim/,/^"vim>/

some examples coming...

› SlidesRC (define the flag)

so here is the way to turn a BWR (blue, white, red)
into a french flag

"<vim
syn match FranceFlagBlue   "\vB{4}"
highlight FranceFlagBlue   ctermbg=lightblue ctermfg=lightblue
syn match FranceFlagWhite  "\vW{4}"
highlight FranceFlagWhite  ctermbg=white ctermfg=white
syn match FranceFlagRed    "\vR{4}"
highlight FranceFlagRed    ctermbg=red ctermfg=red
"vim>

    BBBBWWWWRRRR
    BBBBWWWWRRRR

› SlidesRC (theming)

theming is basically redefining those 3 highlights:

"<vim
    highlight SlideTitle  cterm=bold ctermbg=blue ctermfg=white
    highlight emphasize   cterm=bold ctermfg=darkred ctermbg=none
    highlight Folded      cterm=none ctermbg=none ctermfg=white
"vim>

› possible improvements

     resurect subsections the right way: 2 lines

        section title
        slide title

     more highlighing possibilities
     automatically gnome-screenshot every slide
      to build a pdf version

› tips: editing

     toggle numbers and folding (switch to edition mode)
        :set nu! fen!
     next slide
›        /^

› tips: digraphs

    :h digraphs

    get the list of digraphs in a text file

        :redir > ~/digraphs.txt
        :digraphs
        :redir END
        :e ~/digraphs.txt

    define a new digraph

        " in zsh: print $[16#1F44D]
        dig +1 128077

    so now <c-k>+1 means 👍

› drawing with digraphs

    draw charts and tables can be drawn
    with digraphs:

    vv │ vertical
    hh ─ horizontal
    vh ┼ vertical and horizontal
    vr ├ vertical and right
    lv ┤ left     and vertical
    dh ┬ down  horizontal
    uh ┴ up    horizontal
    ld ┐ left down
    ur └ up right

    and so on ...

› drawing with digraphs: examples

    ┌│┐ think border box:
    └┘
4!  ┊ 4-┈ 4_ ┉ 3- ┄
4/  ┋

    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃RD                          LD ┃
    ┃Vr                          Vl ┃
    ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
    ┃                               ┃
    ┃                               ┃
    ┃                               ┃
    ┃UR                           UL┃
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

› drawing with digraphs: tips

    use numeral adjectives:
    5i<c-k>vv gives you ─────

    get used to <c-v> to resize cols:
    <c-v>4l8jx to remove 4 char width
    <c-v>8jx5p to add 4 char width

    5i<c-k>vv gives you ─────

    use upercase to bold:
    <c-k>vv<c-k>VV gives you │┃

› maths and digraphs

    <c-k>FA to get ∀ but also

   α *a  also greek alphabet is available with *
    β *b
    π *p
    ∏ *P

    ∀ FA
    ∈ (-
    ∞ 00
    ⌠ Iu
    │ vv
    ⌡ Il
    ∑ +Z
    ∏ *P

› maths and digraphs

    FE E │ TE ∃ │ /0 ∅ │ DE ∆ │ NB ∇ │ (- ∈ │ -) ∋ │
    *P ∏ │ +Z ∑ │ -2 − │ -+ ∓ │ *- ∗ │ Ob ∘ │ Sb ∙ │
    RT √ │ 0( ∝ │ 00 ∞ │ -L ∟ │ -V ∠ │ PP ∥ │ AN ∧ │
    OR ∨ │ (U ∩ │ )U ∪ │ In ∫ │ DI ∬ │ Io ∮ │ .: ∴ │
    :. ∵ │ :R ∶ │ :: ∷ │ ?1 ∼ │ CG ∾ │ ?- ≃ │ ?= ≅ │
    ?2 ≈ │ =? ≌ │ HI ≓ │ != ≠ │ =3 ≡ │ =< ≤ │ >= ≥ │
    <* ≪ │ *> ≫ │ !< ≮ │ !> ≯ │ (C ⊂ │ )C ⊃ │ (_ ⊆ │
    )_ ⊇ │ 0. ⊙ │ 02 ⊚ │ -T ⊥ │ .P ⋅ │ :3 ⋮ │ .3 … │
    Eh ⌂ │ <7 ⌈ │ >7 ⌉ │ 7< ⌊ │ 7> ⌋ │ NI ⌐ │ (A ⌒ │
    TR ⌕ │ Iu ⌠ │ Il ⌡ │ </ 〈│ /> 〉│ Vs ␣ │ Vs ␣ │
    => ⇒ │ == ⇔ │ -> → │ FA ∀ │ dP ∂

    and more ... see :digraphs

› example

    ℚ = { (𝑚 ,𝑛) | (𝑚 ,𝑛) ∈ ℤ  Χ ( ℤ \ {0} ) }

› tips: emojis

    iab :-) ☺️
    iab xD 😃
    iab x3 😍
    iab :-( ☹️
    iab :'( 😭
    iab D:< 😱
    iab :') 😂
    iab :-O 😲
    iab :-* 😘
    iab :+1 👍
    iab :-/ 🤔
    iab :$ 😖
    iab :-X 🤐
    iab B) 😎
    iab %) 😵
    iab :## 🤢
    iab !m! 🤘
    iab ;-o 🤨
    iab _ok 🗸

› tips: more emojis from gnome

    if you're using gnome:
     install gnome-characters and gnome-character-map
     activate "characters" in gnome search
     now you can search for "pile of " to get 💩

› more tips

    just read tips.md
    (https://github.com/eiro/slides.vim/blob/master/tips.md)

› Known bugs

    you can't have more than 1 emphasize in a line
    because (say X is nbsp):

        Xem1XtextXem2X

    you want to emphasize em1 and em2 but text also
    is a region between 2 X so the whole line is
    highlighted.

› history

     written   in 2009 because of a deadline
     published in 2010 because of a deadline
     evolved on my laptop since then because of deadlines
     used at Journées Perl 2018
     evolutions and documentation pushed to github
      because someone wanted to know

› see also

    I use to use slides.vim when I ran out of time.
    Nowadays, unicode symbols and emojis are randered
    nicely in terminals so I can do some nice looking
    presentations using slides.vim.

    to be productive with slides.vim, you should be
    confortable with abbreviations (:h :iab)
    and digraphs (:h :digr) and learn about the basic
    ones.

    I wasn't aware of vroom and it seems all the other
    vim presentation plugins came after my own tool.
    slides.vim became exactly what I want: 30 lines
    of viml to produce slides in a very short time
    with a look I really like so I have no reason to
    just even test the other ones and the next slides
    are probably unfair.

› other presentation tools

  vroom (the only one I knew about in circa 2010)
  https://metacpan.org/pod/distribution/Vroom/lib/Vroom.pod

vimdeck     https://github.com/tybenz/vimdeck
git-slides  https://github.com/gelisam/git-slides
presenting  https://github.com/sotte/presenting.vim
pip slides  https://pypi.org/project/slides.vim/

› stuck on slides.vim because

   Probably too         │ vimdeck
   heavy/complicated    │ vroom
                        │ pip slides

› stuck on slides.vim because

  renders badly         │ presenting
  according to          │ git-slides
  screenshots           │

› outside of vim

    pandoc can turn markdown files into
     a beamer file (latex class)
     a reveal.js file

    pug, stylus and livescript can used
    in combinaison with
    ▶ pandoc + reveal.js
    ▶ impress.js


› Thank you

     questions ?
     fork me! http://github.com/eiro/slides.vim

About

yet another WYSIWYG presentation editor

Resources

Stars

Watchers

Forks

Packages

No packages published