Slide 1

Slide 1 text

React.js + Vim Jake Worth 1

Slide 2

Slide 2 text

About Me Developer at Hashrocket http://jakeworth.com @jwworth React.js + Vim - Jake Worth 2

Slide 3

Slide 3 text

React.js + Vim - Jake Worth 3

Slide 4

Slide 4 text

React.js + Vim - Jake Worth 4

Slide 5

Slide 5 text

React.js + Vim - Jake Worth 5

Slide 6

Slide 6 text

React.js + Vim - Jake Worth 6

Slide 7

Slide 7 text

Who Is This Talk For? » React.js: some familiarity » Vim: some familiarity React.js + Vim - Jake Worth 7

Slide 8

Slide 8 text

React.js + Vim == a fantastic development experience React.js + Vim - Jake Worth 8

Slide 9

Slide 9 text

Slides » PDF: https://speakerdeck.com/jwworth React.js + Vim - Jake Worth 9

Slide 10

Slide 10 text

Agenda 1. Why Vim? 2. Building an Environment React.js + Vim - Jake Worth 10

Slide 11

Slide 11 text

Why Vim? React.js + Vim - Jake Worth 11

Slide 12

Slide 12 text

What is Vim? A FOSS advanced text editor released by Bram Moolenaar in 1991. Based in the Vi text editor. 1. Modal. 2. Highly configurable. 3. Legendarily challenging. React.js + Vim - Jake Worth 12

Slide 13

Slide 13 text

Modality Big idea! ! 1. We spend more time reading code than writing it. 2. An editor should be optimized for what you do most often. React.js + Vim - Jake Worth 13

Slide 14

Slide 14 text

Modality Mode Entry Command What is it for? Normal (default) ESC Reading++ Visual v Selecting Insert i Writing Command : Meta commands React.js + Vim - Jake Worth 14

Slide 15

Slide 15 text

React.js + Vim - Jake Worth 15

Slide 16

Slide 16 text

Highly Configurable » Settings (~/.vimrc) » Mappings (nnoremap) » Functions » Plugins React.js + Vim - Jake Worth 16

Slide 17

Slide 17 text

Legendarily Challenging » Basics are hard: 'How to exit the Vim editor?' (+1M SO views) » 'Vertical learning curve' React.js + Vim - Jake Worth 17

Slide 18

Slide 18 text

Why bother using Vim? » Speed » Adoption » Depth » Configurability React.js + Vim - Jake Worth 18

Slide 19

Slide 19 text

Why Vim? https://hashrocket.com/blog/posts/why-vim React.js + Vim - Jake Worth 19

Slide 20

Slide 20 text

Building an Environment React.js + Vim - Jake Worth 20

Slide 21

Slide 21 text

Areas of Optimization 1. Appearance 2. Ease of use 3. Quality & consistency of code React.js + Vim - Jake Worth 21

Slide 22

Slide 22 text

Appearance: Overview » Dictated by plugins » Plugins are written in VimScript » Plugins managed by plugin managers (vundle, vim-pathogen, vim-plug) React.js + Vim - Jake Worth 22

Slide 23

Slide 23 text

Appearance: Toggling Plugins " ~/.vimbundle Plug 'sbdchd/neoformat', { 'on': 'ToggleNeoformat' } React.js + Vim - Jake Worth 23

Slide 24

Slide 24 text

Appearance: Plug Status :PlugStatus - neoformat: OK (not loaded) :ToggleNeoformat React.js + Vim - Jake Worth 24

Slide 25

Slide 25 text

Appearance: Plug Status :PlugStatus - neoformat: OK React.js + Vim - Jake Worth 25

Slide 26

Slide 26 text

Appearance: No Settings or Initialization $ vim -u NONE src/containers/search_bar.js React.js + Vim - Jake Worth 26

Slide 27

Slide 27 text

React.js + Vim - Jake Worth 27

Slide 28

Slide 28 text

Appearance: Basic Plugins Only $ vim src/containers/search_bar.js React.js + Vim - Jake Worth 28

Slide 29

Slide 29 text

React.js + Vim - Jake Worth 29

Slide 30

Slide 30 text

Appearance: JS Syntax Highlighting https://github.com/pangloss/vim-javascript :ToggleVimJavaScript React.js + Vim - Jake Worth 30

