SlideShare uma empresa Scribd logo
1 de 243
Baixar para ler offline
VIM Hacks
        Why Vim
  Vim
                  c9s / Cornelius

                   AIINK.com
It doesn’t matter
It does matter
...
Microsoft
Visual Studio
Eclipse
Code Block
Notepad++
....
....
‱
‱
‱   IDE , Editor
‱
‱   IDE , Editor
‱     XXX Editor ..
‱
‱          IDE , Editor
‱            XXX Editor ..
‱   ....
Microsoft
Windows      ...
GEdit
Emacs
TextMate
VIM
#!/usr/bin/env perl
my $hppiness = COS::CUP();
#!/usr/bin/env perl
my $hppiness = COS::CUP();

     Oops!
         “a”
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                             xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                             xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                         xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                        xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                      xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                     xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                    xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                  xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                 xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
               xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
            xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
        xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
      xN
#!/usr/bin/env perl
my $hppiness = COS::CUP();
#!/usr/bin/env perl
my $happiness = COS::CUP();
#!/usr/bin/env perl
my $happiness = COS::CUP();
                              ?
#!/usr/bin/env perl
my $happiness = COS::CUP();
                              ?
The VIM way...
VIM:
#!/usr/bin/env perl
my $hppiness = COS::CUP();
                        F    h
VIM:
#!/usr/bin/env perl
my $happiness = COS::CUP();
       a ppend a
VIM
VIM
IDE
...
...
!!!
!!!



      !!!
VIM
VI Improved
Learning Curve
Vim
Vim
‱ Vim
Vim
‱ Vim
‱ gVim
Vim
‱ Vim
‱ gVim
‱ gVim Easy
Vim
‱ Vim
‱ gVim
‱ gVim Easy
‱ MacVim
Vim
‱ Vim
‱ gVim
‱ gVim Easy
‱ MacVim
‱ Vi in Emacs
Vim
‱ Vim
‱ gVim
‱ gVim Easy
‱ MacVim
‱ Vi in Emacs
‱ Vi in Bash
Vim
‱ Vim
‱ gVim
‱ gVim Easy
‱ MacVim
‱ Vi in Emacs
‱ Vi in Bash
‱ etc ...
Features
1.
     Mode
INSERT
NORMAL
 VISUAL
 SELECT
  ... et cetera
ESC
      [Ii]NSERT
      NORMAL
      [Vv]ISUAL
1.1 Normal Mode
Motion
HJKL
←↓↑→
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	             Cursor
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #                         [{

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}                                  f@

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}                                       $

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}      ^

sub func1 {



}
# comments ...
    H
foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	 M
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
        L
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep
	 	
}                    C
                             Insert mode
sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

sub func1 {



}
# comments ...

foreach my $foo ( @bar ) {

    #

   my @outs = grep /pattern/ , @list;
	 	
}

     %
sub func1 {



}
:h motion.txt
1.2 Insert Mode
Editing text
Insert Mode

‱ i : Insert text before the cursor
Insert Mode

‱ i : Insert text before the cursor
‱ I : Insert text before the ïŹrst non-blank in the
  line
Insert Mode

‱ i : Insert text before the cursor
‱ I : Insert text before the ïŹrst non-blank in the
  line
‱ a : Append text after the cursor
Insert Mode

‱ i : Insert text before the cursor
‱ I : Insert text before the ïŹrst non-blank in the
  line
‱ a : Append text after the cursor
‱ A : Append text at the end of the line
1.3 Visual Mode
Select region
Visual Mode

‱ v : start Visual mode per character.
Visual Mode

‱ v : start Visual mode per character.
‱ V : start Visual mode linewise.
Visual Mode

‱ v : start Visual mode per character.
‱ V : start Visual mode linewise.
‱ Ctrl-v : start Visual mode blockwise.
Visual Mode

‱ v : start Visual mode per character.
‱ V : start Visual mode linewise.
‱ Ctrl-v : start Visual mode blockwise.
                    operator      y (yank) , d
                (delete) , c (change) ... etc
2.
Syntax Highlight Support
/opt/local/share/vim/vim72
$ ls -1 syntax/ | wc -l
   520
Syntax
~/.vim/syntax/[filetype].vim
~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]
~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]
syn region [id] start=[re] end=[re]
~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]
syn region [id] start=[re] end=[re]
syn keyword [id] [keyword] ...
~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]
syn region [id] start=[re] end=[re]
syn keyword [id] [keyword] ...

