useful commands

command! -nargs=0 -bar -range=% Reverse
    \       let save_mark_t = getpos("'t")
    \<bar>      <line2>kt
    \<bar>      exe "<line1>,<line2>g/^/m't"
    \<bar>  call setpos("'t", save_mark_t)
nnoremap <Leader>r :Reverse <bar> nohlsearch<CR>
xnoremap <Leader>r :Reverse <bar> nohlsearch<CR>

command! -nargs=0 DocTocUpdate execute 'silent !/usr/local/bin/doctoc --notitle --update-only --github --maxlevel 3 %' | execute 'redraw!'
command! -nargs=0 DocTocCreate execute 'silent !/usr/local/bin/doctoc --notitle --github --maxlevel 3 %' | execute 'redraw!'
command! -nargs=1        First execute                           'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')
command! -nargs=1 -range First execute <line1> . ',' . <line2> . 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')
command! -nargs=0        Iname execute 'echo expand("%:p")'

Tabularize

[!TIP|label:references:]

specifier comments
l<N> left-align (with N spaces padding)
r<N> right-align (with N spaces padding)
c<N> center-align (with N spaces padding)

:Tabularize /,/r1c1l0 means:

  • splitting fields on commas (:)
  • print everything before the first comma right aligned, then 1 space
  • then the comma center aligned, then 1 space,
  • then everything after the comma left aligned.

  • including the <sep>

    • align to left

      :Tabularize /<sep>
      
      • or
        :Tabularize /<sep>/l1
        
    • align to center

      :Tabularize /<sep>/r1c1l0
      
    tabularize
    1.3.4.1.1 -- tabularize
  • align without <sep>

    [!NOTE] help /zs

    :Tabularize /<sep>\zs/<specifier>
    

align with the N pattern

i.e.: the second match (=)

  • align on first matche

    • align the first :
      :Tabularize /^[^:]*\zs:
      
      or
      :Tabularize /:.*
      
    tabularize-5
    1.3.4.1.2 -- tabularize-5
    • via vim cmd

      [!NOTE] only for default left-alignemnt. Not support customized right/middle alignment. i.e.: /r1c1l0

      command! -nargs=1 -range First exec <line1> . ',' . <line2> . 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')
      
  • align with 2nd matches

    :Tabularize /^\(.\{-}\zs=\)\{N}/
                 |
                `^` means start of the line
    
    align with the 2nd matches
    1.3.4.1.3 -- align with the 2nd matches
  • for every N matches
    : Tabularize /\(.\{-}\zs=\)\{N}/<specifier>
                 |
                 no `^` means every `{N}` matches
    
    • or
      :Tabularize /\v(.{-}\zs\=){N}/<specifier>
      

align on specific symbol

[!NOTE|label:pre condition:]

  • align the first : and last matches , as below:
    [
    isRunning : proc.getOrDefault( 'run' , false ) ,
    name : proc.getOrDefault( 'name' , '') ,
    runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
    type : proc.type.split('^.*\\u00BB\\s*').last() ,
    ]
    
  • first :

    reference: via

    • /^[^;]*\zs:
    • /^[^;]*\zs:/r1c1l0
    • /^[^;]*/r1c1l0
    • /^[^:]*\zs:

      isRunning    : proc.getOrDefault( 'run' , false ) ,
      name         : proc.getOrDefault( 'name' , '') ,
      runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
      type         : proc.type.split('^.*\\u00BB\\s*').last() ,
      

      tabularize-1 tabularize-2

    • /^[^:]*\zs/r1c1l0

         isRunning  : proc.getOrDefault( 'run' , false ) ,
              name  : proc.getOrDefault( 'name' , '') ,
      runningStage  : proc.getOrDefault( 'stage' , ['all'] ) ,
              type  : proc.type.split('^.*\\u00BB\\s*').last() ,
      
    • /^[^:]*\zs:/r1c1l0

         isRunning : proc.getOrDefault( 'run' , false ) ,
              name : proc.getOrDefault( 'name' , '') ,
      runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
              type : proc.type.split('^.*\\u00BB\\s*').last() ,
      
      tabularize-3
      1.3.4.1.4 -- tabularize-3
    • /^[^:]*/r1c1l0

        isRunning   : proc.getOrDefault( 'run' , false ) ,
          name      : proc.getOrDefault( 'name' , '') ,
      runningStage  : proc.getOrDefault( 'stage' , ['all'] ) ,
          type      : proc.type.split('^.*\\u00BB\\s*').last() ,
      
    • /^[^:]*:/r1c1l0:

        isRunning :  proc.getOrDefault( 'run' , false ) ,
          name :     proc.getOrDefault( 'name' , '') ,
      runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
          type :     proc.type.split('^.*\\u00BB\\s*').last() ,
      
  • last ,

    tips:

    • actually the pattern not matches with the final ,, but matches with )<.*> ,

    sample code:

       isRunning : proc.getOrDefault( 'run' , false ) ,
            name : proc.getOrDefault( 'name' , '') ,
    runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
            type : proc.type.split('^.*\\u00BB\\s*').last() ,
    
    • /)[^,]*\zs,

         isRunning : proc.getOrDefault( 'run' , false )       ,
              name : proc.getOrDefault( 'name' , '')          ,
      runningStage : proc.getOrDefault( 'stage' , ['all'] )   ,
              type : proc.type.split('^.*\\u00BB\\s*').last() ,
      
      • or even better align

        • :1,3Tabularize /, or :'<,'>Tabularize /,
             isRunning : proc.getOrDefault( 'run'   , false )   ,
                  name : proc.getOrDefault( 'name'  , '')       ,
          runningStage : proc.getOrDefault( 'stage' , ['all'] ) ,
                  type : proc.type.split('^.*\\u00BB\\s*').last() ,
          
        • :Tabularize /)[^,]*\zs,
             isRunning : proc.getOrDefault( 'run'   , false )     ,
                  name : proc.getOrDefault( 'name'  , '')         ,
          runningStage : proc.getOrDefault( 'stage' , ['all'] )   ,
                  type : proc.type.split('^.*\\u00BB\\s*').last() ,
          
      tabularize-4
      1.3.4.1.5 -- tabularize-4
Copyright © marslo 2020-2024 all right reserved,powered by GitbookLast Modified: 2024-10-30 04:30:30

results matching ""

    No results matching ""