Slide 31

Slide 31 text

React.js + Vim - Jake Worth 31

Slide 32

Slide 32 text

Appearance: JSX Syntax Highlighting https://github.com/mxw/vim-jsx React.js + Vim - Jake Worth 32

Slide 33

Slide 33 text

Appearance: JSX Syntax Highlighting " ~/.vimrc " Allow Vim-JSX to highlight *.js files let g:jsx_ext_required = 0 React.js + Vim - Jake Worth 33

Slide 34

Slide 34 text

React.js + Vim - Jake Worth 34

Slide 35

Slide 35 text

Appearance: Matching Tags https://github.com/valloric/MatchTagAlways React.js + Vim - Jake Worth 35

Slide 36

Slide 36 text

Appearance: Matching Tags " ~/.vimrc " Allow MatchTagAlways to highlight JSX let g:mta_filetypes = { \ 'javascript.jsx' : 1, \} React.js + Vim - Jake Worth 36

Slide 37

Slide 37 text

React.js + Vim - Jake Worth 37

Slide 38

Slide 38 text

React.js + Vim - Jake Worth 38

Slide 39

Slide 39 text

React.js + Vim - Jake Worth 39

Slide 40

Slide 40 text

React.js + Vim - Jake Worth 40

Slide 41

Slide 41 text

React.js + Vim - Jake Worth 41

Slide 42

Slide 42 text

React.js + Vim - Jake Worth 42

Slide 43

Slide 43 text

React.js + Vim - Jake Worth 43

Slide 44

Slide 44 text

Ease of Use: JavaScript Snippets https://github.com/epilande/vim-es2015-snippets React.js + Vim - Jake Worth 44

Slide 45

Slide 45 text

DEMO React.js + Vim - Jake Worth 45

Slide 46

Slide 46 text

Ease of Use: React.js Snippets https://github.com/epilande/vim-react-snippets React.js + Vim - Jake Worth 46

Slide 47

Slide 47 text

DEMO React.js + Vim - Jake Worth 47

Slide 48

Slide 48 text

Ease of Use: File Navigation https://github.com/tpope/vim-projectionist React.js + Vim - Jake Worth 48

Slide 49

Slide 49 text

Ease of Use: File Navigation .projections.json { "app/javascript/packs/components/*.js": { "command": "component" } } React.js + Vim - Jake Worth 49

Slide 50

Slide 50 text

DEMO React.js + Vim - Jake Worth 50

Slide 51

Slide 51 text

Quality & Consistency: Autoformatting https://github.com/prettier/prettier https://github.com/sbdchd/neoformat React.js + Vim - Jake Worth 51

Slide 52

Slide 52 text

DEMO React.js + Vim - Jake Worth 52

Slide 53

Slide 53 text

Quality & Consistency: Best Practices https://github.com/neomake/neomake ESlint or JSHint React.js + Vim - Jake Worth 53

Slide 54

Slide 54 text

DEMO React.js + Vim - Jake Worth 54

Slide 55

Slide 55 text

Conclusion React.js + Vim - Jake Worth 55

Slide 56

Slide 56 text

Thanks! Jake Worth http://jakeworth.com @jwworth React.js + Vim - Jake Worth 56

Slide 57

Slide 57 text

Resources » https://gist.github.com/jwworth/aaf063d9e0137e05369613749e5cf997 » https://github.com/epilande/vim-es2015-snippets » https://github.com/epilande/vim-react-snippets » https://github.com/eslint/eslint » https://github.com/hashrocket/dotmatrix » https://github.com/hashrocket/dotmatrix » https://github.com/jshint/jshint » https://github.com/junegunn/fzf.vim » https://github.com/junegunn/vim-plug » https://github.com/mxw/vim-jsx » https://github.com/neomake/neomake » https://github.com/pangloss/vim-javascript » https://github.com/prettier/prettier » https://github.com/sbdchd/neoformat » https://github.com/valloric/MatchTagAlways » https://hashrocket.com/blog/posts/writing-prettier-javascript-in-vim » https://stackoverflow.com/questions/11828270/how-to-exit-the-vim-editor » https://unsplash.com/@samuelzeller React.js + Vim - Jake Worth 57