hi [id]   guibg=[color] ctermfg=[color]
:help syntax.txt
3.
     ENCODING
:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8
:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8
Vim




:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8
:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8
:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8
:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

                               Terminal
:help encoding
4.
 Key Mapping
:map
:nmap
:vmap
:imap
:smap
:xmap
... more
:map       (all)

:nmap      (normal mode)

:vmap      (visual mode)

:imap      (insert mode)

:smap      (select mode)

:xmap      (visual , select mode)
... more
:map       (all)

:nmap      (normal mode)

:vmap      (visual mode)

:imap      (insert mode)

:smap      (select mode)

:xmap      (visual , select mode)
... more
:nmap <C-c><C-c> :!gcc -Wall % -o %:r.out<CR>



     Ctrl C    Ctrl C

                GCC
                                         .out
Normal Mode      Tab   Shift-Tab


   nmap       <tab>   v>
   nmap       <s-tab> v<

   vmap       <tab>   >gv
   vmap       <s-tab> <gv
nmap        <tab>   v>
         nmap        <s-tab> v<

         vmap        <tab>   >gv
         vmap        <s-tab> <gv

Visual/Select Mode       Tab   Shift-Tab
nmap        <tab>   v>
         nmap        <s-tab> v<
                        When mappings and menus are deïŹned with
                        the |:vmap| or |:vmenu| command they work
         vmap        <tab>   >gv
                           both in Visual mode and in Select mode.
                          When these are used in Select mode Vim

         vmap        <s-tab> <gv
                          automatically switches to Visual mode, so
                         that the same behavior as in Visual mode is
                                           effective.


Visual/Select Mode       Tab         Shift-Tab
imap <F2> <C-R>=strftime("%c")<CR>


   Insert Mode       F2
cmap   <c-a>   <home>
cmap   <c-e>   <end>
cnoremap <c-b>        <left>
cnoremap <c-d>        <del>
cnoremap <c-f>        <right>
cnoremap <c-n>        <down>
cnoremap <c-p>        <up>

cnoremap   <esc><c-b> <s-left>
cnoremap   <esc><c-f> <s-right>

       Command Mode      Bash     Key Binding
:h map.txt
5.
 TEXT OBJECT
Text Object

‱ word
‱ string      ⇛             action
‱ paragraph       (yank,delete,change ...etc)

‱ block
Operator Mapping

v|c|d       i|a            { | [ | ( |“ |‘

   visual                         Region
  change    Inner Object            {}
  delete     An Object              []
                                    ()
                                    ““
Operator                            ‘‘
va{
function ( blah , blah )
              ci(


     function ( )

   function ( new_args )
“Hello World”
          di”


     “”

“Hello New World”
6.
     TAB PAPGES
:tabnew
:tabnew
:tabedit path/to/file
:tabnew
:tabedit path/to/file
:tabfind path/to/file
:help tabpage.txt
7.
     FOLDS
FOLD IS
Fold Methods
Fold Methods
 Syntax Fold
Fold Methods
 Syntax Fold
         :set foldmethod=syntax



           $VIMRUNTIME/syntax/*.vim
Perl                  :
/opt/local/share/vim/vim72/syntax/perl.vim


if exists("perl_want_scope_in_variables")
“ .....
if exists("perl_extended_vars")
“ .....
  if exists("perl_fold")
“ .....
                                      .vimrc
                                                      (Fold)

                             let perl_fold = 1
                             let perl_extended_vars = 1
                             “ .... etc
Fold Methods
 Syntax Fold
 Marker Fold
Fold Methods
 Syntax Fold
 Marker Fold

          :set foldmethod=marker


                  “{{{“   “}}}”
# fold this {{{
function do_something {

    echo “COSCUP”;

}
#   }}}
Fold Methods
 Syntax Fold
 Marker Fold
 Indent Fold
Fold Methods
 Syntax Fold
 Marker Fold
 Indent Fold
          :set foldmethod=indent
Fold Methods
 Syntax Fold
 Marker Fold
 Indent Fold
 Manual Fold
:set foldmethod=manual


              zf
autocmd   BufWinLeave *.*          silent mkview
autocmd   BufWinEnter *.*          silent loadview

                autocmd   mkview , loadview
                                          ~/.vim/view/
Fold Methods
 Syntax Fold
 Marker Fold
 Indent Fold
 Manual Fold
 Expr Fold (Custom Fold Function)
:set foldexpr=MyFoldLevel(v:lnum)
Fold Methods
 Syntax Fold
 Marker Fold
 Indent Fold
 Manual Fold
 Expr Fold (Custom Fold Function)
 Diff Fold
8.Modeline & FileType
ModeLine
" vim:fdm=marker:sw=2:ts=2:et:fdl=0:
"============================
" Author:   Cornelius <
cornelius.howl{at}gmail{dot}com >
" vim:fdm=marker:sw=2:ts=2:et:fdl=0:
"============================
" Author:   Cornelius <
cornelius.howl{at}gmail{dot}com >

                          Marker
                            Tab
                       Fold (Level 0   )
FileType
~/.vim/ftplugin/ruby.vim



                           vimrc
~/.vim/filetype.vim


                      ïŹletype.vim
9.
FORMATTING
:set equalprg=perltidy
:set equalprg=perltidy




                             “=”
                  perltidy
autocmd Filetype perl :set equalprg=perltidy


                 autocmd
                   equalprg
autocmd Filetype c :set equalprg=indent


               C
         GNU Ident
SQL
 $ cat bin/sql-beautify.pl
 #!/usr/bin/env perl
 use warnings;
 use strict;
 use SQL::Beautify;
 local $/;
 my $sql = SQL::Beautify->new( query => <STDIN> , spaces =>
 4 , break => "n" );
 print $sql->beautify;


autocmd Filetype sql :set equalprg=sql-beautify.pl


                          SQL
                         Filter
10. QuickFix
:grep & :make
:grep [pattern] [filepath]
:grep [pattern] [filepath]

     grepprg (   vimgrep)
      grep             QuickFix
QuickFix Window
:set grepprg=/path/to/grep

      grepprg (   VIM   grep)
:make
:make

     makeprg (    make)
MakeïŹle.            compiler
  output parser
:set makeprg=gmake

    makeprg (   make)
Result ⇛ QuickFix Window
:copen

QuickFix Window
:cclose

QuickFix Window
:cnext

   Result
:cprevious

     Result
QuickFix Window Toggle
com! -bang -nargs=? QFix cal QFixToggle(<bang>0)
fu! QFixToggle(forced)
   if exists("g:qfix_win") && a:forced == 0
      cclose
      unlet g:qfix_win
   else
      copen 10
      let g:qfix_win = bufnr("$")
   en
endf
nn        <leader>q :QFix<cr>
QuickFix Window Toggle
com! -bang -nargs=? QFix cal QFixToggle(<bang>0)
fu! QFixToggle(forced)
   if exists("g:qfix_win") && a:forced == 0
      cclose
      unlet g:qfix_win
   else
      copen 10
      let g:qfix_win = bufnr("$")
   en
endf
nn        <leader>q :QFix<cr>

             nmap    “q” , <leader>      “”
11.
  Plugin
SnipMate
  TextMate
snippet cla class .. initialize .. end
    class ${1:`substitute(Filename(), '^.', 'u&', '')`}
        def initialize(${2:args})
            ${3}
        end

    end
DBExt.vim
Oracle, Sybase, MSSQL ,
  MySQL, DBI
xml.vim
XML
FuzzyFinder.vim
 Fuzzy/Partial pattern explorer
The_NERD_TREE.vim
The NERD Commenter
taglist.vim
     ctags
macro , function , variable
cscope
C
autocomplpop.vim
MRU
most recently used
bufexplorer.vim
    Buffer Explorer
Rails.vim
git-vim
!
!
Vimana
  Vim script Manager
‱ Vimball
‱ Archive File ( zip , rar )
‱ .vim ïŹle
POWERED BY



Perl
CPAN   Vimana


 $ cpan Vimana
$ vimana search xml
$ vimana search xml
rrd.vim             - Edit RRD data with Vim.
qt.vim              - tiny tool for the uic used in Qt from
Trolltech
syntax-for-xul      - Highlighting for XML User interface Language.
maven2.vim          - Compiler plugin for maven2
 .... skip
script


$ vimana info xml.vim
xml.vim


$ vimana install xml.vim
$ vimana   install   xml.vim
$ vimana   install   rails.vim
$ vimana   install   the-nerd-tree.vim
$ vimana   install   taglist.vim
$ vimana   install   snipmate
$ vimana   install   fuzzyfinder.vim
etc ...
                               ALL Works
Git Repository
http://github.com/c9s/Vimana/tree/master
ENJOY
Thank You
Demo
  ....
Q &A

Mais conteĂșdo relacionado

Mais procurados

BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)Brendan Gregg
 
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©±
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©± Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©±
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©± Toshihiro Araki
 
Vim Rocks!
Vim Rocks!Vim Rocks!
Vim Rocks!Kent Chen
 
nGram full text search (by 읎성욱)
nGram full text search (by 읎성욱)nGram full text search (by 읎성욱)
nGram full text search (by 읎성욱)I Goo Lee.
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Jarod Wang
 
Hyper-V を Windows PowerShell から缡理する
Hyper-V を Windows PowerShell から缡理するHyper-V を Windows PowerShell から缡理する
Hyper-V を Windows PowerShell から缡理するjunichi anno
 
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°Ji-Woong Choi
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019Brendan Gregg
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDPlcplcp1
 
Nmapぼ真漟(続)
Nmapぼ真漟(続)Nmapぼ真漟(続)
Nmapぼ真漟(続)abend_cve_9999_0001
 
TMUX Rocks!
TMUX Rocks!TMUX Rocks!
TMUX Rocks!Kent Chen
 
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°ìœ”í‹€ëŠ° 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°Arawn Park
 
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–č
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–čăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–č
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–čakira6592
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spackinside-BigData.com
 
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“ æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“ National Cheng Kung University
 
Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIubunturk
 
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57Preferred Networks
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking ExplainedThomas Graf
 
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代Shengyou Fan
 

Mais procurados (20)

BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©±
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©± Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©±
Machine configoperatorăźăĄă‚‡ăŁăšă‚€ă‚€ă‹ă‚‚ă—ă‚ŒăȘă„è©±
 
Vim Rocks!
Vim Rocks!Vim Rocks!
Vim Rocks!
 
nGram full text search (by 읎성욱)
nGram full text search (by 읎성욱)nGram full text search (by 읎성욱)
nGram full text search (by 읎성욱)
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0
 
Hyper-V を Windows PowerShell から缡理する
Hyper-V を Windows PowerShell から缡理するHyper-V を Windows PowerShell から缡理する
Hyper-V を Windows PowerShell から缡理する
 
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°
[였픈소슀컚섀팅] í”„ëĄœë©”í…Œìš°ìŠ€ ëȘšë‹ˆí„°ë§ ì‚ŽíŽŽëłŽêł  ê”Źì„±í•˜êž°
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
 
Nmapぼ真漟(続)
Nmapぼ真漟(続)Nmapぼ真漟(続)
Nmapぼ真漟(続)
 
TMUX Rocks!
TMUX Rocks!TMUX Rocks!
TMUX Rocks!
 
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°ìœ”í‹€ëŠ° 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°
윔틀늰 멀티플랫폌, ëŻžì§€ì™€ì˜ ìĄ°ìš°
 
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–č
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–čăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–č
ăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚łăƒłăƒ•ă‚Łă‚°ćˆ†æžăƒ„ăƒŒăƒ« Batfish ăšăźä»˜ăćˆă„æ–č
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spack
 
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“ æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
 
Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node API
 
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper ă«ç§»èĄŒă—ăŸă—ăŸ / Kubernetes Meetup Tokyo #57
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代
[JCConf 2020] 甹 Kotlin è·šć…„ Serverless 䞖代
 

Destaque

Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.VimLin Yo-An
 
Vim your Python, Python your Vim
Vim your Python, Python your VimVim your Python, Python your Vim
Vim your Python, Python your VimMiroslav Ć edivĂœ
 
Zsh shell-for-humans
Zsh shell-for-humansZsh shell-for-humans
Zsh shell-for-humansJuan De Bravo
 
Vim kindergarten
Vim kindergartenVim kindergarten
Vim kindergartenYuta Totsuka
 
Why zsh is Cooler than Your Shell
Why zsh is Cooler than Your ShellWhy zsh is Cooler than Your Shell
Why zsh is Cooler than Your Shellbrendon_jag
 
Why Zsh is Cooler than Your Shell
Why Zsh is Cooler than Your ShellWhy Zsh is Cooler than Your Shell
Why Zsh is Cooler than Your Shelljaguardesignstudio
 

Destaque (6)

Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.Vim
 
Vim your Python, Python your Vim
Vim your Python, Python your VimVim your Python, Python your Vim
Vim your Python, Python your Vim
 
Zsh shell-for-humans
Zsh shell-for-humansZsh shell-for-humans
Zsh shell-for-humans
 
Vim kindergarten
Vim kindergartenVim kindergarten
Vim kindergarten
 
Why zsh is Cooler than Your Shell
Why zsh is Cooler than Your ShellWhy zsh is Cooler than Your Shell
Why zsh is Cooler than Your Shell
 
Why Zsh is Cooler than Your Shell
Why Zsh is Cooler than Your ShellWhy Zsh is Cooler than Your Shell
Why Zsh is Cooler than Your Shell
 

Semelhante a Vim Hacks

Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchinaguestcf9240
 
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaLin Yo-An
 
Vim Hacks (OSSF)
Vim Hacks (OSSF)Vim Hacks (OSSF)
Vim Hacks (OSSF)Lin Yo-An
 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL John Anderson
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsAbhay Sapru
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting BasicsDr.Ravi
 
JIP Pipeline System Introduction
JIP Pipeline System IntroductionJIP Pipeline System Introduction
JIP Pipeline System Introductionthasso23
 
Vim Script Programming
Vim Script ProgrammingVim Script Programming
Vim Script ProgrammingLin Yo-An
 
Ruby - Uma Introdução
Ruby - Uma IntroduçãoRuby - Uma Introdução
Ruby - Uma IntroduçãoÍgor Bonadio
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack MiddlewareLittleBIGRuby
 
Modern Catalyst
Modern  CatalystModern  Catalyst
Modern CatalystHideo Kimura
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With YouDalibor Gogic
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy CodeRowan Merewood
 
Blocks by Lachs Cox
Blocks by Lachs CoxBlocks by Lachs Cox
Blocks by Lachs Coxlachie
 
Apache Hadoop Shell Rewrite
Apache Hadoop Shell RewriteApache Hadoop Shell Rewrite
Apache Hadoop Shell RewriteAllen Wittenauer
 
Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceJesse Vincent
 

Semelhante a Vim Hacks (20)

Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchina
 
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchina
 
Sdl Basic
Sdl BasicSdl Basic
Sdl Basic
 
Vim Hacks (OSSF)
Vim Hacks (OSSF)Vim Hacks (OSSF)
Vim Hacks (OSSF)
 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting Basics
 
Gun make
Gun makeGun make
Gun make
 
JIP Pipeline System Introduction
JIP Pipeline System IntroductionJIP Pipeline System Introduction
JIP Pipeline System Introduction
 
Vim Script Programming
Vim Script ProgrammingVim Script Programming
Vim Script Programming
 
Ruby - Uma Introdução
Ruby - Uma IntroduçãoRuby - Uma Introdução
Ruby - Uma Introdução
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
Modern Catalyst
Modern  CatalystModern  Catalyst
Modern Catalyst
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With You
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Sprockets
SprocketsSprockets
Sprockets
 
Blocks by Lachs Cox
Blocks by Lachs CoxBlocks by Lachs Cox
Blocks by Lachs Cox
 
Apache Hadoop Shell Rewrite
Apache Hadoop Shell RewriteApache Hadoop Shell Rewrite
Apache Hadoop Shell Rewrite
 
Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret Sauce
 

Mais de Lin Yo-An

Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Lin Yo-An
 
Getting merged
Getting mergedGetting merged
Getting mergedLin Yo-An
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersLin Yo-An
 
OSDC.TW 2014 building popular open source projects
OSDC.TW 2014   building popular open source projectsOSDC.TW 2014   building popular open source projects
OSDC.TW 2014 building popular open source projectsLin Yo-An
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go ProgrammingLin Yo-An
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1Lin Yo-An
 
Secret sauce of building php applications
Secret sauce of building php applicationsSecret sauce of building php applications
Secret sauce of building php applicationsLin Yo-An
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLin Yo-An
 
CPAN æšĄç”„äșŒäž‰äș‹
CPAN æšĄç”„äșŒäž‰äș‹CPAN æšĄç”„äșŒäž‰äș‹
CPAN æšĄç”„äșŒäž‰äș‹Lin Yo-An
 

Mais de Lin Yo-An (9)

Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015
 
Getting merged
Getting mergedGetting merged
Getting merged
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP haters
 
OSDC.TW 2014 building popular open source projects
OSDC.TW 2014   building popular open source projectsOSDC.TW 2014   building popular open source projects
OSDC.TW 2014 building popular open source projects
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go Programming
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
 
Secret sauce of building php applications
Secret sauce of building php applicationsSecret sauce of building php applications
Secret sauce of building php applications
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
 
CPAN æšĄç”„äșŒäž‰äș‹
CPAN æšĄç”„äșŒäž‰äș‹CPAN æšĄç”„äșŒäž‰äș‹
CPAN æšĄç”„äșŒäž‰äș‹
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Vim Hacks