├── .gitignore ├── Makefile ├── README.md ├── _config.json ├── _includes ├── footer.jade ├── header.jade └── sidebar.jade ├── _layouts ├── default.jade └── post.jade ├── _posts ├── 2012-03-01-using-pathogen-with-git-submodules.md ├── 2012-03-02-the-importance-of-home-keys.md ├── 2012-03-05-plugin-roundup.md ├── 2012-03-07-syntax-highlighting.md ├── 2012-03-09-quick-movement.md ├── 2012-03-12-plugin-roundup.md ├── 2012-03-14-learn-vimscript-the-hard-way.md ├── 2012-03-16-editing-remote-files.md ├── 2012-03-19-plugin-roundup.md ├── 2012-03-21-git-and-vimdiff.md ├── 2012-03-23-buffers.md ├── 2012-03-26-plugin-roundup.md ├── 2012-03-28-modelines.md ├── 2012-03-30-search-and-replace.md ├── 2012-04-02-plugi-roundup.md ├── 2012-04-04-villustrator.md ├── 2012-04-06-search-and-replace-files.md ├── 2012-04-09-plugin-roundup.md ├── 2012-04-11-vim-mastery.md ├── 2012-04-13-registers.md ├── 2012-04-16-plugin-roundup.md ├── 2012-04-18-startuptime.md ├── 2012-04-20-c-r.md ├── 2012-04-23-plugin-roundup.md ├── 2012-04-25-alternative-learning-methods.md ├── 2012-04-27-command-line-mode.md ├── 2012-04-30-plugin-roundup.md ├── 2012-05-02-dotfile-diving.md ├── 2012-05-04-marks.md ├── 2012-05-07-plugin-roundup.md ├── 2012-05-09-clean-vimrc.md ├── 2012-05-11-visual.md ├── 2012-05-14-plugin-roundup.md ├── 2012-05-16-mouse.md ├── 2012-05-18-vim101-visual-mode-2.md ├── 2012-05-21-script-roundup.md ├── 2012-05-23-xvim.md ├── 2012-05-25-vim101-text-objects.md ├── 2012-05-28-script-roundup.md ├── 2012-05-30-vim-ios.md ├── 2012-06-01-vim101-repeating-commands.md ├── 2012-06-04-script-roundup.md ├── 2012-06-06-filetype.md ├── 2012-06-08-js101-tabs.md ├── 2012-06-11-script-roundup.md ├── 2012-06-13-set-title.md ├── 2012-06-15-vim101-repeating-2.md ├── 2012-06-18-script-roundup.md ├── 2012-06-20-vim-binary-files.md ├── 2012-06-22-vim101-selecting-motions.md ├── 2012-06-25-script-roundup.md ├── 2012-06-27-cloudvi.md ├── 2012-06-29-vim101-pipe.md ├── 2012-07-02-script-roundup.md ├── 2012-07-023-script-roundup.md ├── 2012-07-04-tabs-windows.md ├── 2012-07-06-vim101-completion.md ├── 2012-07-09-script-roundup.md ├── 2012-07-11-context.md ├── 2012-07-13-vim-help.md ├── 2012-07-16-script-roundup.md ├── 2012-07-18-nerdtree.md ├── 2012-07-20-vim101-leader.md ├── 2012-07-25-memorising.md ├── 2012-07-27-vim101-undo.md ├── 2012-07-30-script-roundup.md ├── 2012-08-01-emoji.md ├── 2012-08-03-vim101-indentation.md ├── 2012-08-06-script-roundup.md ├── 2012-08-08-saw-go.md ├── 2012-08-10-macros.md ├── 2012-08-13-script-roundup.md ├── 2012-08-15-retina.md ├── 2012-08-17-vim101-windows.md ├── 2012-08-20-script-roundup.md ├── 2012-08-22-android-vim.md ├── 2012-08-24-vim101-quickfix.md ├── 2012-08-27-script-roundup.md ├── 2012-08-29-conditional-vimrc.md ├── 2012-08-31-vim101-folding.md ├── 2012-09-03-script-roundup.md ├── 2012-09-05-cheatsheet.md ├── 2012-09-07-vim101-keywordprg.md ├── 2012-09-10-script-roundup.md ├── 2012-09-12-custom-cherry-keycap.md ├── 2012-09-14-vim101-brackets.md ├── 2012-09-17-script-roundup.md ├── 2012-09-19-android-vim.md ├── 2012-09-21-vim101-virtualedit.md ├── 2012-09-24-script-roundup.md ├── 2012-09-26-source-local.md ├── 2012-09-28-vim101-history.md ├── 2012-10-01-script-roundup.md ├── 2012-10-03-happyedit.md ├── 2012-10-05-vim101-windows.md ├── 2012-10-08-script-roundup.md ├── 2012-10-10-vim-scripts.md ├── 2012-10-12-vim101-windows.md ├── 2012-10-15-script-roundup.md ├── 2012-10-17-vim-unit-tests.md ├── 2012-10-19-vim101-set-hidden.md ├── 2012-10-22-script-roundup.md ├── 2012-10-24-vim-london.md ├── 2012-10-26-why-vim.md ├── 2012-10-29-script-roundup.md ├── 2012-10-31-practical-vim-review.md ├── 2012-11-02-vim-101-version.md ├── 2012-11-05-script-roundup.md ├── 2012-11-07-repeatability.md ├── 2012-11-09-vim-101-options.md ├── 2012-11-12-script-roundup.md ├── 2012-11-14-hermes.md ├── 2012-11-16-vim-101-local-options.md ├── 2012-11-19-script-roundup.md ├── 2012-11-21-vim-gpg.md ├── 2012-11-23-vim-101-auto-setting.md ├── 2012-11-26-script-roundup.md ├── 2012-11-28-vicious.md ├── 2012-11-30-vim101-let.md ├── 2012-12-03-script-roundup.md ├── 2012-12-05-omap.md ├── 2012-12-07-vim-101-vim-distro.md ├── 2012-12-10-script-roundup.md ├── 2012-12-12-vimulator.md ├── 2012-12-14-vim-101-insert-mode-shortcuts.md ├── 2012-12-17-script-roundup.md ├── 2012-12-19-vim-christmas.md ├── 2012-12-21-vim-101-help-tags.md ├── 2012-12-24-script-roundup.md ├── 2012-12-26-macvim.md ├── 2012-12-28-vim-101-runtimepath.md ├── 2012-12-31-script-roundup.md ├── 2013-01-02-vimclojure.md ├── 2013-01-04-vim101-jumping.md ├── 2013-01-07-script-roundup.md ├── 2013-01-09-vim-sensible.md ├── 2013-01-11-vim101-core-skills.md ├── 2013-01-14-script-roundup.md ├── 2013-01-16-custom-motions.md ├── 2013-01-18-tags.md ├── 2013-01-21-script-roundup.md ├── 2013-01-23-vim-powerline.md ├── 2013-01-25-preview-window.md ├── 2013-01-28-script-roundup.md ├── 2013-01-30-instinct.md ├── 2013-02-01-vim-101-fancy-ctags.md ├── 2013-02-04-script-roundup.md ├── 2013-02-06-vim-xcode.md ├── 2013-02-08-easy-marks.md ├── 2013-02-11-script-roundup.md ├── 2013-02-13-setlocal-ftplugin.md ├── 2013-02-15-vim-101-jumps.md ├── 2013-02-18-script-roundup.md ├── 2013-02-20-configuration.md ├── 2013-02-22-vim-101-object-motions.md ├── 2013-02-25-script-roundup.md ├── 2013-02-27-understanding-listchars.md ├── 2013-03-01-vim-101-text-objects-for-html.md ├── 2013-03-04-script-roundup.md ├── 2013-03-06-project-drawer.md ├── 2013-03-08-vim-101-motion-search.md ├── 2013-03-11-script-roundup.md ├── 2013-03-13-tern.md ├── 2013-03-15-vim-101-command-line.md ├── 2013-03-18-script-roundup.md ├── 2013-03-20-alternate-macvim-icon.md ├── 2013-03-22-vim101-visual-trainer.md ├── 2013-03-25-script-roundup.md ├── 2013-03-27-vim-ruby-2.md ├── 2013-03-29-blackhole.md ├── 2013-04-01-script-roundup.md ├── 2013-04-03-hardmode.md ├── 2013-04-05-terminology-macro.md ├── 2013-04-08-script-roundup.md ├── 2013-04-10-polycephalous-plugins.md ├── 2013-04-12-vim-101-decoding-tabs.md ├── 2013-04-15-script-roundup.md ├── 2013-04-17-collaborative-vim.md ├── 2013-04-19-practical-registers.md ├── 2013-04-22-script-roundup.md ├── 2013-04-24-startup.md ├── 2013-04-26-practical-registers.md ├── 2013-04-29-script-roundup.md ├── 2013-05-01-not-an-editor-command.md ├── 2013-05-03-irregular-expressions.md ├── 2013-05-06-script-roundup.md ├── 2013-05-08-vimspeak.md ├── 2013-05-10-synspell.md ├── 2013-05-13-script-roundup.md ├── 2013-05-15-vim74.md ├── 2013-05-17-zz.md ├── 2013-05-20-script-roundup.md ├── 2013-05-22-vim-731000.md ├── 2013-05-24-tern.md ├── 2013-05-27-script-roundup.md ├── 2013-05-29-floobits.md ├── 2013-05-31-24bit.md ├── 2013-06-03-script-roundup.md ├── 2013-06-05-vimprint.md ├── 2013-06-07-moving-windows.md ├── 2013-06-10-script-roundup.md ├── 2013-06-12-vim-and-elixir.md ├── 2013-06-14-counting-with-vim.md ├── 2013-06-17-script-roundup.md ├── 2013-06-19-unite.md ├── 2013-06-21-beginners-guide.md ├── 2013-06-24-script-roundup.md ├── 2013-06-26-mavericks.md ├── 2013-06-28-expression-syntax.md ├── 2013-07-01-script-roundup.md ├── 2013-07-03-holy-light.md ├── 2013-07-05-sessions.md ├── 2013-07-08-script-roundup.md ├── 2013-07-10-vim74beta.md ├── 2013-07-12-cheatsheet2.md ├── 2013-07-15-script-roundup.md ├── 2013-07-17-vim-basics-book.md ├── 2013-07-19-airline.md ├── 2013-07-22-script-roundup.md ├── 2013-07-24-powerline-escape-fix.md ├── 2013-07-26-macro-repeats.md ├── 2013-07-29-script-roundup.md ├── 2013-07-31-vimgenius.md ├── 2013-08-02-include-file-searches.md ├── 2013-08-05-script-roundup.md ├── 2013-08-07-mobile-cheat-sheet.md ├── 2013-08-09-open-github.md ├── 2013-08-12-script-roundup.md ├── 2013-08-14-vimroom.md ├── 2013-08-16-vim74.md ├── 2013-08-19-script-roundup.md ├── 2013-08-21-snake-vim-trainer.md ├── 2013-08-23-editorconfig.md ├── 2013-08-26-script-roundup.md ├── 2013-08-28-vsvim.md ├── 2013-08-30-fly-vim.md ├── 2013-09-02-script-roundup.md ├── 2013-09-04-oh-my-vim.md ├── 2013-09-06-refresh.md ├── 2013-09-09-script-roundup.md ├── 2013-09-11-script-roundup.md ├── 2013-09-13-popular-vimrc-options.md ├── 2013-09-16-script-roundup.md ├── 2013-09-18-vim-help-pdf.md ├── 2013-09-20-do-repeat-yourself.md ├── 2013-09-23-script-roundup.md ├── 2013-09-25-merging-blocks.md ├── 2013-09-27-undo-shortcuts.md ├── 2013-09-30-script-roundup.md ├── 2013-10-02-emmet.md ├── 2013-10-04-gitglobal-ignore.md ├── 2013-10-07-script-roundup.md ├── 2013-10-09-vim-zsh.md ├── 2013-10-11-git-slides.md ├── 2013-10-14-script-roundup.md ├── 2013-10-16-ag.md ├── 2013-10-18-fg.md ├── 2013-10-21-script-roundup.md ├── 2013-10-23-vim-nanowrimo.md ├── 2013-10-25-actual-vim.md ├── 2013-10-28-script-roundup.md ├── 2013-10-30-macvim-mavericks.md ├── 2013-11-01-vim-encryption.md ├── 2013-11-04-script-roundup.md ├── 2013-11-06-better-vim.md ├── 2013-11-08-set-history.md ├── 2013-11-11-script-roundup.md ├── 2013-11-13-crunch2.md ├── 2013-11-15-limits.md ├── 2013-11-18-script-roundup.md ├── 2013-11-20-learnvim.md ├── 2013-11-22-visual-mode-tricks.md ├── 2013-11-25-script-roundup.md ├── 2013-11-27-password-manager.md ├── 2013-11-29-pollution.md ├── 2013-12-02-script-roundup.md ├── 2013-12-04-capture-groups.md ├── 2013-12-06-friendly-tabs.md ├── 2013-12-09-script-roundup.md ├── 2013-12-11-maktaba.md ├── 2013-12-13-vimjs.md ├── 2013-12-16-script-roundup.md ├── 2013-12-18-vim-editor-for-github.md ├── 2013-12-20-holiday-calendar.md ├── 2013-12-23-script-roundup.md ├── 2013-12-25-plugins-of-the-year.md ├── 2013-12-27-vinegar.md ├── 2013-12-30-script-roundup.md ├── 2014-01-01-vim-anywhere.md ├── 2014-01-03-distraction-free.md ├── 2014-01-06-script-roundup.md ├── 2014-01-08-scala-workflows.md ├── 2014-01-10-minutevimtricks.md ├── 2014-01-13-script-roundup.md ├── 2014-01-15-threads.md ├── 2014-01-17-words-to-avoid.md ├── 2014-01-20-script-roundup.md ├── 2014-01-22-vim-skip.md ├── 2014-01-24-vim-study-lab.md ├── 2014-01-27-script-roundup.md ├── 2014-01-29-vim-croquet.md ├── 2014-01-31-javascript-strings.md ├── 2014-02-03-script-roundup.md ├── 2014-02-05-mac-framework.md ├── 2014-02-07-vimtronner.md ├── 2014-02-10-script-roundup.md ├── 2014-02-12-hidden-documentation.md ├── 2014-02-14-selecting-put-text.md ├── 2014-02-17-script-roundup.md ├── 2014-02-19-why-i-use-vim.md ├── 2014-02-21-threads-2.md ├── 2014-02-24-script-roundup.md ├── 2014-02-26-neovim.md ├── 2014-02-28-atom.md ├── 2014-03-03-script-roundup.md ├── 2014-03-05-lldb.md ├── 2014-03-07-atom-vim.md ├── 2014-03-10-script-roundup.md ├── 2014-03-12-running-scripts.md ├── 2014-03-14-magnum.md ├── 2014-03-17-script-roundup.md ├── 2014-03-19-vim-adventures-quiz.md ├── 2014-03-21-neovim.md ├── 2014-03-24-script-roundup.md ├── 2014-03-26-projects.md ├── 2014-03-28-vimrc-folding.md ├── 2014-03-31-script-roundup.md ├── 2014-04-02-kakoune.md ├── 2014-04-04-columnmove.md ├── 2014-04-07-script-roundup.md ├── 2014-04-09-timl.md ├── 2014-04-11-treed.md ├── 2014-04-14-script-roundup.md ├── 2014-04-16-vinegar-with-nerdtree.md ├── 2014-04-18-aes-encryption.md ├── 2014-04-21-script-roundup.md ├── 2014-04-23-sorta-useful.md ├── 2014-04-25-neovim-updates.md ├── 2014-04-28-script-roundup.md ├── 2014-04-30-spelling.md ├── 2014-05-02-spelling-2.md ├── 2014-05-05-script-roundup.md ├── 2014-05-07-vimr.md ├── 2014-05-09-painless-vim.md ├── 2014-05-12-plugin-roundup.md ├── 2014-05-14-ctags.md ├── 2014-05-16-vimusical.md ├── 2014-05-19-script-roundup.md ├── 2014-05-21-vimwiki.md ├── 2014-05-23-tim-pope-ama.md ├── 2014-05-26-script-roundup.md ├── 2014-05-28-shougo-ama.md ├── 2014-05-30-core-vim-course.md ├── 2014-06-02-script-roundup.md ├── 2014-06-04-vim-camelcase.md ├── 2014-06-06-polyglot.md ├── 2014-06-09-script-roundup.md ├── 2014-06-11-swift.md ├── 2014-06-13-hjkl.md ├── 2014-06-16-script-roundup.md ├── 2014-06-18-fzf.md ├── 2014-06-20-editing-macros.md ├── 2014-06-23-script-roundup.md ├── 2014-06-25-vim-weird.md ├── 2014-06-27-vimawesome.md ├── 2014-06-30-script-roundup.md ├── 2014-07-02-learning-vim.md ├── 2014-07-04-lisp-tips.md ├── 2014-07-07-script-roundup.md ├── 2014-07-09-neovim-newsletter.md ├── 2014-07-11-key-speed.md ├── 2014-07-14-script-roundup.md ├── 2014-07-16-flappyvird.md ├── 2014-07-18-peertopeer.md ├── 2014-07-21-script-roundup.md ├── 2014-07-23-typescript.md ├── 2014-07-25-flat-vim-icons.md ├── 2014-07-28-script-roundup.md ├── 2014-07-30-window-manager.md ├── 2014-08-01-escape.md ├── 2014-08-04-script-roundup.md ├── 2014-08-06-windows-font-rendering.md ├── 2014-08-08-vim-bootstrap.md ├── 2014-08-11-script-roundup.md ├── 2014-08-13-vim-productivity.md ├── 2014-08-15-vim-windows.md ├── 2014-08-18-script-roundup.md ├── 2014-08-20-vimr.md ├── 2014-08-22-winman.md ├── 2014-08-25-script-roundup.md ├── 2014-08-27-vim-sicp.md ├── 2014-08-29-italics.md ├── 2014-09-01-script-roundup.md ├── 2014-09-03-emacs-evil-mode.md ├── 2014-09-05-vim-ci.md ├── 2014-09-08-script-roundup.md ├── 2014-09-10-neovim-sept.md ├── 2014-09-12-no-rc.md ├── 2014-09-15-script-roundup.md ├── 2014-09-17-write.md ├── 2014-09-19-ex-mode.md ├── 2014-09-22-script-roundup.md ├── 2014-09-24-vim-overflow.md ├── 2014-09-26-web.md ├── 2014-09-29-script-roundup.md ├── 2014-10-01-vim-settings.md ├── 2014-10-03-changing-case.md ├── 2014-10-06-geeknote.md ├── 2014-10-08-vim-syntax-plugins.md ├── 2014-10-10-vim-overflow-2.md ├── 2014-10-13-ftcolor.md ├── 2014-10-15-tab-madness.md ├── 2014-10-17-cvim.md ├── 2014-10-20-incsearch.md ├── 2014-10-22-vimswitch.md ├── 2014-10-24-change.md ├── 2014-10-27-vimdir.md ├── 2014-10-29-vimrcfu.md ├── 2014-10-31-macvim-yosemite.md ├── 2014-11-03-script-roundup.md ├── 2014-11-05-bufwritepost.md ├── 2014-11-07-opinion.md ├── 2014-11-10-window-resize.md ├── 2014-11-12-caps.md ├── 2014-11-14-vimconf.md ├── 2014-11-17-snapshot-vim.md ├── 2014-11-19-breaking.md ├── 2014-11-21-bram-interview.md ├── 2014-11-24-selecta.md ├── 2014-11-26-neovim-msgpack.md ├── 2014-11-28-livedown.md ├── 2014-12-01-script-roundup.md ├── 2014-12-03-conoline.md ├── 2014-12-05-windows-builds.md ├── 2014-12-08-script-roundup.md ├── 2014-12-10-clipper.md ├── 2014-12-12-repeat-registers.md ├── 2014-12-15-script-roundup.md ├── 2014-12-17-tests.md ├── 2014-12-19-vim-stickers.md ├── 2014-12-22-script-roundup.md ├── 2014-12-24-viml-primer.md ├── 2014-12-26-superman.md ├── 2014-12-29-script-roundup.md ├── 2014-12-31-scripts-of-the-year.md ├── 2015-01-02-anti-patterns.md ├── 2015-01-05-permut.md ├── 2015-01-07-haskell.md ├── 2015-01-09-vopher.md ├── 2015-01-12-didyoumean.md ├── 2015-01-14-qutebrowser.md ├── 2015-01-16-neovim-better.md ├── 2015-01-19-script-roundup.md ├── 2015-01-21-stackexchange.md ├── 2015-01-23-pacvim.md ├── 2015-01-26-partial.md ├── 2015-01-28-neovim-windows.md ├── 2015-01-30-rust-rim.md ├── 2015-02-02-script-roundup.md ├── 2015-02-04-vim-pandoc.md ├── 2015-02-06-quickfix.md ├── 2015-02-09-script-roundup.md ├── 2015-02-11-vim-emacs.md ├── 2015-02-13-very-magic.md ├── 2015-02-16-cmdline2.md ├── 2015-02-18-imagevim.md ├── 2015-02-20-vim-tricks.md ├── 2015-02-23-indentwise.md ├── 2015-02-25-clojure.md ├── 2015-02-27-unnamed.md ├── 2015-03-02-script-roundup.md ├── 2015-03-04-neovim-emacs.md ├── 2015-03-06-unix-stickers.md ├── 2015-03-09-diff-enhanced.md ├── 2015-03-11-neovim-reviews.md ├── 2015-03-13-erlang-and-vim.md ├── 2015-03-16-ag.md ├── 2015-03-18-dllup.md ├── 2015-03-20-static.md ├── 2015-03-23-script-roundup.md ├── 2015-03-25-vim-github.md ├── 2015-03-27-zsh.md ├── 2015-03-30-script-roundup.md ├── 2015-04-01-neovim-terminal.md ├── 2015-04-03-color-coded.md ├── 2015-04-06-underscore.md ├── 2015-04-08-neovim.md ├── 2015-04-10-athame.md ├── 2015-04-13-webdevicons.md ├── 2015-04-15-pasting.md ├── 2015-04-17-tsuquyomi.md ├── 2015-04-20-vim-watch.md ├── 2015-04-22-columns.md ├── 2015-04-24-vim-colorscheme-primary.md ├── 2015-04-27-yajs.md ├── 2015-04-29-pyvim.md ├── 2015-05-01-tags-js.md ├── 2015-05-04-vison.md ├── 2015-05-06-neovim-client.md ├── 2015-05-08-macvim-windows.md ├── 2015-05-11-colortuner.md ├── 2015-05-13-vs2015.md ├── 2015-05-15-completion.md ├── 2015-05-18-dotenv.md ├── 2015-05-20-shellcheck.md ├── 2015-05-22-paper-color.md ├── 2015-05-25-hardy.md ├── 2015-05-27-reedes.md ├── 2015-05-29-vim-rest-console.md ├── 2015-06-01-betterga.md ├── 2015-06-03-spelling-tips.md ├── 2015-06-05-netrw-style.md ├── 2015-06-08-ident-detector.md ├── 2015-06-10-csapprox.md ├── 2015-06-12-wasd-keyboards.md ├── 2015-06-15-fat-arrow.md ├── 2015-06-17-flagship.md ├── 2015-06-19-vundle.md ├── 2015-06-22-tag-comment.md ├── 2015-06-24-neovim-smart-iu.md ├── 2015-06-26-ios.md ├── 2015-06-29-vim_cterm2gui2cterm.md ├── 2015-07-01-reloading-vimrc.md ├── 2015-07-03-visual-increment.md ├── 2015-07-06-terminus.md ├── 2015-07-13-ferret.md ├── 2015-07-15-vimtex.md ├── 2015-07-17-break.md ├── 2016-03-07-linting.md └── 2016-09-12-vim-8-0.md ├── bin └── feed_images.sh ├── contact.jade ├── cookies.jade ├── favicon.ico ├── files └── tern_keyboard.pdf ├── images ├── icons │ ├── facebook.png │ ├── feed.png │ ├── feed24.png │ ├── google.png │ ├── mail.png │ ├── tag.gif │ └── twitter.png ├── posts │ ├── RMv8KsJ.gif │ ├── adventuresquiz.png │ ├── adventurevim.png │ ├── ags.png │ ├── airline.png │ ├── androiddev.png │ ├── atom.png │ ├── buffet.png │ ├── change-inner-tag.gif │ ├── change-inner-tag.png │ ├── cloudvi.png │ ├── cmder.png │ ├── colortuner.gif │ ├── columns-tabs.png │ ├── counting-with-vim.png │ ├── ctags.gif │ ├── cvim.png │ ├── decoding-tabs.png │ ├── defaultpatience.png │ ├── dnvim.png │ ├── easymotion.png │ ├── elixir-file.png │ ├── elixir.png │ ├── emoji.png │ ├── es6.png │ ├── fisa-vim-config.png │ ├── flappyvird.png │ ├── flat-vim.png │ ├── floobits.png │ ├── foldingpop.png │ ├── forms.png │ ├── friendly-tabs.png │ ├── frogtor.png │ ├── fzf.gif │ ├── ghcmod.png │ ├── githubissues.gif │ ├── happyedit.png │ ├── headlights_ss.png │ ├── hjkl-cherry.png │ ├── hjklshirt.png │ ├── iawriter.png │ ├── ibmkeyboard.png │ ├── incs.gif │ ├── javacomplete.png │ ├── kakoune.png │ ├── mac-keyboard.png │ ├── macneovim-windows.png │ ├── macneovim.png │ ├── macvim-drawer-detail.png │ ├── macvim-drawer.png │ ├── macvim-drew-icon.png │ ├── macvim-file-drawer-settings.png │ ├── macvim-file-drawer-toggle.png │ ├── matchmaker.png │ ├── material-asm.png │ ├── mavericks.png │ ├── nerdtree.png │ ├── nerdtreemenu.png │ ├── netrw-long.png │ ├── nvim-term.png │ ├── onebdi.png │ ├── openvim.png │ ├── pacvim.png │ ├── painlessvim.png │ ├── partial.gif │ ├── peertopeer.png │ ├── primarylight.png │ ├── pyvim-window-layout.png │ ├── qutebrowser.png │ ├── reset_mod.png │ ├── roguevim.png │ ├── rustrim.png │ ├── ryu-hjkl.png │ ├── scala-workflow.png │ ├── selecta.gif │ ├── shellcheck.png │ ├── side-effects.png │ ├── signify.png │ ├── skip.gif │ ├── snake-vim-trainer.png │ ├── spectacle-mac.png │ ├── spellingze.gif │ ├── startify.png │ ├── superman.png │ ├── syntastic-javascript.png │ ├── syntastic-official.png │ ├── syntastic.png │ ├── t9md.png │ ├── tabman.png │ ├── tern-for-vim.png │ ├── thumbnail-vim.png │ ├── treed.png │ ├── twobdi.png │ ├── undotree.png │ ├── unitevim.png │ ├── unix-tree.png │ ├── viarea51.png │ ├── vicious-1.png │ ├── vicious-2.png │ ├── villustrator.png │ ├── vim-101-tagbar-1.png │ ├── vim-101-tagbar-2.png │ ├── vim-adventures.png │ ├── vim-dotoo.png │ ├── vim-emoji.png │ ├── vim-encryption.gif │ ├── vim-essentials-to-mastery.png │ ├── vim-geeknote.png │ ├── vim-github-dashboard.jpg │ ├── vim-help-pdf.png │ ├── vim-include-search.png │ ├── vim-ios-1.png │ ├── vim-ios.png │ ├── vim-mobile-cheat-sheet.png │ ├── vim-old-skool.png │ ├── vim-pomodoro.png │ ├── vim-shortcut-stickers-530.jpg │ ├── vim-stringify.gif │ ├── vim-webdevicons.png │ ├── vim-windows-test-unit-test.png │ ├── vim-xxd.png │ ├── vim101-arglist-1.png │ ├── vim101-arglist-2.png │ ├── vim101-blockwise.gif │ ├── vim101-blockwise.png │ ├── vim101-buffers-ball.png │ ├── vim101-buffers-list.png │ ├── vim101-cibracket.gif │ ├── vim101-completion-ctrl-pn.png │ ├── vim101-completion-line.gif │ ├── vim101-completion-omni.png │ ├── vim101-dot-repeat.gif │ ├── vim101-ed.png │ ├── vim101-help-tab-completion.png │ ├── vim101-ptag.gif │ ├── vim101-quickfix.png │ ├── vim101-registers-1.png │ ├── vim101-replace-query.png │ ├── vim101-search-repeat-n.gif │ ├── vim101-selection-vo.gif │ ├── vim101-selection.gif │ ├── vim101-sub1.png │ ├── vim101-sub2.png │ ├── vim101-tabs.png │ ├── vim101-undo.png │ ├── vim101-virtualedit-1.png │ ├── vim101-virtualedit-2.png │ ├── vim101-visual.png │ ├── vim101-windows-1.png │ ├── vim101-windows-2.png │ ├── vim101-windows-3.png │ ├── vim101-windows-nerdtree.png │ ├── vim101-windows.png │ ├── vim_C64.png │ ├── vimawesome-completion.gif │ ├── vimawesome.png │ ├── vimconf.png │ ├── vimctagsjs.png │ ├── vimdeck.png │ ├── vimdiff-xxd.png │ ├── vimdiff.png │ ├── vimexperimental.png │ ├── vimgenius-ad.png │ ├── vimgenius-exercise.png │ ├── vimgenius-start.png │ ├── vimkeycap.png │ ├── vimposter.png │ ├── vimprint.png │ ├── vimr.png │ ├── vimrc-folding.png │ ├── vimrcfolding.png │ ├── vimrcfu.png │ ├── vimroom.png │ ├── vimrscreen.png │ ├── vimstarwars.png │ ├── vimstickers.png │ ├── vimtouchandroid.png │ ├── vimtronner.gif │ ├── vimulator.png │ ├── vison.png │ ├── visual-increment.gif │ ├── vivify.png │ ├── vmark.png │ ├── vopher.png │ ├── vsvim.png │ ├── wasdkeyboards.png │ ├── windows-horiz-horiz.png │ ├── windows-horiz.png │ ├── windows-tab.png │ ├── windows-vert.png │ ├── windows8vim.png │ ├── wordstoavoid.png │ └── yosemite.png └── twitter │ ├── YukaYoung.png │ └── alex_young.png ├── index.jade ├── javascripts ├── jquery-1.7.1.min.js ├── pretty │ ├── lang-apollo.js │ ├── lang-basic.js │ ├── lang-clj.js │ ├── lang-css.js │ ├── lang-dart.js │ ├── lang-erlang.js │ ├── lang-go.js │ ├── lang-hs.js │ ├── lang-lisp.js │ ├── lang-llvm.js │ ├── lang-lua.js │ ├── lang-matlab.js │ ├── lang-ml.js │ ├── lang-mumps.js │ ├── lang-n.js │ ├── lang-pascal.js │ ├── lang-proto.js │ ├── lang-r.js │ ├── lang-rd.js │ ├── lang-scala.js │ ├── lang-sql.js │ ├── lang-tcl.js │ ├── lang-tex.js │ ├── lang-vb.js │ ├── lang-vhdl.js │ ├── lang-wiki.js │ ├── lang-xq.js │ ├── lang-yaml.js │ ├── prettify.css │ ├── prettify.js │ └── run_prettify.js └── site.js ├── robots.txt ├── screenshots.txt ├── stylesheets └── screen.styl └── tags.jade /.gitignore: -------------------------------------------------------------------------------- 1 | *.sw? 2 | _site 3 | .DS_Store 4 | tmp/* 5 | _drafts/ 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | deploy: 2 | @bin/feed_images.sh 3 | @rsync -avz "_site/" 80.68.93.197:/var/www/usevim.com/ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Writing Style 2 | 3 | * Keep articles to 2-3 paragraphs unless you're writing a tutorial 4 | * You can use American or British English 5 | * Headings: do not capitalise short prepositions or conjunctions, unless they have more than four letters ("Then") 6 | * Sub-headings: title case, but feel free to use sentence case if it suits the content 7 | * If a term is not obvious (not all readers will be experts), provide a link to a resource explaining it* 8 | 9 | ### Images 10 | 11 | * Remove shadows from Mac OS windows -- this will do it after killing SystemUIServer: defaults write com.apple.screencapture disable-shadow -bool true 12 | * Larger images like screenshots that appear in the post body should be 500 pixels wide (for consistency) 13 | 14 | ### Site Generation 15 | 16 | Install using `npm install pop`. Generate with `pop`. 17 | 18 | -------------------------------------------------------------------------------- /_config.json: -------------------------------------------------------------------------------- 1 | { "url": "http://usevim.com" 2 | , "title": "usevim" 3 | , "permalink": "/:year/:month/:day/:title" 4 | , "perPage": 10 5 | , "exclude": ["\\.swp"] 6 | , "require": ["pop-disqus"] 7 | , "autoGenerate": [{"feed": "feed.xml", "rss": "feed.rss"}] } 8 | -------------------------------------------------------------------------------- /_includes/footer.jade: -------------------------------------------------------------------------------- 1 | footer 2 | p.copyright Content © usevim | By the creators of DailyJS | Site source: GitHub: alexyoung / usevim | Glyphicons | Cookies and Privacy 3 | -------------------------------------------------------------------------------- /_includes/header.jade: -------------------------------------------------------------------------------- 1 | header#header 2 | hgroup 3 | h1 4 | a(href="/") #{site.config.title} 5 | h2 Vim links, plugins, screenshots, tutorials, and themes 6 | .subnav 7 | ul.nav.nav-pills 8 | li 9 | a.active(href="/") Home 10 | li 11 | a(href="/contact.html") Contact 12 | li 13 | a(target="_blank", href="/feed.rss") Subscribe (RSS) 14 | a(target="_blank", href="/feed.xml") Subscribe (Atom) 15 | 16 | -------------------------------------------------------------------------------- /_layouts/default.jade: -------------------------------------------------------------------------------- 1 | !!! 5 2 | html(lang="en") 3 | head 4 | title #{site.config.title} 5 | meta(http-equiv="content-type", content="text/html; charset=utf-8") 6 | link(href="/stylesheets/screen.css?v=1", media="screen", rel="stylesheet", type="text/css") 7 | link(rel="alternate", type="application/rss+xml", title="RSS 2.0", href="/feed.rss") 8 | link(rel="alternate", type="application/atom+xml", title="Atom Feed", href="/feed.xml") 9 | script(type="text/javascript", src="/javascripts/jquery-1.7.1.min.js") 10 | script(type="text/javascript", src="/javascripts/site.js") 11 | link(rel="shortcut icon", href="/favicon.ico") 12 | body 13 | !{include('header')} 14 | section#container.content 15 | #content 16 | !{content} 17 | !{include('sidebar')} 18 | !{include('footer')} 19 | script(type="text/javascript", src="/javascripts/pretty/run_prettify.js") 20 | -------------------------------------------------------------------------------- /_layouts/post.jade: -------------------------------------------------------------------------------- 1 | !!! 5 2 | html(lang="en") 3 | head 4 | title #{post.title} 5 | meta(http-equiv="content-type", content="text/html; charset=utf-8") 6 | script(type="text/javascript", src="/javascripts/jquery-1.7.1.min.js") 7 | script(type="text/javascript", src="/javascripts/site.js") 8 | link(href="/stylesheets/screen.css", media="screen", rel="stylesheet", type="text/css") 9 | link(rel="alternate", type="application/rss+xml", title="RSS 2.0", href="/feed.rss") 10 | link(rel="alternate", type="application/atom+xml", title="Atom Feed", href="/feed.xml") 11 | link(rel="shortcut icon", href="/favicon.ico") 12 | body 13 | !{include('header')} 14 | nav#breadcrumb 15 | a.read-more(href="/") ← Back 16 | section#container.content 17 | #content 18 | !{hNews(post)} 19 | !{disqus(post, 'usevim')} 20 | !{include('sidebar')} 21 | !{include('footer')} 22 | script(type="text/javascript", src="/javascripts/pretty/run_prettify.js") 23 | -------------------------------------------------------------------------------- /_posts/2012-04-11-vim-mastery.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim: From Essentials to Mastery" 4 | author: "Alex Young" 5 | tags: 6 | - presentations 7 | - conferences 8 | --- 9 | 10 | ![Vim: From Essentials to Mastery](/images/posts/vim-essentials-to-mastery.png) 11 | 12 | [Vim: From Essentials to Mastery](http://www.infoq.com/presentations/Vim-From-Essentials-to-Mastery) by Bill Odom is a presentation from last year's Strange Loop conference that covers Vim fundamentals, mentions Commodore Amiga, and goes right from the basics to more advanced usage. InfoQ has presented the talk with high quality slides, which include screenshots and keyboard shortcut examples. 13 | 14 | If you're looking for an introduction to Vim that includes practical tips and examples of the popular plugins, then this is a very easy to follow presentation. 15 | -------------------------------------------------------------------------------- /_posts/2012-06-11-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: EasyMotion" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | --- 9 | 10 |
11 | Send in your Vim scripts for review through our contact form or @vimnews. 12 |
13 | 14 | ###EasyMotion 15 | 16 | [EasyMotion](http://www.vim.org/scripts/script.php?script_id=3526) (GitHub: [Lokaltog / vim-easymotion](https://github.com/Lokaltog/vim-easymotion)) by Kim Silkebaekken (who also wrote [Powerline](https://github.com/Lokaltog/vim-powerline)) helps make Vim's motions easier to visualise by highlighting the possible choices for motions like `f`: 17 | 18 | It takes the `` out of `w` or `f{char}` by highlighting all possible choices and allowing you to press one key to jump directly to the target. 19 | 20 | ![EasyMotion](/images/posts/easymotion.png) 21 | 22 | The command to do this is `f`. Also, `w ` triggers the word motion. This is all fully documented and easily accessible from the GitHub repository. 23 | -------------------------------------------------------------------------------- /_posts/2012-06-15-vim101-repeating-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim 101: Repeating Motions" 4 | author: "Alex Young" 5 | tags: 6 | - vim101 7 | - motions 8 | - repeating 9 | --- 10 | 11 | In [Vim 101: Repeating Commands](http://usevim.com/2012/06/01/vim101-repeating-commands/) I covered several ways of repeating a previous command. These techniques are great ways to speed up mundane editing operations. In the comments Richard Fabian suggested `;` and `,` as well, which repeat the previously typed left-right motion: `f`, `t`, `F` or `T`. 12 | 13 | The left-right motions are seriously worth adding to your permanent muscle memory, so let's recap how they work: 14 | 15 | * `f{char}` -- Move to the next `{char}` 16 | * `F{char}` -- Move to the previous `{char}` 17 | * `t{char}` -- Move before the next `{char}` 18 | * `T{char}` -- Move after the previous `{char}` 19 | 20 | All of these motions take an argument as well. After one has been issued, pressing `;` will repeat it in the same direction, while `,` repeats it in the opposite direction. 21 | -------------------------------------------------------------------------------- /_posts/2012-06-27-cloudvi.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Cloud Vi" 4 | author: "Alex Young" 5 | tags: 6 | - web 7 | - hacks 8 | --- 9 | 10 | ![Cloud Vi](/images/posts/cloudvi.png) 11 | 12 | [Cloud Vi](http://mit.edu/~georgiou/www/vi/) by [Thomas Georgiou](https://twitter.com/#!/tagx) is a mashup of [jsvi](http://gpl.internetconnection.net/vi/) and [Filepicker.io](https://www.filepicker.io/). The original _jsvi_ JavaScript project is almost 4,000 lines of JavaScript, with cross-browser support and almost all of vi's keys and Ex commands. 13 | 14 | By adding [Filepicker.io](https://www.filepicker.io/), Thomas has injected new life into jsvi because it enables it to save files to Dropbox and Box.net. Files can also be loaded by typing `:e file` -- a dialog box will appear that allows imports from Dropbox, Facebook, GitHub, and more services. 15 | 16 | This is all done with client-side JavaScript, so technically Cloud Vi isn't dependent on Thomas' website. One thing I'd like to see is the project on GitHub so other people can fork it and hack it. 17 | -------------------------------------------------------------------------------- /_posts/2012-07-30-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: seeks.vim, Gocode" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | - web 9 | - completion 10 | --- 11 | 12 | ###seeks.vim 13 | 14 | [seeks.vim](http://www.vim.org/scripts/script.php?script_id=4143) (GitHub: [sanpii / seeks.vim](https://github.com/sanpii/seeks.vim)) by Sanpi is an interface to the [Seeks.fr](http://seeks.fr/) search engine that can display results using a window inside Vim. It's built using the [webapi-vim](https://github.com/mattn/webapi-vim) project, which supports lots of interesting web-related technologies. 15 | 16 | ###Gocode 17 | 18 | [Gocode](https://github.com/nsf/gocode) (License: _MIT_) by "nsf" is a daemon written with [Go](http://golang.org/) that provides context-sensitive autocompletion for various editors including Vim. It's designed to be fast, providing omni completion matching that would potentially perform quite slowly inside a typical editor: 19 | 20 | > Typical autocompletion time with warm cache is 30ms, which is barely noticeable. 21 | -------------------------------------------------------------------------------- /_posts/2012-08-15-retina.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MacVim Retina Speed Issues" 4 | author: "Alex Young" 5 | tags: 6 | - apple 7 | - macvim 8 | --- 9 | 10 | ![Enabling experimental rendering](/images/posts/vimexperimental.png) 11 | 12 | If you use [MacVim](http://code.google.com/p/macvim/) and are lucky enough to own a MacBook Pro with a Retina display, then you [may have noticed performance issues](https://groups.google.com/d/topic/vim_mac/zLwyYdIUv_0/discussion). Users are reporting slow scrolling and unexpected latency when entering text. 13 | 14 | Fortunately, enabling "experimental rendering" appears to fix the problem. This can be found in the Preferences, Advanced menu (`cmd ,`). 15 | 16 | Björn Winckler responded to say that he can't test this because he doesn't have a machine with a Retina display, which is understandable, but just goes to show how difficult testing a popular product can be even on Apple's hardware (given the smaller variance in hardware compared to the PC as a whole). 17 | -------------------------------------------------------------------------------- /_posts/2012-08-22-android-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Android Development in Vim" 4 | author: "Alex Young" 5 | tags: 6 | - android 7 | - scripts 8 | --- 9 | 10 | ![Android and Vim](/images/posts/androiddev.png) 11 | 12 | Google's Android SDK can be downloaded separately from the Eclipse tools, but due to the close level of integration between the two, Eclipse is probably the easiest way to get started with Android development. Once you know the basics, you'll be itching to break out of Eclipse and use Vim. 13 | 14 | Setting everything up can be awkward, so "bpowell" has released [vim-android](https://github.com/bpowell/vim-android), which is an installation script to quick start a Vim-friendly Android development environment. It includes Java-aware tab completion, ctags, and a script to find the `AndroidManifest.xml` file. 15 | -------------------------------------------------------------------------------- /_posts/2012-08-29-conditional-vimrc.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Conditional Executables" 4 | author: "Alex Young" 5 | tags: 6 | - dotfiles 7 | - vimrc 8 | - viml 9 | --- 10 | 11 | If you're one of the growing number of people who synchronises their dotfiles using a service like GitHub, then you've probably found that certain systems need different configuration options. For example, if you switch between Mac OS and Linux then some executables won't be present on both. 12 | 13 | Vim provides a few ways to mitigate this, and one of the best is the `executable` function. By using this function, you can make your `.vimrc` adapt to the system. 14 | 15 | I use this to conditionally use `ack` instead of `grep` if it's available: 16 | 17 | {% highlight viml %} 18 | if executable("ack") 19 | set grepprg=ack\ -H\ --nogroup\ --nocolor 20 | endif 21 | {% endhighlight %} 22 | 23 | I don't really care if `ack` hasn't been installed, so my `grep` commands will still run whether it's present or not. This is great when you want to drop dotfiles on something like a shell account or virtual machine that you use infrequently. 24 | -------------------------------------------------------------------------------- /_posts/2012-09-05-cheatsheet.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Cheat Sheet Poster" 4 | author: "Alex Young" 5 | tags: 6 | - cheatsheets 7 | --- 8 | 9 | ![Vim Poster](/images/posts/vimposter.png) 10 | 11 | > It took over 120 total hours to research, plan, design and create this cheat-sheet. It is meant to be a collection of Vim's "biggest bang for your buck" features: the stuff that will provide the most usefulness to the most people. 12 | 13 | The [Vim Cheat Sheet Poster](http://vimcheatsheet.com/products/vim-cheat-sheet-poster) by Max Cantor is a carefully created movie-sized poster for key Vim editing commands and concepts. It was started as a [Kickstarter project](http://www.kickstarter.com/projects/maxcantor/beautiful-vim-cheat-sheet-poster), and was fully-funded by 467 backers. 14 | 15 | It sells for $25 and is printed on some pretty heavy matte paper. There's also a [high quality digital version](http://vimcheatsheet.com/products/vim-cheat-sheet-digital) available for $10. 16 | -------------------------------------------------------------------------------- /_posts/2012-09-12-custom-cherry-keycap.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Custom Vim Key" 4 | author: "Alex Young" 5 | tags: 6 | - hardware 7 | - keyboards 8 | --- 9 | 10 | ![Vim keycap](/images/posts/vimkeycap.png) 11 | 12 | There's a [competition going on at reddit](http://www.reddit.com/r/vim/comments/zq97e/alright_rvim_win_a_free_vim_keycap_heres_a/) to win a free Vim keycap, available for purchase through [techkeys.us](http://www.techkeys.us/). The actual key itself is designed to fit Cherry MX keys along the top two rows. 13 | 14 | In my quest for the perfect keyboard, I've also found some interesting keyboards and keycaps available through [EliteKeyboards](http://elitekeyboards.com/), and [The Keyboard Company](http://www.keyboardco.com/) who are based in the UK and resell through Amazon. 15 | -------------------------------------------------------------------------------- /_posts/2012-10-24-vim-london.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim London" 4 | author: "Alex Young" 5 | tags: 6 | - events 7 | --- 8 | 9 | The [Vim London Meetup](http://www.meetup.com/Vim-London/) is a new event organised by Drew Neil, with a launch party planned for [Monday, October 29, 2012](http://www.meetup.com/Vim-London/events/87662312/). They're currently looking for a location. 10 | 11 | There are a lot of great regular events in London, I've been to a few of the [London Hacker News](http://www.meetup.com/HNLondon/) meetups, and lots of programming language user groups. Hopefully Vim London will get off the ground to give us Vim addicts somewhere to drink too much and share techniques. 12 | -------------------------------------------------------------------------------- /_posts/2012-11-21-vim-gpg.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Integrating Vim and GPG" 4 | author: "Alex Young" 5 | tags: 6 | - gpg 7 | - encryption 8 | - security 9 | --- 10 | 11 | In [Integrating Vim and GPG](http://blogs.operationaldynamics.com/andrew/software/gnome-desktop/vim-gpg-integration) by Andrew Cowie, the author describes a GPG-based workflow for encrypting notes. 12 | 13 | He discovered [vim-gnupg](http://www.vim.org/scripts/script.php?script_id=3645) (GitHub: [jamessan / vim-gnupg](https://github.com/jamessan/vim-gnupg), License: _GPL2_) by James McCoy, which provides a transparent means of editing GPG encrypted text files. When opening a file with a recognised extension (`.gpg`, `.pgp.`, `.asc`) it'll encrypt and decrypt the file as required. 14 | 15 | It works using the `gpg` binary, so you'll need to install that to use it. 16 | 17 | I like Andrew's idea of using Vim and GNU Privacy Guard as a handy way of recording sensitive notes. In a world where there's an app for everything, it's sometimes preferable to rely on our stalwart Unix commands! 18 | -------------------------------------------------------------------------------- /_posts/2012-12-26-macvim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MacVim Updates" 4 | author: "Alex Young" 5 | tags: 6 | - macvim 7 | --- 8 | 9 | MacVim [snapshot 66](https://github.com/b4winckler/macvim/wiki/ChangeLog) was released earlier this month, which has some bug fixes and updates Vim to 7.3.754. 10 | 11 | Bjorn has also moved the binary releases to Google Code, because GitHub has stopped hosting binaries. If you're looking for the latest MacVim release, remember to download it from here: [code.google.com/p/macvim/downloads/list](http://code.google.com/p/macvim/downloads/list). 12 | 13 | MacVim development continues on GitHub. 14 | -------------------------------------------------------------------------------- /_posts/2013-03-08-vim-101-motion-search.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim 101: Search as a Motion" 4 | author: "Alex Young" 5 | tags: 6 | - vim101 7 | - motions 8 | - operators 9 | - search 10 | --- 11 | 12 | The search command, `/`, is actually a motion, which means it can be used with operators. Any operator can be combined with search just by typing the desired search and pressing return. 13 | 14 | For example, when in Normal mode, `d/,` will delete up to a comma. Although `dt,` would be more efficient, there are times when a search is more specific and useful than the other motions. 15 | 16 | Much like last week's [HTML editing with text objects](http://usevim.com/2013/03/01/vim-101-text-objects-for-html), understanding how this works in terms of Vim's grammar gives you a greater understanding that can improve your productivity. The lesson is simply that `/` can work as a motion, because motions are just instructions that move the cursor in some way. 17 | 18 | -------------------------------------------------------------------------------- /_posts/2013-03-20-alternate-macvim-icon.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Alternate MacVim Icon" 4 | author: "Alex Young" 5 | tags: 6 | - icons 7 | - macvim 8 | --- 9 | 10 | ![MacVim](/images/posts/macvim-drew-icon.png) 11 | 12 | [Drew Yeaton posted to the vim_mac group](https://groups.google.com/d/msg/vim_mac/mR1ZbLfGw9k/UGwkCvt22nIJ) about an icon he created for MacVim: 13 | 14 | > After using MacVim for quite some time, I thought I would give back to the MacVim community in the form of design work. I'm proposing an alternate icon that I feel makes MacVim appear more at home on the Mac. 15 | 16 | He posted the icon to [Dribble](http://dribbble.com/shots/337065-MacVim-Icon-Updated), and has attached an icon file so you can use it with the MacVim app on a Mac. He also posted the original Photoshop document so it could be easily customised if required. Interestingly, Drew mentioned that one of his design goals was to keep in line with Apple's HIG, so it looks consistent alongside other icons in the Dock. 17 | -------------------------------------------------------------------------------- /_posts/2013-03-27-vim-ruby-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Scripting Vim with Ruby 2.0.0" 4 | author: "Alex Young" 5 | tags: 6 | - ruby 7 | - vim 8 | --- 9 | 10 | Vim supports several dynamic languages for scripting, including Python and Ruby. With the release of [Ruby 2](http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/), interest in using the latest stable version of Ruby with Vim will start to pick up steam over the coming months. Kohei Suzuki noticed that Vim wouldn't compile with `--enable-rubyinterp=dynamic` on 64bit platforms with Ruby 2.0.0, so he submitted a patch to the vim_dev group: [ruby-dyn-2.0.0.patch](https://groups.google.com/d/msg/vim_dev/P8l30hk9hyE/GFSinV_gHWAJ). 11 | 12 | The patch is fairly short, adding some preprocessor macros for numerical functions. Bram Moolenaar responded so presumably this patch will appear in [Vim's source](https://code.google.com/p/vim/source/list) soon. 13 | -------------------------------------------------------------------------------- /_posts/2013-04-12-vim-101-decoding-tabs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim 101: Decoding Tab Titles" 4 | author: "Alex Young" 5 | tags: 6 | - vim101 7 | - tabs 8 | - windows 9 | - tabline 10 | --- 11 | 12 | If you've managed to fit [tabs](http://usevim.com/2012/06/08/js101-tabs/) into your workflow, then you've probably noticed curious numbers and signs that appear alongside the truncated filename. It's very easy to read this information once you know how: the number refers to the number of split windows in a tab, and the `+` means there is an unsaved file in the tab. 13 | 14 | ![Decoding tabs](/images/posts/decoding-tabs.png) 15 | 16 | The tab bar itself is known as the `'tabline'` (`:help 'tabline'`). If you executed `:set tabline=hello` then 'hello' would be displayed instead of the standard content. You can switch back to the default by typing `:set tabline=`. 17 | 18 | The `'showtabline'` (`:help 'showtabline'`) option allows the tabline to be turned off, on, or always on: 19 | 20 | * `:set showtabline=0`: Hide the tabline 21 | * `:set showtabline=1`: Show the tabline 22 | * `:set showtabline=2`: Always show the tabline 23 | 24 | -------------------------------------------------------------------------------- /_posts/2013-05-15-vim74.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim 7.4" 4 | author: "Alex Young" 5 | tags: 6 | - vim 7 | - releases 8 | --- 9 | 10 | In a somewhat lighthearted announcement on [vim_announce](https://groups.google.com/forum/#!forum/vim_announce), Bram Moolenaar announced [Vim 7.4](https://groups.google.com/forum/#!msg/vim_announce/ZWWgK9aXQ2Y/IMObY8lBFm0J): 11 | 12 | > We are now at patch level 7.3.931. In a few weeks we would reach 999. I don't want to find out what happens if we go over that, so it's time for Vim 7.4! 13 | 14 | Bram's post addresses the likelihood of implementing the [top 5 voted features](http://www.vim.org/sponsor/vote_results.php). Voting for Vim features requires [sponsoring Vim development](http://www.vim.org/sponsor/index.php). 15 | 16 | Vim 7.4 is exciting, but if you're interested in the underlying current of patches that are regularly contributed, take a look at [vim_dev](https://groups.google.com/forum/#!forum/vim_dev). You'll see a flood of activity in response to the Python integration comment in the 7.4 announcement. 17 | 18 | -------------------------------------------------------------------------------- /_posts/2013-05-17-zz.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "ZZ" 4 | author: "Alex Young" 5 | tags: 6 | - shortcuts 7 | --- 8 | 9 | I was at a VimGolf evening at [Vim London](http://www.meetup.com/Vim-London/) a few months ago, and one thing I picked up there was the use of `ZZ`. If you look at [VimGolf](http://vimgolf.com/) solutions, a lot use `ZZ` to write and close the file. If multiple windows (split buffers) are open, it'll write and close that window. If you're in Normal mode, this is shorter than typing `:wq`. 10 | 11 | There's also `ZQ`, which quits without saving changes. `ZQ` is equivalent to `:q!` rather than `:qa!`, which quits _all_ windows and Vim entirely. 12 | 13 | I like these marginally more efficient ways to quit Vim -- I use `ZZ` more than `:wq` or `CTRL-W c` (which just closes a window). Vim's documentation covers all of these commands and more under _Writing and quitting_ (`:help write-quit`). 14 | -------------------------------------------------------------------------------- /_posts/2013-06-05-vimprint.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vimprint" 4 | author: "Alex Young" 5 | tags: 6 | - programs 7 | - ruby 8 | --- 9 | 10 | ![Vimprint](/images/posts/vimprint.png) 11 | 12 | [Vimprint](http://vimcasts.org/blog/2013/05/vimprint---a-vim-keystroke-parser/) (GitHub: [nelstrom / vimprint](https://github.com/nelstrom/vimprint)) by Drew Neil is a Vim keystroke parser written with Ruby. Given suitable Vim commands as input, it can generate human-readable output. 13 | 14 | The goal of the project is to allow Drew to produce real-time overlays of Vim commands. Plain English descriptions of commands, alongside the original input, would be extremely useful for teaching Vim on screencasts and workshops. 15 | 16 | Drew experimented with various parsing solutions and eventually settled on a Ragel-based parser. This is the same approach used by some well-known Ruby projects, like [hpricot](https://github.com/hpricot/hpricot/). Drew is presenting a talk based on this experience called Modelling State Machines with Ragel at [Eurucamp](http://2013.eurucamp.org/speakers) in August. 17 | -------------------------------------------------------------------------------- /_posts/2013-07-03-holy-light.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Holy Light" 4 | author: "Alex Young" 5 | tags: 6 | - background 7 | - colours 8 | - mac 9 | --- 10 | 11 | [Holy Light](https://github.com/Dinduks/vim-holylight) by Samy Dindane is a plugin for Macs that changes the `background` variable based on the amount of ambient light recorded by Mac's light sensor. 12 | 13 | The sensor is interrogated using a binary program, the source of which can be found here: [holylight-checker.mm](https://gist.github.com/Dinduks/5899561). The program works by connecting to Apple's LMU I/O service (`AppleLMUController`), and then grabbing the current brightness value. If the value is less than a threshold (1000000) then the background is switched to `dark`. 14 | 15 | The `'background'` value can be set manually with `:set background=light` and `:set background=dark` (`:help 'background'`, abbreviation: `bg`). Vim tries to pick colours that will look good on a dark/light background. 16 | -------------------------------------------------------------------------------- /_posts/2013-07-22-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: indentLine, microbe" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - interface 8 | - indentation 9 | - package-managers 10 | - scripts 11 | --- 12 | 13 | ###indentLine 14 | 15 | [indentLine](http://www.vim.org/scripts/script.php?script_id=4354) (GitHub: [Yggdroot / indentLine](https://github.com/Yggdroot/indentLine)) by Yggdroot Chen can be used to display vertical lines at each indentation level when spaces are used instead of tabs. 16 | 17 | The character used to represent an indentation level can be changed with `let g:indentLine_char = '|'`, and the author suggests using UTF-8 characters where supported for a cleaner visual style. 18 | 19 | ###Microbe 20 | 21 | Microbe (GitHub: [xsc / microbe-vim](https://github.com/xsc/microbe-vim)) by Yannick Scherer is a Pathogen-based, minimalist, plugin manager. It's a shell script that relies on curl and other widely available command-line tools for updating pathogen, adding and removing packages, and updating packages. 22 | 23 | If you find maintaining your Pathogen setup a chore, `microbe` might help! 24 | -------------------------------------------------------------------------------- /_posts/2013-07-29-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-node, ctrlp-tjump" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | - node 9 | - ctrlp 10 | --- 11 | 12 | ###vim-node 13 | 14 | [vim-node](http://www.vim.org/scripts/script.php?script_id=4674) (GitHub: [moll / vim-node](https://github.com/moll/vim-node), License: _Lesser GNU Affero General Public License_) by Andri Möll is inspired by Rails.vim and Rake.vim. It adds shortcuts for jumping to modules and keyword searching. 15 | 16 | When in Normal mode: 17 | 18 | * Use `gf` on `require()` to jump to the source file 19 | * Use `[I` on a keyword to look for it in the current and required files 20 | 21 | ###ctrlp-tjump 22 | 23 | [ctrlp-tjump](http://www.vim.org/scripts/script.php?script_id=4673) (GitHub: [ivalkeen / vim-ctrlp-tjump](https://github.com/ivalkeen/vim-ctrlp-tjump)) by Ivan Tkalin extends [CtrlP](https://github.com/kien/ctrlp.vim) to support fuzzy search for tags: when the cursor is over a class or method, use `:CtrlPtjump` to list matching tags. This replaces the `:tjump` command. 24 | 25 | -------------------------------------------------------------------------------- /_posts/2013-08-21-snake-vim-trainer.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Snake Vim Trainer" 4 | author: "Alex Young" 5 | tags: 6 | - games 7 | --- 8 | 9 | ![Snake Vim Trainer](/images/posts/snake-vim-trainer.png) 10 | 11 | [Snake Vim Trainer](http://www.vimsnake.com/) (GitHub: [patmood / vim_snake](https://github.com/patmood/vim_snake)) by Patrick Moody is cool for three reasons: 12 | 13 | 1. It's open source 14 | 2. It can help you learn `hjkl` 15 | 3. It's a game! 16 | 17 | It's basically snake, with the twist that you must press `i` to eat, and `` to move again. 18 | 19 | If you're used to the keys it's not _too_ difficult to get 1000 points, but after that it gets tricky. There's something about my brain that doesn't like the position of `i` relative to `hjkl` in this setting, although I've never noticed the issue before in Vim. 20 | 21 | -------------------------------------------------------------------------------- /_posts/2013-08-28-vsvim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "VsVim" 4 | author: "Alex Young" 5 | tags: 6 | - windows 7 | - visual-studio 8 | --- 9 | 10 | ![VsVim](/images/posts/vsvim.png) 11 | 12 | [VsVim](http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329) (GitHub: [jaredpar / VsVim](https://github.com/jaredpar/VsVim), License: _Apache 2.0_) by Jared Parsons is an extension for Visual Studio 2010 and above that adds a Vim emulation layer. It can be downloaded and installed from Microsoft's extension site, and requires Visual Studio to be restarted first before use. 13 | 14 | Once it's installed you should be able to use Command-line mode, Normal mode, Insert mode, and Visual mode. Visual block requires some settings changes, as outlined in the [VsVim FAQ](https://github.com/jaredpar/VsVim/wiki/faq). There is even beta support for the extremely popular [ReSharper](http://www.jetbrains.com/resharper/) tool. 15 | 16 | This project was sent in by [Tiago Margalho](https://twitter.com/tiagomargalho), a C# developer who wishes he was using Vim. 17 | -------------------------------------------------------------------------------- /_posts/2013-09-04-oh-my-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Oh My Vim!" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | --- 9 | 10 | [Oh My Vim!](https://github.com/gawel/oh-my-vim) is a Vim plugin manager inspired by the widely used [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). It requires Python, but has some interesting features like a plugin registry. You can view the [registry on GitHub](https://github.com/gawel/oh-my-vim/blob/master/ohmyvim/config.ini). 11 | 12 | It can be used from within Vim through the `:OhMyVim` command, which also supports completion. This allows you to issue commands like `:OhMyVim install` and `:OhMyVim remove`. 13 | 14 | If you want to submit your own Vim plugins to the plugin registry make a change to `ohmyvim/config.ini` and submit a pull request. 15 | -------------------------------------------------------------------------------- /_posts/2013-09-11-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim for Erlang Development" 4 | author: "Alex Young" 5 | tags: 6 | - erlang 7 | - tutorials 8 | --- 9 | 10 | [How to use Vim for Erlang Development](http://blog.erlware.org/2013/09/09/how-to-use-vim-for-erlang-development/) by Martin J. Logan, who wrote Erlang and OTP in Action, introduces a familiar cocktail of Vim scripts tailored for Erlang development. 11 | 12 | If you read on towards the end, however, there are some good tips based on the author's workflow. I liked this tip about using marks to indent awkward sections: 13 | 14 | > vimerl will auto-indent for you as you type. But if you come across a line that you want to indent try typing `==`. Let's say you want to indent a block of code. Simple, mark the line that starts the block with `ma` then go to the end of the block and tell vimerl to indent to the mark as such: `='a`. Now if your whole file is a mess then try `gg` to go to the beginning of your file and then `=G` to indent all the way to the end. You can do this all in one step as in `gg=G`. 15 | 16 | -------------------------------------------------------------------------------- /_posts/2013-09-27-undo-shortcuts.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Easier Undo Traversal" 4 | author: Alex Young 5 | tags: 6 | - undo 7 | --- 8 | 9 | After making a lot of speculative changes in a file which didn't work out, I find myself undoing and redoing changes in quick succession. It's easy to get lost in the undo tree, and Vim doesn't have any built-in features for easily seeing what each change in `:undolist` looks like. 10 | 11 | There are plugins that can help, like [undotree.vim](http://www.vim.org/scripts/script.php?script_id=4177), but one small change I made in my workflow was to learn the `g+` and `g-` shortcuts. All these Normal mode shortcuts do is go to the newer or older state. A count can be used as well, but I usually find myself looking at each change until I find the one I want. 12 | 13 | If you haven't yet mastered `:undolist` or Vim's time/tree-based undo system, take a look at [Vim 101: Undo](http://usevim.com/2012/07/27/vim101-undo/). 14 | -------------------------------------------------------------------------------- /_posts/2013-10-04-gitglobal-ignore.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Global Git Ignore" 4 | author: Alex Young 5 | tags: 6 | - git 7 | --- 8 | 9 | For years I dumped this into my `.gitignore` files: `*.sw?`. Then I realised that some people don't use Vim, and therefore probably don't want to see my editor-specific `.gitignore` entries. Different editors handle swap and recovery files different ways, so it seems redundant to force these settings on everyone. 10 | 11 | A better approach is to use a global option. Run `git config --global core.excludesfile ~/.gitignore`. Then you can add `*.sw?`, and perhaps `*~` as well. I like to add `.DS_Store` because Windows developers don't need to worry about that nonsense, and they should probably add `Thumbs.db`. 12 | -------------------------------------------------------------------------------- /_posts/2013-10-07-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Accordion, VerticalHelp" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | - windows 9 | - help 10 | --- 11 | 12 | ###Accordion 13 | 14 | [Accordion](http://www.vim.org/scripts/script.php?script_id=4735) (GitHub: [mattboehm / vim-accordion](https://github.com/mattboehm/vim-accordion), License: _Vim_) is a Vim window manager that automatically shrinks vertical split windows so you can focus on the active window. It's by the same author as [Unstack](https://github.com/mattboehm/vim-unstack) and can be used with Unstack to show stack traces in vertically split windows. 15 | 16 | ###VerticalHelp 17 | 18 | [VerticalHelp](http://www.vim.org/scripts/script.php?script_id=4729) by Mel Davis is a plugin that makes help open in vertical splits. This may work better for you if you use a widescreen monitor. It functions just like the standard help command, `:help`, and can be run by typing `:H`. 19 | 20 | 21 | -------------------------------------------------------------------------------- /_posts/2013-11-06-better-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "More Instantly Better Vim" 4 | author: "Alex Young" 5 | tags: 6 | - presentations 7 | - talks 8 | --- 9 | 10 | ![Vim Star Wars crawl](/images/posts/vimstarwars.png) 11 | 12 | I found [More Instantly Better Vim](http://programming.oreilly.com/2013/10/more-instantly-better-vim.html) on [O'Reilly's programming blog](http://programming.oreilly.com/). It's a talk by Damian Conway with lots of ideas for extending Vim and using it more productively. 13 | 14 | The post on O'Reilly's blog has links to each section of the talk. There's an amusing part that demonstrates an ASCII art animation inspired by the [Star Wars crawl in Vim](http://www.youtube.com/watch?v=aHm36-na4-4#t=0m58s), and you can download this and all the other code here: . 15 | 16 | 17 | -------------------------------------------------------------------------------- /_posts/2013-11-08-set-history.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Increasing Vim's Command History" 4 | author: Alex Young 5 | tags: 6 | - settings 7 | - viminfo 8 | --- 9 | 10 | If you type `:set history`, you'll see the number of `:` entires that will be stored. The default is `20`, which is what my Vim is set to. However, you can easily set it to anything: I've seen [vimrc files on GitHub](https://github.com/garybernhardt/dotfiles/blob/master/.vimrc) with it set to `10000`. 11 | 12 | History includes previous search patterns as well as command-line entries. These are written to the `.viminfo` file. You can change which file Vim reads for `.viminfo` by using the `-i` switch when starting Vim, and if you use `-i NONE` you can start Vim without a viminfo file, which can be useful if you're trying to work out strange behaviour between sessions, or if Vim is starting up slowly. 13 | 14 | These days disks are fast enough that a large viminfo shouldn't cause much of a slowdown, so you may find it useful to increase `'history'` beyond the default of 20. 15 | -------------------------------------------------------------------------------- /_posts/2013-11-18-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Vimdeck, noerrmsg.vim" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - scripts 8 | - slides 9 | --- 10 | 11 | ###Vimdeck 12 | 13 | ![Vimdeck](/images/posts/vimdeck.png) 14 | 15 | [Vimdeck](http://vimdeck.tybenz.com/) (GitHub: [tybenz / vimdeck](https://github.com/tybenz/vimdeck), License: _MIT_) by Tyler Benziger is a plugin for showing presentations. It uses Markdown, and renders headers with fonts that look like [FIGlet](http://www.figlet.org/). Code is syntax highlighted, and images are turned into ASCII art. 16 | 17 | ###noerrmsg.vim 18 | 19 | Apparently, some plugins like YouCompleteMe generate unwanted error messages that can't be turned off. Hector Arciga wrote a plugin that intercepts these errors and changes the text colours so you can't see them: [noerrmsg.vim](http://www.vim.org/scripts/script.php?script_id=4770). 20 | 21 | So if you really can't stand those errors, then you can at least sweep them under the carpet by making them invisible (depending on your terminal setup). 22 | -------------------------------------------------------------------------------- /_posts/2013-11-20-learnvim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "LearnVim" 4 | author: "Alex Young" 5 | tags: 6 | - books 7 | - documentation 8 | --- 9 | 10 | [LearnVim](https://github.com/dahu/LearnVim) by Barry Arthur is an introduction to Vim, distributed as a help text file. 11 | 12 | > A suggested path for learning Vim. 13 | > This help file introduces fundamental concepts, offers concrete advice for correctly configuring a new Vim instance and outlines a progressive set of topics for the enthusiastic newcomer to study and practise. 14 | 15 | You can drop it into your `.vim/doc` directory, which allows the document to be easily searched. It's written in a tutorial style that starts by introducing the help system, then goes on to configuring Vim, and eventually explores motions and marks. 16 | 17 | The last section teaches you how to install and use some plugins. Barry recommends Pathogen for installing and managing plugins. 18 | 19 | > Created by the venerable, tpope, this plugin is a light-weight plugin manager for Vim. It allows you to install, test, upgrade and uninstall plugins much more easily than the default Vim approach. 20 | -------------------------------------------------------------------------------- /_posts/2013-12-13-vimjs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim.js" 4 | author: "Alex Young" 5 | tags: 6 | - javascript 7 | --- 8 | 9 | When I heard about [Vim.js](http://coolwanglu.github.io/vim.js/web/vim.html), I thought it was another plugin collection for working with JavaScript in Vim. But it turns out it's a pretty interesting [Emscripten](https://github.com/kripken/emscripten) port of Vim to browsers. It uses other JavaScript-related technology as well, like Node, and the author is currently looking for help if you're interested in that sort of thing. 10 | 11 | I wrote a slightly more detailed analysis about it at [DailyJS](http://dailyjs.com/2013/12/13/vimjs/). 12 | -------------------------------------------------------------------------------- /_posts/2013-12-25-plugins-of-the-year.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Plugins of the Year" 4 | author: "Alex Young" 5 | tags: 6 | - plugins 7 | - git 8 | - motions 9 | --- 10 | 11 | I'm peering out at you through a haze of Christmas dinner and fairy lights, finding a welcome distraction from assembling toys and cooking. I've written about many plugins over the last year, but I use two regularly, so I'd like to offer these morsels up as my plugins of the year. 12 | 13 | The first is [Seek](http://usevim.com/2013/01/28/script-roundup/), by Vic Goldfeld. Seek adds a new motion, `s`, for jumping based on two characters. There have been iterations on this idea since then, but I liked the simplicity of it, and the fact that it feels like built-in functionality. 14 | 15 | The next is [vim-signify](http://usevim.com/2013/04/15/script-roundup/). It shows linewise changes in a file, so you can easily see what lines have changed if you're using a version control system like Git. 16 | 17 | Merry Christmas, happy holidays, and I look forward to writing more about Vim in 2014! 18 | -------------------------------------------------------------------------------- /_posts/2014-01-01-vim-anywhere.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "vim-anywhere" 4 | author: "Alex Young" 5 | tags: 6 | - mac 7 | - linux 8 | --- 9 | 10 | [vim-anywhere](https://github.com/cknadler/vim-anywhere) by Chris Knadler is a set of scripts that allow you to invoke Vim for anything that lets you input text. That means the next time you're filling out an annoying web form you can spawn Vim, write your text, then once you save and quit it'll be inserted into the field. 11 | 12 | On a Mac that means you'll need MacVim, and you'll also have to set up a shortcut to an Automator workflow. This is all explained in the readme with a screenshot and illustrative gif. 13 | 14 | For Linux, you'll need Gnome and gVim. If you run the installation script Linux users will automatically get a keyboard shortcut set up, but Mac users will need to set this manually. 15 | 16 | I've seen similar things before, where an editor is invoked and a temporary file is used to prepare text for a GUI control. The thing I like about this project is it's well documented and has cross-platform support. 17 | -------------------------------------------------------------------------------- /_posts/2014-01-10-minutevimtricks.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MinuteVimTricks" 4 | author: "Alex Young" 5 | tags: 6 | - videos 7 | - tutorials 8 | --- 9 | 10 | I've been watching [MinuteVimTricks](http://www.youtube.com/user/MinuteVimTricks), which I found [on reddit/r/vim](http://www.reddit.com/r/vim/comments/1tzqjy/ive_started_making_vim_video_tutorials/). The author has made eight videos that cover everything from [plugins](http://www.youtube.com/watch?v=XzN4h4dj4cE), to [colour schemes](http://www.youtube.com/watch?v=9pX9zMIKeuY) and using the [help system](http://www.youtube.com/watch?v=vVON1yvfz7A). 11 | 12 | If you want more videos, take a look at [Vimcasts](http://vimcasts.org/) if you haven't seen it before! 13 | -------------------------------------------------------------------------------- /_posts/2014-01-20-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-airline-todo, vimcaps" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - airline 9 | - keyboard 10 | --- 11 | 12 | ###vim-airline-todo 13 | 14 | [vim-airline-todo](https://github.com/Zuckonit/vim-airline-todo) (License: _MIT_) is an extension for [vim-airline](https://github.com/bling/vim-airline) that shows a count in the status bar for your current to-do list. 15 | 16 | The count is based on the number of files in a directory. Each task is a file, so it's a minimalist approach to managing to-do lists. The task list directory can be changed, as can the `TODO` text. 17 | 18 | ###vimcaps 19 | 20 | [vimcaps](http://www.vim.org/scripts/script.php?script_id=4834) (GitHub: [suxpert / vimcaps](https://github.com/suxpert/vimcaps), License: _GPL_) allows you to remap the caps lock key, in case you don't want to turn it off system-wide. It includes a C program for toggling the behaviour of the key, so the author is looking for help porting it to Mac OS X because he doesn't have a Mac. 21 | -------------------------------------------------------------------------------- /_posts/2014-01-27-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Vader.vim, Textabyss" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - testing 9 | --- 10 | 11 | ###Vader.vim 12 | 13 | [Vader.vim](http://www.vim.org/scripts/script.php?script_id=4832) is a unit testing framework for Vim scripts. It has a BDD style syntax (`Do`, `Given`, `Expect`), and tests are run with the `Vader` command. 14 | 15 | Test file should have the `.vader` extension. You can split tests into multiple files by using `Include`. The author has included examples of Vader being used to test real-world projects, including [vim-sneak](https://github.com/justinmk/vim-sneak/blob/master/tests/test.vader). 16 | 17 | ###Textabyss 18 | 19 | [Textabyss](http://www.vim.org/scripts/script.php?script_id=4835) by Liang Li is a plugin for panning around lots of files. It organises files into columns, and allows you to scroll through columns quickly using the mouse. It's a unique idea that's best explained [in a video](http://www.youtube.com/watch?v=QTIaI_kI_X8). 20 | -------------------------------------------------------------------------------- /_posts/2014-02-03-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: blockit, Enchanted Vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | ###blockit 11 | 12 | [blockit](http://www.vim.org/scripts/script.php?script_id=4848) (GitHub: [sk1418 / blockit](https://github.com/sk1418/blockit), License: _MIT_) by Kent Yuan allows you to wrap text in horizontal or vertical blocks. You can specify characters to use for the vertical and horizontal replacements, so you could easily wrap a region with `-` and `|` characters to make a box. 13 | 14 | The readme has examples with animated gifs so it's easy to see how it works. 15 | 16 | ###Enchanted Vim 17 | 18 | [Enchanted Vim](http://www.vim.org/scripts/script.php?script_id=4849) by Marcin Szamotulski makes regular expressions behave as if `\v` had been used. You might like this if you need to search with brackets a lot and find the escaping difficult, but check `:help magic` to be clear about the implications of `\v` and `\m`. 19 | -------------------------------------------------------------------------------- /_posts/2014-02-05-mac-framework.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MacVimFramework" 4 | author: "Alex Young" 5 | tags: 6 | - mac 7 | - objective-c 8 | --- 9 | 10 | Here's an interesting project for Objective-C developers: [MacVimFramework](https://github.com/qvacua/macvim), a fork of MacVim that allows you to use a MacVim view in your own applications. To use it, you'll need to link against `PSMTabBarControl.framework` and `MacVimFramework.framework`. 11 | 12 | There's an example of how to use it: [MMAppDelegate.m](https://github.com/qvacua/macvim/blob/master/src/MacVim/MinimalMacVim/MMAppDelegate.m). The author Tae Won Ha, notes the framework isn't necessarily a well-designed Objective-C framework, but the embedded source from Vim has minimal changes. 13 | -------------------------------------------------------------------------------- /_posts/2014-02-07-vimtronner.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vimtronner" 4 | author: "Alex Young" 5 | tags: 6 | - javascript 7 | - node 8 | - games 9 | --- 10 | 11 | ![Vimtronner](/images/posts/vimtronner.gif) 12 | 13 | [Vimtronner](https://github.com/carbonfive/vimtronner) from Carbon Five is an online multiplayer game for learning Vim. It requires [Node](http://nodejs.org/), and the controls are entirely based around Vim's commands. 14 | 15 | You can start a game by pressing `i`, and the movement keys are `hjkl`. It's run as a command-line tool which accepts switches for things like listing games, and running a local server. 16 | 17 | The server is basically a web app that uses WebSockets, so you could technically install it on a service like Heroku. 18 | -------------------------------------------------------------------------------- /_posts/2014-02-19-why-i-use-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Why I Use Vim Powered by Gif" 4 | author: "Alex Young" 5 | tags: 6 | - gifs 7 | --- 8 | 9 | I found [Why I Use Vim](http://jaxbot.me/articles/why-i-use-vim) by Jonathan Warner on [/r/vim](http://www.reddit.com/r/vim/comments/1y24sd/why_i_use_vim_in_gif_form/), and I thought it was worth sharing due to the serious amount of gifs. 10 | 11 | Some concepts are easier to illustrate graphically, and animations definitely help me when I'm trying to learn new Vim tricks. Most of the ideas the author mentions are what I would consider Vim essentials, but they're illustrated in really practical ways. 12 | 13 | He's got real code in the examples, so it helps see how to use the suggested techniques in daily editing chores. 14 | -------------------------------------------------------------------------------- /_posts/2014-02-28-atom.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Atom has a Vim Mode" 4 | author: "Alex Young" 5 | tags: 6 | - editors 7 | --- 8 | 9 | ![Atom](/images/posts/atom.png) 10 | 11 | [Atom](https://atom.io/) is a desktop text editor that supports [Node](http://nodejs.org/) and is based on web technology. 12 | 13 | Yes, [there's a Vim mode](https://atom.io/packages/vim-mode). I haven't yet had a chance to try it out, but I've requested a beta invite. Incidentally, a beta invitation for an open source text editor seems weird to me. 14 | -------------------------------------------------------------------------------- /_posts/2014-03-05-lldb.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "LLDB Vim Frontend" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - lldb 9 | --- 10 | 11 | Ahoy there, fellow binary wrangler. If you work with LLDB and want better Vim integration, then you may want to take a look at Tobias Pflug's [vim-lldb](https://github.com/gilligan/vim-lldb). It's a fork of LLVM's [Vim plugin](http://llvm.org/svn/llvm-project/lldb/trunk/utils/vim-lldb/) -- the goal of the fork was to simply remove the pathogen dependency and improve the documentation. 12 | 13 | Tobias thinks the script is useful but underused, so he'd like to get people to try it out. It requires Vim 7.3 and above, and the lldb executable needs to be in the current path. 14 | 15 | It supports breakpoints, watchpoints, threads, and locals. That's pretty much everything I use from Xcode anyway, minus the beachballs which I hear are an exclusive feature baked into Xcode. 16 | -------------------------------------------------------------------------------- /_posts/2014-03-12-running-scripts.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Testing One-off Scripts" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | I was recently teaching some non-programmers Ruby, and I used TextMate 2 as the editor. The reason I used TextMate 2 was because it's open source, easy to install, and can run Ruby programs with a quick press of `cmd-r`. 11 | 12 | It seems like a lot of people miss this feature when they switch to Vim. Thomas Allen wrote a post about how to write your own program execution mappings, called [Testing One-off Scripts in Vim](http://www.oinksoft.com/blog/view/6/). The basic idea is to create a Vimscript dictionary that maps file types to command-line programs, so you can type `` to run a script instead of `:w !python`, or the equivalent command for your programming language. 13 | 14 | I liked Thomas's example because even though it's written with Vimscript, which is known for being inscrutable, it's easy to follow and extend. This may help you ease yourself into Vim from your previous editor of choice. 15 | -------------------------------------------------------------------------------- /_posts/2014-03-19-vim-adventures-quiz.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Adventures Quiz" 4 | author: "Alex Young" 5 | tags: 6 | - games 7 | --- 8 | 9 | ![Vim Adventures Quiz](/images/posts/adventuresquiz.png) 10 | 11 | I just discovered a new Vim Adventures game, the [Vim Adventures Quiz](http://vim-adventures.com/quiz/). This is a smaller challenge where you're tested on the number of keystrokes made to fix a text file. 12 | 13 | You can type `:help` to get instructions for the game and some Vim tips, and `:q` to exit. The `:keyboard` command allows you to press a key and get a textual description of what it would do in Vim, which is really useful. If you get stuck you can click the icon on the bottom left to display a menu. 14 | -------------------------------------------------------------------------------- /_posts/2014-03-21-neovim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Neovim: Two Days Left" 4 | author: "Alex Young" 5 | tags: 6 | - editors 7 | --- 8 | 9 | [Neovim's funding drive](https://www.bountysource.com/fundraisers/539-neovim-first-iteration) is currently at $27,069 (271% of the goal). The 30k stretch goal is to refactor Vim into a reusable library: 10 | 11 | > $30,000: Refactor the editor into a library. It will require changing the way vim reads input or emits output. More details here. This will allow programs to embed the editor in the same process for better efficiency(no more marshalling of json/msgpack documents between the GUI and the core). 12 | 13 | If you want to support the project then you better move quickly! 14 | -------------------------------------------------------------------------------- /_posts/2014-04-04-columnmove.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vertical Movement with vim-columnmove" 4 | author: "Alex Young" 5 | tags: 6 | - motions 7 | - plugins 8 | --- 9 | 10 | A reader who was also a fan of [Patternjump](http://www.vim.org/scripts/script.php?script_id=4881) sent in [vim-columnmove](https://github.com/machakann/vim-columnmove), which is by the same author. This is a plugin that helps make vertical movement more convenient by providing vertical equivalents of motions like `f` and `t`. 11 | 12 | For example, `columnmove-f` (mapped to ``) will move the cursor down along the current column to the next matching character. 13 | 14 | There's also `columnmove-w` which is for word-wise movement, where "words" are the characters in the current column. I find this harder to visualise, so I've only really used `columnmove-f`. 15 | -------------------------------------------------------------------------------- /_posts/2014-04-07-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: angular.vim, clone" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - github 9 | --- 10 | 11 | ###Angular.vim 12 | 13 | [Angular.vim](http://www.vim.org/scripts/script.php?script_id=4907) (GitHub: [burnettk / vim-angular](https://github.com/burnettk/vim-angular), License: _Vim_) by Kevin Burnett is a set of shortcuts for working with AngularJS projects. Features include switching between test and implementation files (`:A`), goto file tweaks (`gf`), and spec runners. 14 | 15 | ###Clone 16 | 17 | [Clone](http://www.vim.org/scripts/script.php?script_id=4896) by Ingo Karkat adds a `:CloneAs` command for copying the current buffer to a new file. 18 | 19 | It keeps the current buffer intact and unmodified, and you can clone part of a file with a range as well (`:[range]CloneAs`). It also supports cloning into a split window (`:[range]SCloneAs`). 20 | -------------------------------------------------------------------------------- /_posts/2014-04-11-treed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Treed" 4 | author: "Alex Young" 5 | tags: 6 | - web 7 | - javascript 8 | - ui 9 | --- 10 | 11 | I don't know if Vim-inspired aesthetics is a thing, but some people are definitely console fetishists. Ideas from Vim and text-based UIs make their way into web software, and a great example of this is [Treed](http://jaredly.github.io/treed/) (GitHub: [jaredly / treed](https://github.com/jaredly/treed), License: _Apache 2.0_) by Jared Forsyth. 12 | 13 | ![Treed](/images/posts/treed.png) 14 | 15 | Treed is a "tree editing" component. By using some of Vim's keyboard shortcuts, you can navigate and edit trees, and the results can be rendered in real time using [D3.js](http://d3js.org/). 16 | 17 | It actually has Normal mode and "edit mode", so you can press escape and `i`, `a`, `A`, or even `o` and `O` to start editing -- `o` will insert a new node much like Vim. Undo is supported as well. 18 | 19 | Although Vim-inspired keyboard shortcuts might seem to have a niche appeal, I think depending on the context this kind of flexible UI component will appeal to power users. 20 | -------------------------------------------------------------------------------- /_posts/2014-04-21-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Reveal in Finder, Autosave" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - mac 9 | - autosave 10 | --- 11 | 12 | ###vim-reveal-in-finder 13 | 14 | [Thai Pangsakulyanont](http://dt.in.th/) sent in vim-reveal-in-finder (GitHub: [henrik / vim-reveal-in-finder](/https://github.com/henrik/vim-reveal-in-finder), License: _MIT_), a plugin that can open the current path in Finder. It uses the `open` command that Mac OS has, and can be run by typing `:Reveal`. 15 | 16 | Thai suggests adding `:map e :Reveal` to your `.vimrc` so it can be invoked quickly. 17 | 18 | ###Autosave 19 | 20 | [Autosave](http://www.vim.org/scripts/script.php?script_id=4927) by Calon Xu saves backups of new files. 21 | 22 | If you find yourself editing new files for a long time before saving them, then this will help to avoid losing work if your computer crashes. 23 | -------------------------------------------------------------------------------- /_posts/2014-05-02-spelling-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Spell Checking: Managing Mistakes" 4 | author: "Alex Young" 5 | tags: 6 | - spelling 7 | --- 8 | 9 | I wrote about [spell checking](http://usevim.com/2014/04/30/spelling/) in my last article, and there was a small but useful detail that I missed: skipping to the next misspelled word. You can type `]s` to do this, and it helps when you're writing long text files. 10 | 11 | In my case I write a lot of blog posts and even my books in Vim, so I now type `]sz=` instinctively. To search backwards, use `[s`. 12 | 13 | You can also add words to the dictionary, with `zg`. You can think of this as "add _good_ word". 14 | -------------------------------------------------------------------------------- /_posts/2014-05-05-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: tslime.vim, diffchar.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - diff 9 | - tmux 10 | --- 11 | 12 | ###tslime.vim 13 | 14 | [tslime.vim](http://www.vim.org/scripts/script.php?script_id=4931) (GitHub: [lord-garbage / tslime.vim](https://github.com/lord-garbage/tslime.vim)) by Christian Brauner is a fork of [slime.vim](http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/) that uses tmux instead of screen. It has been refactored to use tmux's panels. 15 | 16 | If you used slime.vim, Christian has put the same shortcuts into the readme so you can make it feel like the original. 17 | 18 | ###diffchar.vim 19 | 20 | [diffchar.vim](http://www.vim.org/scripts/script.php?script_id=4932) by Rick Howe is a plugin for diff mode that shows differences based on characters. 21 | 22 | It has a built-in text comparison algorithm, so the author notes that it might have performance issues. You can run it on selections of text rather than entire files, so it should be OK if you want something different to the standard diff view. 23 | -------------------------------------------------------------------------------- /_posts/2014-05-07-vimr.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "VimR" 4 | author: "Alex Young" 5 | tags: 6 | - forks 7 | - mac 8 | --- 9 | 10 |
11 | 12 | VimR 13 |
14 | 15 | I've just managed to build [VimR](https://github.com/qvacua/vimr) by Tae Won Ha. It's a Mac version of Vim that started out as an attempt to get the author's earlier [MacVimFramework](http://usevim.com/2014/02/05/mac-framework/) embedded in a real application. 16 | 17 | Building it wasn't that hard -- all I had to do in addition to the guide in the readme was `sudo gem install cocoapods`. 18 | 19 | One cool feature that VimR adds is a "quickly open" dialog that seems to index files quickly, and you can even search before indexing has finished. 20 | 21 | The project [includes tests](https://github.com/qvacua/vimr/tree/master/VimRTests), and is licensed under the GNU General Public License version 3. 22 | -------------------------------------------------------------------------------- /_posts/2014-05-12-plugin-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: characterize.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | ###characterize.vim 11 | 12 | Did you know `a` has a character code of 97, and `A` is 65? Sometimes I need to look up character codes for things like keyboard shortcuts in web interfaces, and in such cases I usually print out the events and look at the character codes. 13 | 14 | With Vim you can press `ga` over a character, which also shows hex and octal values. [characterize.vim](https://github.com/tpope/vim-characterize) by Tim Pope adds some additional values as well: 15 | 16 | * Unicode character names: `U+00A9 COPYRIGHT SYMBOL` 17 | * Vim digraphs (type after `` to insert the character): `Co`, `cO` 18 | * Emoji codes: `:copyright:` 19 | * HTML entities: `©` 20 | 21 | HTML entities will be useful to web developers, and Vim digraphs are cool if you're writing Vim scripts like Tim. The emoji codes are used by certain chat services. 22 | -------------------------------------------------------------------------------- /_posts/2014-05-14-ctags.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "CTags and Vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | [Supercharge your VIM into an IDE with CTags](http://blog.sensible.io/2014/05/09/supercharge-your-vim-into-ide-with-ctags.html) by sensible.io is a guide to using CTags with Vim: 11 | 12 | > CTags generates an index file of all your classes, methods and all other identifiers. You can use that index in your editor to jump straight to the methods you're interested in. In this article, I'll show you how to use them with Vim and Rails. 13 | 14 | It's a short tutorial that introduces the basics, like how to generate CTags with the `ctags` command, and how to jump to methods with `:ta`. 15 | 16 | If you're new to CTags and use Ruby then this might help you get started. 17 | -------------------------------------------------------------------------------- /_posts/2014-05-16-vimusical.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vimusical" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - music 8 | - audio 9 | --- 10 | 11 | 12 | 13 | [Vimusical](http://www.moo-mou.com/vimusical) (GitHub: [moo-mou / vimusical](https://github.com/moo-mou/vimusical)) by "moo-mou" is a Python script that allows you to generate sound based on keystrokes in Vim. 14 | 15 | The Python program uses [a configuration file](https://github.com/moo-mou/vimusical/blob/master/config.json) so you can change the sound it makes. The project is currently lacking documentation, so it'll take a bit of digging to get it working. 16 | 17 | You could probably use a similar approach to hook Vim up to something like [SuperCollider](http://supercollider.sourceforge.net/) or [PD](http://puredata.info/). 18 | -------------------------------------------------------------------------------- /_posts/2014-05-21-vimwiki.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "A Personal Wiki For Vim Plugin" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - notes 9 | --- 10 | 11 | I was reading [Ask HN: How do you organize your text files?](https://news.ycombinator.com/item?id=7758968), and I noticed [Vimwiki](https://github.com/vimwiki/vimwiki) mentioned by [gregmorton](https://news.ycombinator.com/user?id=gregmorton). Sometimes writing anything in something that isn't Vim (Evernote, OneOne, etc.) feels awkward, but directories full of text files are hard to manage. That's where Vimwiki comes in. 12 | 13 | Vimwiki adds syntax highlighting for a text-based wiki language that allows you to organise notes and to-do lists. If you press enter over a word you can create a vimwiki page. It seems like a good alternative to a mess of text files! 14 | -------------------------------------------------------------------------------- /_posts/2014-05-23-tim-pope-ama.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Ask Tim Pope Questions" 4 | author: "Alex Young" 5 | tags: 6 | - authors 7 | - plugins 8 | --- 9 | 10 | Well-known Vim plugin author Tim Pope is currently hosting an AMA on reddit: [I am Tim Pope, crafter of plugins. AMA](http://www.reddit.com/r/vim/comments/267vrv/i_am_tim_pope_crafter_of_plugins_ama/) 11 | 12 | One of the interesting questions that I randomly pulled out was about his favourite programming language: 13 | 14 | > `[–]art_l_vandelay` 19 points 20 hours ago 15 | > 16 | > What's your favorite programming language, and the project you are most proud of that you built with it? 17 | 18 | To which he replied: 19 | 20 | > `[–]tpope[S]` 21 points 19 hours ago 21 | > 22 | > I'm just enough of a polyglot to not have a favorite. My current front runners would be Ruby and Clojure, and I hate each for not being the other. 23 | > 24 | > As far as pride goes, you'd have to go pretty far down the list before finding something that isn't VimL. I'm not even sure what it would be. 25 | 26 | 27 | -------------------------------------------------------------------------------- /_posts/2014-05-30-core-vim-course.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Core Vim Course" 4 | author: "Alex Young" 5 | tags: 6 | - courses 7 | --- 8 | 9 | Drew Neil, author of [Practical Vim](http://pragprog.com/book/dnvim/practical-vim), has published a set of learning materials for Vim called the [Core Vim Course](http://vimcasts.org/training/core-vim-course/). It includes 10 videos, 16 exercises, PDFs, and transcripts for each video. 10 | 11 | The course costs $120, which is cheaper than a workshop, plus you can follow along at your own speed. The videos don't have DRM, so you could download them and work offline -- I usually do courses like this on the train because that's the only chance I get! 12 | 13 | There's also a $255 "online" option which allows you to get a four hour live tutorial and a realtime question and answer session. 14 | 15 | Drew is [still running private classes](http://vimcasts.org/training/private/), and you can contact him about purchasing multi-user licenses for your company. 16 | 17 | -------------------------------------------------------------------------------- /_posts/2014-06-09-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Merginal" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - scripting 9 | - git 10 | --- 11 | 12 | ###Merginal 13 | 14 | [Merginal](http://www.vim.org/scripts/script.php?script_id=4955) (GitHub: [idanarye / vim-merginal](https://github.com/idanarye/vim-merginal)) by Idan Arye is a Git branch merge tool. It has an interactive UI for viewing branches, checking out branches, merging branches, and solving merge conflicts. 15 | 16 | The branch list supports some keyboard commands, including `R` to refresh the buffer list, and `M` to merge the branch under the cursor into the currently checked out branch. 17 | 18 | I like tools that help me step through merge conflicts because it's usually something that I struggle with when working in feature branches. I often use vimdiff as a mergetool, but even then I find it hard to visualise changes in certain file types -- XML regularly breaks my brain. 19 | -------------------------------------------------------------------------------- /_posts/2014-06-11-swift.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Swift Support for Vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - apple 9 | - syntax 10 | --- 11 | 12 | Toyama Satoshi has created a [vim-swift](https://github.com/toyamarinyon/vim-swift) project that adds support for Swift's syntax highlighting and indentation. 13 | 14 | [Swift](https://developer.apple.com/swift/) is Apple's new programming language that is REPL friendly and has some innovative "playground" features in the new Xcode. 15 | 16 | Even though it's currently a small project, vim-swift has some nice touches: each part of the plugin is cleanly separated, and there are test `.swift` files that could probably be tied in to automated testing. 17 | -------------------------------------------------------------------------------- /_posts/2014-06-16-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Vimbed, Kerbal Space Program Syntax" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - games 9 | --- 10 | 11 | ###Vimbed 12 | 13 | [Vimbed](http://www.vim.org/scripts/script.php?script_id=4956) (GitHub: [ardagnir / vimbed](https://github.com/ardagnir/vimbed), License: _MIT_) by James Kolb is a script to make it easier to run Vim in the background when you want to embed Vim in another program. 14 | 15 | It's used in [Pterosaur for Firefox](https://github.com/ardagnir/pterosaur) and [Chalcogen for Atom](https://github.com/ardagnir/chalcogen). 16 | 17 | ###Kerbal Space Program Syntax 18 | 19 | If you play [Kerbal Space Program](https://kerbalspaceprogram.com/), then you might like [Kerbal Space Program Syntax](http://www.vim.org/scripts/script.php?script_id=4960) (GitHub: [mic47 / KSP-Syntax](https://github.com/mic47/KSP-Syntax), License: _MIT_). It adds support for `.craft` files and save files. 20 | 21 | -------------------------------------------------------------------------------- /_posts/2014-06-18-fzf.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "fzf: Fuzzy Finder for the Shell" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - ruby 8 | - shell 9 | - tmux 10 | --- 11 | 12 | ![fzf](/images/posts/fzf.gif) 13 | 14 | [fzf](https://github.com/junegunn/fzf) by Junegunn Choi is a ctrlp.vim-inspired Ruby script that allows you to find shell commands with a fuzzy finder. If you use tmux then it can be launched in a split window. 15 | 16 | It comes with keyboard shortcuts for bash, zsh, and fish, and there is Vi-mode compatibility support for bash. 17 | 18 | You can also use it with Vim, which means you can use the same fuzzy finder everywhere. It doesn't block Vim while it searches, so you can keep typing while it works. For documentation on Vim options, see the [readme on GitHub](https://github.com/junegunn/fzf#usage-as-vim-plugin). 19 | 20 | The author has also written a [blog post that introduces fzf](http://junegunn.kr/2014/04/fzf+vim+tmux/), and it's on [Hacker News](https://news.ycombinator.com/item?id=7909886) so upvote if you like it! 21 | -------------------------------------------------------------------------------- /_posts/2014-06-20-editing-macros.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Editing Macros" 4 | author: "Alex Young" 5 | tags: 6 | - macros 7 | - repeats 8 | --- 9 | 10 | Sometimes people ask me "what's the point of macros in Vim?" I think of macros as repeatable complex commands: they're a lot like functions. I find them indispensable due to the fact you can easily manipulate them as strings, pulling them in and out of registers at will. 11 | 12 | Macros are really just registers that you can replay at a different point in the file. Knowing that, you can start to manipulate macros on another level. 13 | 14 | For example, imagine you've got a macro recorded in the `q` register. Type `"qp` to paste it to the current buffer. Now edit the text, and yank it back into a register. You could do this with a visual selection, or something like `^"qy$` to yank the entire line into `q`. 15 | 16 | With the ability to paste and edit macros, you can not only modify them but also visualise them to understand how they're being applied. 17 | 18 | -------------------------------------------------------------------------------- /_posts/2014-06-27-vimawesome.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Find Plugins with VimAwesome" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - websites 9 | --- 10 | 11 | ![VimAwesome](/images/posts/vimawesome.png?v=1) 12 | 13 | One of the things I do when looking for Vim scripts and programming libraries is check the number of GitHub watchers. If the project looks technically solid but has low attention, then I'll probably write about it or use it. If it has thousands of stars then I know it's probably pretty cool and should do what I want. 14 | 15 | [VimAwesome](http://vimawesome.com/) somewhat automates that process by providing a web app that shows an index of Vim scripts based on GitHub stats. Entries are categorised, so if you wanted to find [ctags plugins](http://vimawesome.com/?q=tag:ctags) then just search for `tag:ctags`. 16 | 17 | You can also [submit plugin!](http://vimawesome.com/submit) 18 | -------------------------------------------------------------------------------- /_posts/2014-06-30-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-autoformat, Fist of Vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - github 9 | - formatting 10 | --- 11 | 12 | ###vim-autoformat 13 | 14 | A reader sent in [vim-autoformat](https://github.com/Chiel92/vim-autoformat), which uses external programs to format code. The default `formatprograms` include formatters for C, C#, C++, Java, JavaScript, and Python. 15 | 16 | The reader mentioned that it's useful for Python programmers who want to format code according to [PEP 8](http://legacy.python.org/dev/peps/pep-0008/). 17 | 18 | ###Fist of Vim 19 | 20 | Fist of Vim (GitHub: [ajh17 / vim-fist](https://github.com/ajh17/vim-fist), License: _Vim_) by Akshay Hegde is an extremely simple Gist script. It uses `p` for creating new Gists, and `u` for updating them. 21 | 22 | You can create anonymous Gists, open them in a browser, and create secret Gists. If you've ever wanted to treat Gists like a kind of simplified Evernote replacement from within Vim, then this might do it. 23 | -------------------------------------------------------------------------------- /_posts/2014-07-02-learning-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim as a Language" 4 | author: "Alex Young" 5 | tags: 6 | - tutorials 7 | - articles 8 | --- 9 | 10 | [Learning Vim in 2014: Vim as Language](http://benmccormick.org/2014/07/02/learning-vim-in-2014-vim-as-language/) is one of a series of posts by Ben McCormick about learning "modern" Vim. It takes the approach of describing Vim in terms of grammar, which I think was nicely encapsulated by the famous [You Don't Grok Vi](http://stackoverflow.com/a/1220118/306167) comment on StackOverflow. 11 | 12 | On motions, Ben writes: 13 | 14 | > If you're a grammar nerd or remember your 8th grade english classes, you can think of these as transitive verbs that need to act on a direct object. These "direct objects" come in 2 forms, motions and text objects. Motions are the motion commands that you can use at any time to move around Vim. 15 | 16 | Also, the [post is on HN](https://news.ycombinator.com/item?id=7976493), so it would be nice to upvote it to encourage Ben to keep posting! 17 | -------------------------------------------------------------------------------- /_posts/2014-07-09-neovim-newsletter.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Neovim Progress" 4 | author: "Alex Young" 5 | tags: 6 | - neovim 7 | - altvim 8 | --- 9 | 10 | The [second Neovim newsletter](http://neovim.org/news/2014/july/) has been posted. The project has settled on the permissive Apache 2.0 license, and progress has been made on the RPC infrastructure. This allows scripting languages to be supported, and works differently to Vim where bindings have to be compiled into the Vim binary. 11 | 12 | There are other improvements and refactoring as well, including changes to growable array, file function refactoring, and work to replace `vim_strncpy` with `strlcpy`. 13 | 14 | I've been downloading Neovim from GitHub and running it from master on a Mac, so you should be able to build it if you have a compiler set up. Not everything works, but it's fun to try it out! 15 | -------------------------------------------------------------------------------- /_posts/2014-07-14-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: glowshi-ft.vim, Clighter" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - highlighting 9 | - motions 10 | --- 11 | 12 | ###glowshi-ft.vim 13 | 14 | glowshi-ft.vim (GitHub: [saihoooooooo / glowshi-ft.vim](https://github.com/saihoooooooo/glowshi-ft.vim)) by Shinya Saiho is a cool visualisation plugin for the `f` and `t` motions. When a line has multiple targets, it display highlights and allows you to jump between them. 15 | 16 | There are settings for changing the mapping behaviour, case handling, and timeout length. 17 | 18 | ###Clighter 19 | 20 | [Clighter](http://www.vim.org/scripts/script.php?script_id=4983) (GitHub: [bbchung / clighter](https://github.com/bbchung/clighter)) by BB Chung is a semantic source highlighting plugin based on Clang. It can do things like highlight occurrences of matching words under the cursor. It doesn't replace the built-in C syntax handling, but instead enhances it. 21 | -------------------------------------------------------------------------------- /_posts/2014-07-16-flappyvird.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Flappyvird" 4 | author: "Alex Young" 5 | tags: 6 | - games 7 | --- 8 | 9 | ![Flappyvird](/images/posts/flappyvird.png) 10 | 11 | [Flappyvird](https://github.com/mattn/flappyvird-vim) by Yasuhiro Matsumoto is a version of Flappy Bird for Vim. To play it, type `:FlappyVird`, and then press space to jump. 12 | 13 | It's an exquisite work of ASCII art, complete with a Japanese-style emoticon for the bird. 14 | -------------------------------------------------------------------------------- /_posts/2014-07-18-peertopeer.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Peer to Peer" 4 | author: "Alex Young" 5 | tags: 6 | - videos 7 | - tutorials 8 | --- 9 | 10 | ![Peer to Peer](/images/posts/peertopeer.png) 11 | 12 | [Peer to Peer](http://peertopeer.io/) has launched! This is a service by Drew Neil of Vimcasts. The idea is that an expert demonstrates how they solve problems using their preferred tools, while they're filmed both in-person and on-screen. 13 | 14 | [The first episode](http://peertopeer.io/videos/1-tom-stuart/) is Counting Tree Nodes with Tom Stuart. Tom uses Vim, and you can see him using it to write a Ruby project that uses Cucumber, Rspec, and immutable data structure APIs. 15 | 16 | The video costs $25, and comes with a Git repository and an essay by Tom. The video is 120 minutes and DRM-free. 17 | -------------------------------------------------------------------------------- /_posts/2014-07-21-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: textobj-delimited" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | ###textobj-delimited 11 | 12 | [textobj-delimited](http://www.vim.org/scripts/script.php?script_id=4977) (GitHub: [machakann / vim-textobj-delimited](https://github.com/machakann/vim-textobj-delimited), License: _NYSL_) by Masaaki Nakamura makes textobjects work better with delimited strings. The default mappings are `id`, `ad`, `iD`, and `aD`. Visual mode is supported as well. 13 | 14 | By passing a change command, like `d` for example, you can manipulate text based on the recognised separators. Given a string like `foo_bar_baz`, `d3id` would move the cursor to the last separator and delete the remaining text, resulting in `foo_bar_`. 15 | 16 | Given the same string, `vid` would select the "inner" text between two separators. So in the case of `foo_bar_baz`, with the cursor on `b`, `bar` would be selected. 17 | -------------------------------------------------------------------------------- /_posts/2014-07-25-flat-vim-icons.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Flat Vim Icons" 4 | author: "Alex Young" 5 | tags: 6 | - icons 7 | - design 8 | --- 9 | 10 | ![Flat Vim icons](/images/posts/flat-vim.png) 11 | 12 | When you've carefully curated your desktop wallpaper, terminal colours, and system icons, it's a little bit annoying when one of your icons stands out. So if your gVim or MacVim icon looks too retro, then just switch to terminal Vim for everything! 13 | 14 | Or, try one of these new flat icon designs: 15 | 16 | * [Flat Vim](http://iconverticons.com/icons/92d8febce1d7a304/) 17 | * [Solarized Vim icon by Kootle](http://i.imgur.com/C37yO9P.png) (source: [reddit](http://www.reddit.com/r/vim/comments/2bishy/flat_vim_icon_with_solarized_colours/)) 18 | 19 | I think both of these icons look great, so give them a try if you're tired of the [stalwart logo](http://www.vim.org/logos.php). 20 | -------------------------------------------------------------------------------- /_posts/2014-07-28-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: a_pair" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - text-objects 9 | --- 10 | 11 | ###a_pair 12 | 13 | [a_pair](http://www.vim.org/scripts/script.php?script_id=4991) by Colin Cai combines the brackets `{}`, `[]`, and `()` into a text object called `ap`. That means if you've got sets of nested brackets you can operate on multiple levels at once. 14 | 15 | I thought this might be useful if you're working with JSON documents, where you can often find arrays nested inside objects. 16 | 17 | -------------------------------------------------------------------------------- /_posts/2014-08-01-escape.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Crazy Escape Key Mappings" 4 | author: "Alex Young" 5 | tags: 6 | - escape 7 | --- 8 | 9 | One of my colleagues asked me about whether `jk` is a good mapping for escape. I've always used `` for leaving Insert mode, but I don't think it's unreasonable to want to use a key combination that's easier to press. 10 | 11 | If you want to try `jk`, then you need to `imap` it: 12 | 13 | {% highlight text %} 14 | :imap jk <Esc> 15 | {% endhighlight %} 16 | 17 | [Avoid the escape key](http://vim.wikia.com/wiki/Avoid_the_escape_key) on the Vim Wiki has lots more examples, including `` for _entering_ Insert mode. 18 | 19 | Does anyone out there use any alternatives? 20 | -------------------------------------------------------------------------------- /_posts/2014-08-06-windows-font-rendering.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Windows Font Rendering Improvements" 4 | author: "Alex Young" 5 | tags: 6 | - windows 7 | - patches 8 | --- 9 | 10 | I noticed [patch 7.4.393](https://groups.google.com/d/msg/vim_dev/KBk2ojpNNK0/ZW5rSga2JwQJ) has support for improved font rendering in Windows: 11 | 12 | > Problem: Text drawing on newer MS-Windows systems is suboptimal. Some multi-byte characters are not displayed, even though the same font in Notepad can display them. (Srinath Avadhanula). 13 | 14 | > Solution: Add the 'renderoptions' option to enable Direct-X drawing. (Taro Muraoka) 15 | 16 | There's an additional update from Ken Takata that fixes an issue with italics, but the DirectX drawing sounds better than GDI rendering which at this point feels dated in modern Windows. 17 | -------------------------------------------------------------------------------- /_posts/2014-08-08-vim-bootstrap.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Bootstrap" 4 | author: "Alex Young" 5 | tags: 6 | - vimrc 7 | --- 8 | 9 | [Vim Bootstrap](http://vim-bootstrap.appspot.com/) is a web app that helps you to quickly generate a new `.vimrc`. It allows you to select from a list of programming languages, then creates a file that includes the appropriate NeoBundle dependencies. 10 | 11 | To use the file, copy it to `~/.vimrc` and then install the dependencies with `vim +NeoBundleInstall +qall`. 12 | 13 | Vim Bootstrap supports further customisation through an optional `.vimrc.local` file, so you don't need to modify the original. 14 | 15 | The project has plenty of documentation on GitHub, so it should help beginners get started with Vim for their preferred programming languages. 16 | -------------------------------------------------------------------------------- /_posts/2014-08-13-vim-productivity.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "How to Boost your Vim Productivity" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - mouse 9 | --- 10 | 11 | [How to boost your Vim productivity](http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/) by Adam Stankiewicz has some thoughtful tips about improving the way you use Vim. The first tip is about changing `Leader` to the space bar, which Adam says means he can keep his fingers on the home row because space is easy to hit with both thumbs. 12 | 13 | Other tips include some useful plugins for manipulating visual selections, tmux, and more remapping techniques. 14 | 15 | It was published back in March, so there are some useful comments as well. 16 | -------------------------------------------------------------------------------- /_posts/2014-08-18-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: Vim-EPUB" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - epub 9 | - ebooks 10 | --- 11 | 12 | ###Vim-EPUB 13 | 14 | [Vim-EPUB](http://www.vim.org/scripts/script.php?script_id=5006) (GitHub: [etnadji / vim-epub](https://github.com/etnadji/vim-epub), License: _GPL_) by Etienne Nadji is an eBook editing plugin that makes it easier to work with EPUB files. 15 | 16 | For example, `:AddEmptyPage` adds a new page, `:AddEmptyCSS` adds a CSS file, and `:AddMedia` can be used to add image files and fonts. 17 | 18 | The `:OpenReader` command opens the resulting document in the system's default EPUB reader. 19 | 20 | Etienne has included [some snippets](https://github.com/etnadji/vim-epub/tree/master/snippets) for Dublin Core XML and EPUB, so you can quickly insert blocks of XML for various commonly used tags. 21 | -------------------------------------------------------------------------------- /_posts/2014-08-22-winman.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "WinMan" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - mac 9 | --- 10 | 11 | [WinMan](http://sennah911.github.io/WinMan/) now has a website and [GitHub repository](https://github.com/sennah911/WinMan). The repository doesn't have any source code -- the author isn't sure if it will be open source yet. 12 | 13 | > WinMan is a "window manager" for OS X that handles windows, apps and other things using Vim-like expressions. If you are used to and love Vim, then this is the ultimate tool to get rid of the mouse even outside of your text editor. 14 | 15 | I previously wrote about WinMan last month in [A Vim-inspired Mac Window Manager](http://usevim.com/2014/07/30/window-manager/). Back then it was just an interesting video, but it's received some attention from reddit and the author continues to make progress videos. 16 | 17 | It has a JavaScript API, so even if it isn't eventually open source it should be relatively hackable. 18 | 19 | -------------------------------------------------------------------------------- /_posts/2014-08-29-italics.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Italic Fonts in iTerm and Vim" 4 | author: "Alex Young" 5 | tags: 6 | - fonts 7 | - console 8 | --- 9 | 10 | In [Enabling italic fonts in iTerm2, tmux, and vim](https://alexpearce.me/2014/05/italics-in-iterm2-vim-tmux/), Alex Pearce explains the steps required to get italic fonts working in console Vim on a Mac. You'll need a font that supports italics, like Consolas, and some configuration for iTerm, tmux, and Vim. 11 | 12 | > I really like having comments in italic. It differentiates them one step more from the surrounding code, and it makes sense semantically too, as a comment is treated very differently from anything else in the source. 13 | 14 | Because Alex's solution changes the value of `$TERM`, you might see errors when sshing to remote servers. He explains how to extract the termcap values, but you could alias `ssh` to `TERM=xterm-256color ssh`. 15 | -------------------------------------------------------------------------------- /_posts/2014-09-01-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: C64.vim, autorepeat.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - colours 9 | --- 10 | 11 | ###C64.vim 12 | 13 | ![C64.vim](/images/posts/vim_C64.png) 14 | 15 | [C64.vim](http://www.vim.org/scripts/script.php?script_id=5015) is a colour scheme that uses the 16 preset colours available on a Commodore 64. Of course, you'll need to run this through a CRT display to really appreciate it, but at least you don't have to load it from a cassette tape. 16 | 17 | ###autorepeat.vim 18 | 19 | [autorepeat.vim](http://www.vim.org/scripts/script.php?script_id=5011) (GitHub: [daisuzu / autorepeat.vim](https://github.com/daisuzu/autorepeat.vim)) by Daisuke Suzuki is a plugin to repeatedly execute a command until a key is pressed. 20 | 21 | It has two settings: `g:autorepeat_timeout`: and `g:autorepeat_interval`. The repeat interval is 50ms, which strikes me as a little fast, but that depends on how you want to use it. I tried it with `dd` and it promptly erased my test file, so I'm thinking it's more suited to navigation. 22 | -------------------------------------------------------------------------------- /_posts/2014-09-05-vim-ci.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "CI for Vim" 4 | author: "Alex Young" 5 | tags: 6 | - testing 7 | - vim 8 | --- 9 | 10 | With all the Vim forks and reinventions of Vim, I thought readers might find it interesting to learn about [vim-ci](https://github.com/vim-jp/vim-ci), created by the vim-jp community. 11 | 12 | This repository includes a fork of Vim as a submodule and includes a build script so a continuous integration server like Travis can easily handle the output. The build script triggers `./configure` with `make && make test` so it's easy to run the tests. 13 | 14 | I found this through [a thread on vim dev](https://groups.google.com/d/msg/vim_dev/V5NxRJI_oOY/VBdUY3OU_AYJ) where Marslo Jiao was asking about how to adapt Vim to help maintain a Windows Vim build. 15 | -------------------------------------------------------------------------------- /_posts/2014-09-22-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-lambdify" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | --- 9 | 10 | ###vim-lambdify 11 | 12 | Some languages make heavy use of lambdas to the point that you may like to fold them. [vim-lambdify](http://www.vim.org/scripts/script.php?script_id=5021) (GitHub: [calebsmith / vim-lambdify](https://github.com/calebsmith/vim-lambdify)) by Caleb Smith is a plugin that conceals lambdas and inline functions with a lambda character. 13 | 14 | It supports Python, JavaScript, and Scheme. It works by replace text for display, but not when the file is saved: 15 | 16 | > Plugins such as vim-haskellConceal and vim-cute-python use this to replace many different things with more pithy/mathy symbols. The approach taken here is to replace only lambdas, but to do so for many different languages to avoid having to use many plugins for a single feature. 17 | 18 | I imagine this would look really cool in functional languages if you use the λ character. 19 | -------------------------------------------------------------------------------- /_posts/2014-09-24-vim-overflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Get the Vim Stack Exchange Started" 4 | author: "Alex Young" 5 | tags: 6 | - community 7 | --- 8 | 9 | There's an Area 51 proposal to get a [vi/Vim Stack Exchange site going](https://area51.stackexchange.com/proposals/76728/vi-vim). The way this works is enough people have to commit to use it. Right now it's 45% complete with 91 people who are committed. 10 | 11 | I read a discussion about [whether Vim questions belong elsewhere](http://discuss.area51.stackexchange.com/questions/18011/isnt-this-on-topic-on-unix-linux-or-superuser), but due to the volume of Vim questions across Stack Overflow I think it's a reasonable proposal. 12 | 13 | People already find a huge wealth of Vim advice on Stack Overflow -- I still find discussions about the ["you don't grok vi"](http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118) post, so a more vi/Vim focused community would be very interesting. 14 | 15 | -------------------------------------------------------------------------------- /_posts/2014-09-29-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-line-jump" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - nerdtree 9 | --- 10 | 11 | ###vim-line-jump 12 | 13 | I like plugins for plugins, and I noticed something interesting in [vim-line-jump](http://www.vim.org/scripts/script.php?script_id=5023) (GitHub: [rargo / vim-line-jump](https://github.com/rargo/vim-line-jump)) -- you can specify mappings based on the current buffer with an `autocmd`. That means you can add NERDTree-specific mappings with something like this: 14 | 15 | {% highlight text %} 16 | autocmd BufEnter NERD_tree_\d\+ nnoremap <buffer> <nowait> <silent> f <ESC>:silent! call LineJumpSelectForward()<cr> 17 | {% endhighlight %} 18 | 19 | The rest of the examples are for NERDTree and Tagbar so you can navigate between files more easily. 20 | -------------------------------------------------------------------------------- /_posts/2014-10-08-vim-syntax-plugins.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Writing Vim Syntax Plugins" 4 | author: "Alex Young" 5 | tags: 6 | - syntax 7 | - plugins 8 | - tutorial 9 | --- 10 | 11 | Keith Smiley at thoughtbot published a detailed [about writing syntax plugins](http://robots.thoughtbot.com/writing-vim-syntax-plugins). He's been adding support for Swift to Vim, and has written up all of the steps you need to make Vim support a new language: file type detection (ftdetect), Vim script execution based on file type (ftplugin), syntax highlighting, and indentation. 12 | 13 | Swift's syntax is relatively simple, but there are still some pretty gnarly `syntax region` lines. Keith also had to write a function to correctly handle Swift indentation, which is invoked by `setlocal indentexpr`. 14 | 15 | -------------------------------------------------------------------------------- /_posts/2014-10-20-incsearch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Improved Incremental Searching" 4 | author: "Alex Young" 5 | tags: 6 | - plugin 7 | - scripts 8 | - search 9 | --- 10 | 11 | ![incsearch.vim](/images/posts/incs.gif) 12 | 13 | [incsearch.vim](http://www.vim.org/scripts/script.php?script_id=5038) (GitHub: [haya14busa / incsearch.vim](https://github.com/haya14busa/incsearch.vim), License: _MIT_) by haya14busa is an improved incremental search. It highlights all pattern matches, and it also works in all modes: Normal, Visual, and Operator-pending. 14 | 15 | You'll need to set up some mappings to make it feel natural. The author has suggested the following: 16 | 17 | {% highlight text %} 18 | map / (incsearch-forward) 19 | map ? (incsearch-backward) 20 | map g/ (incsearch-stay) 21 | {% endhighlight %} 22 | 23 | The results look very impressive -- it reminds me of some of the features you see in recent GUI editors, while still feeling as immediate as Vim's standard regex search. The readme has lots of animated gifs so you can see how it works. 24 | -------------------------------------------------------------------------------- /_posts/2014-10-22-vimswitch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Switch Settings with VimSwitch" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - config 8 | --- 9 | 10 | [VimSwitch](https://priomsrb.github.io/vimswitch/) (GitHub: [priomsrb/vimswitch](https://github.com/priomsrb/vimswitch), License: _GPL_) is a Python program that can change Vim's settings based on a GitHub repository. That means you can switch to a totally different setup like this: 11 | 12 | {% highlight text %} 13 | ./vimswitch amix/vimrc 14 | {% endhighlight %} 15 | 16 | Why would you want to do that? I'd probably use it to try out someone else's vimrc from GitHub, particularly if I wanted to write about a set of dotfiles that's suddenly getting hundreds of stars on GitHub. It may also be useful if you regularly ssh into new servers, or Vagrant virtual machines. 17 | 18 | -------------------------------------------------------------------------------- /_posts/2014-10-24-change.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "The Power of C" 4 | author: "Alex Young" 5 | tags: 6 | - change 7 | --- 8 | 9 | Seasoned Vim vets will tell you to stay out of Insert mode as much as possible. It's hard to master, but will make your edits more resilient to mistakes and more reusable with repeats. 10 | 11 | To reach this goal you need to master entering and exiting Insert mode. One command that makes entering Insert mode better is the change command, which you can issue by pressing `c`. It accepts a motion, so you can change a word under the cursor `cw`, or even change up to a specific character (`cfx` where `x` is the character). The power lies in your understanding of motions. 12 | 13 | Like `d` there are shortcuts: `cc` deletes the current line and starts Insert mode. I often `C` which deletes from the cursor position to the end of the line. This is great for editing copy and pasted lists. 14 | 15 | You can use change commands with Visual mode as well. Because `C` deletes selections _into_ a register, you can change a set of lines then put them somewhere else afterwards. 16 | -------------------------------------------------------------------------------- /_posts/2014-10-27-vimdir.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Manage Files in Vim with vimdir" 4 | author: "Alex Young" 5 | tags: 6 | - plugin 7 | - scripts 8 | - filesystem 9 | --- 10 | 11 | [vimdir.vim](http://www.vim.org/scripts/script.php?script_id=5044) (GitHub: [c0r73x / vimdir.vim](https://github.com/c0r73x/vimdir.vim), License: _MIT_) by Christian Persson is a plugin that allows you to manage files and directories in Vim. You can list files and folders recursively with `:VimdirR`, and then edit the buffer to change the layout of the filesystem. 12 | 13 | For example, `:Vimdir` will list the files in the current directory. You can then use Vim's search tools to find a particular file and `dd` to delete the line. Saving the buffer will cause vimdir to persist the changes. It'll even delete directories, so you should be careful when using it. 14 | 15 | If you're totally taken by the idea of a buffer-based file manager, then you can even use the [vimdir](https://github.com/c0r73x/vimdir.vim/tree/master/bin) script to pull up Vim with vimdir when by typing `vimdir` in the terminal. 16 | -------------------------------------------------------------------------------- /_posts/2014-10-29-vimrcfu.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Share Vimrc Snippets with vimrcfu" 4 | author: "Alex Young" 5 | tags: 6 | - plugin 7 | - scripts 8 | - filesystem 9 | --- 10 | 11 | ![vimrc fu](/images/posts/vimrcfu.png) 12 | 13 | Florian Beer sent in [vimrcfu](http://vimrcfu.com/), a site for sharing Vim configuration snippets. You can up and down-vote each snippet, and share new ones by signing in with GitHub. 14 | 15 | Florian said he created the site as a way to learn more Vim. He's looking for snippets, so please help him by adding some of your favourites! 16 | 17 | -------------------------------------------------------------------------------- /_posts/2014-11-07-opinion.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Opinion" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - settings 8 | - vimrc 9 | --- 10 | 11 | [Mark Steve](http://marksteve.com/) sent in [rstacruz/vim-opinion](https://github.com/rstacruz/vim-opinion), a plugin that captures commonly used `.vimrc` settings so you can easily install and use it with Vundle or Pathogen. It's designed to be used with Tim Pope's [sensible.vim](https://github.com/tpope/vim-sensible). 12 | 13 | The [included documentation](https://github.com/rstacruz/vim-opinion/blob/master/doc/Starter_pack.md) has instructions on how to install it for beginners, so if you've never used Vundle before then you'll find this useful. 14 | 15 | Most of the settings are what I've got in my `.vimrc`. For example, `set ruler`, `set incsearch`, `syntax on`, and `set ttyfast`. You should [check each setting](https://github.com/rstacruz/vim-opinion/blob/master/plugin/options.vim) before installing the whole thing, but using sensible.vim and vim-opinion is definitely preferable to installing a random `.vimrc` or dozens of plugins. 16 | 17 | -------------------------------------------------------------------------------- /_posts/2014-11-10-window-resize.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Resize Windows with directionalWindowResizer" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - search 9 | - shortcuts 10 | --- 11 | 12 | Vim's default window resize shortcuts aren't bad, but I found them quite hard to get used to. [directionalWindowResizer](http://www.vim.org/scripts/script.php?script_id=5051) is an attempt to make resizing more intuitive by allowing the `CTRL` key to be used instead. 13 | 14 | The directional keys are used (`hjkl`), and the windows are resized depending on the selected window. For example, if you've got four horizontal windows and you've selected one in the middle, then pressing `CTRL-k` will resize upwards, and `CTRL-j` will increase the size downwards. However, if you've got the top or bottom window selected, then the behaviour changes: pressing up or down just moves the opposite partition. 15 | 16 | I found it easier to understand than `CTRL-W +` and `-`, and it's a small, hackable script that you can edit if required. 17 | -------------------------------------------------------------------------------- /_posts/2014-11-17-snapshot-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Snapshot.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - undo 9 | --- 10 | 11 | snapshot.vim (GitHub: [gelguy/snapshot.vim](https://github.com/gelguy/snapshot.vim), License: _MIT_) is a plugin for storing sections of code so you can quickly revert later. You might prefer to do this rather than doing something like `git stash`. It works well visually because it can dim regions as you select text to snapshot. 12 | 13 | The default mappings are `a` for defining a snapshot region, `s` for storing the snapshot, and `S` for viewing and selecting the stored snapshots. 14 | 15 | If you like the idea then be aware that snapshots aren't persisted so they'll be lost if you quit Vim. It's really intended as a tool to help you make potentially breaking changes that aren't cleanly encapsulated by an undo. 16 | -------------------------------------------------------------------------------- /_posts/2014-11-19-breaking.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "How a Broken Keyboard Improves Vim Skills" 4 | author: "Alex Young" 5 | tags: 6 | - tutorials 7 | --- 8 | 9 | I've been reading a series of articles by Dan Prince about why he loves Vim. The second article is about how a broken laptop keyboard forced him to get better at Vim. 10 | 11 | > One day the left arrow key on my laptop broke. It completely stopped working. 12 | > 13 | > This was at a time when I had projects to finish at work, assignments to write for University and I was attempting to devote time to working on personal projects too. 14 | > 15 | > By the end of the week, I was using the home keys to navigate at my usual speed. 16 | 17 | This is a new take on the "why hjkl is awesome" argument, but Dan's posts are well illustrated and should win some beginners over to doing things the hard (right) way. 18 | 19 | * [What is Vim and Why Do I Use It?](http://danthedev.com/vim-part-1-why/) 20 | * [How Breaking My Keyboard Made Me Good at Vim](http://danthedev.com/how-breaking-my-keyboard-made-me-good-at-vim/) 21 | -------------------------------------------------------------------------------- /_posts/2014-12-01-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Run Tests with vim-testkey" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - tests 9 | --- 10 | 11 | Micah Geisel sent in [vim-testkey](https://github.com/botandrose/vim-testkey), a script for quickly running tests. You can press `` or `` in a test file to run the tests, and the same shortcut will trigger a save and rerun in non-test files. 12 | 13 | It comes with built-in support for Cucumber and Mocha, but you can add your own test runner settings as well. You can also change the key mapping with `let g:TestKey`. 14 | 15 | If you're a TDD practitioner then this might reduce the amount of times you switch to another terminal and press up/return. I use a file watch-based solution, but vim-testkey might be more efficient for large projects. 16 | -------------------------------------------------------------------------------- /_posts/2014-12-05-windows-builds.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Alternative Windows Builds" 4 | author: "Alex Young" 5 | tags: 6 | - windows 7 | --- 8 | 9 | There's a really useful resource on [r/vim](http://www.reddit.com/r/vim/) about [alternative Vim builds for Windows](http://www.reddit.com/r/vim/comments/2o560o/alternative_to_haroogans_vim_builds/). The official Vim homepage doesn't list all the builds that users would like, and this includes 64-bit and extra language bindings. 10 | 11 | Some of the suggested links include builds with Perl, Python 2 and 3, Ruby, Lua, and TCL, so if you're having trouble getting plugins working in your version of Vim for Windows then you might want to try these out. 12 | 13 | * 14 | * 15 | * 16 | 17 | -------------------------------------------------------------------------------- /_posts/2014-12-08-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Improved Asterisk Motions" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - motions 9 | --- 10 | 11 | [vim-asterisk](http://www.vim.org/scripts/script.php?script_id=5059) (GitHub: [haya14busa/vim-asterisk](https://github.com/haya14busa/vim-asterisk), License: _MIT_) by haya14busa aims to improve the `*` motion. The `*` motion itself searches forward for the word nearest the cursor, so it's quite useful once you get used to it. 12 | 13 | However, vim-asterisk allows you to search within visual selections and it uses smartcase by default which seems more natural to me. 14 | 15 | haya14busa notes that the visual search feature is based on [vim-visualstar](https://github.com/thinca/vim-visualstar). 16 | -------------------------------------------------------------------------------- /_posts/2014-12-19-vim-stickers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Keyboard Shortcuts Stickers" 4 | author: "Alex Young" 5 | tags: 6 | - stickers 7 | - shopping 8 | --- 9 | 10 | ![Vim Keyboard Shortcuts Stickers](/images/posts/vim-shortcut-stickers-530.jpg) 11 | 12 | [These vinyl Vim stickers](http://cmd.club/collections/frontpage/products/vim-keyboard-shortcuts-stickers), available for $9.99, are transparent and show the shortcuts for window management, Normal mode, Visual mode, and search. 13 | 14 | In the photo the sticker is shown on a laptop's hand rest area, which seems like a good place to stick them if you're trying to learn Vim. The same company (cmd.club) also sells [some bash stickers](http://cmd.club/collections/frontpage/products/bash-keyboard-shortcuts-stickers) that are a similar style. 15 | -------------------------------------------------------------------------------- /_posts/2014-12-26-superman.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Read Man Pages with Vim" 4 | author: "Alex Young" 5 | tags: 6 | - man 7 | --- 8 | 9 | ![SuperMan](/images/posts/superman.png) 10 | 11 | [Vim SuperMan](https://github.com/jez/vim-superman) by Jake Zimmerman is a Vim plugin that allows you to read `man` pages with Vim instead of the default pager. You'll have to add a function to your shell's settings to make it work -- follow the example in the readme to make `vman command` work. 12 | 13 | I tried it out and I thought it worked well. I prefer being able to search and navigate the text using the Vim commands, and the syntax highlight for man pages looks great. 14 | 15 | Jake wrote a blog post with more details about the project: [Vim as a Man Page Viewer](http://blog.zimmerman.io/2014/12/20/vim-as-a-man-page-viewer/). I noticed he posted it to Hacker News as well: [Show HN: Vim SuperMan](https://news.ycombinator.com/item?id=8781621). 16 | -------------------------------------------------------------------------------- /_posts/2015-01-02-anti-patterns.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Anti-patterns of vimrc" 4 | author: "Alex Young" 5 | tags: 6 | - scripting 7 | - vimrc 8 | --- 9 | 10 | Most of us collect fragments in our `vimrc` files without ever considering best practices. [Anti-pattern of vimrc](http://rbtnn.hateblo.jp/entry/2014/12/28/010913) by rbtnn lists some common mistakes with the fixed alternatives. 11 | 12 | The author suggests that it's better to use strict options instead of mixing in abbreviations. Also, you should always use the right scope instead of leaking global variables. 13 | 14 | Another interesting point is using groups to define auto-commands to avoid reevaluating them: 15 | 16 | {% highlight text %} 17 | " define a group `vimrc` and initialize. 18 | augroup vimrc 19 | autocmd! 20 | augroup END 21 | 22 | " register autocmds to group `vimrc`. 23 | autocmd vimrc FileType cpp setlocal expandtab 24 | autocmd vimrc FileType make setlocal noexpandtab 25 | {% endhighlight %} 26 | -------------------------------------------------------------------------------- /_posts/2015-01-05-permut.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: permut.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - tables 9 | --- 10 | 11 | [Permut](http://www.vim.org/scripts/script.php?script_id=5078) (GitHub: [jlemetay/permut](https://github.com/jlemetay/permut), License: _Vim_) by JYLM is a plugin for swapping columns in a text-formatted table. It requires that a common column separator character is used, and the default is `|`. 12 | 13 | Permut is invoked with `:[range] Permut col1 col2 [separator]`. 14 | 15 | You might find this plugin useful if you write tables Markdown. I've found Markdown tables can be difficult to manage, so I end up writing tables in another tool then converting them to Markdown later. 16 | 17 | The author suggests using [Tabular](https://github.com/godlygeek/tabular) to align text to fit into columns. 18 | -------------------------------------------------------------------------------- /_posts/2015-01-12-didyoumean.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "DidYouMean.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - files 9 | --- 10 | 11 | DidYouMean.vim (GitHub: [EinfachToll/DidYouMean](https://github.com/EinfachToll/DidYouMean), License: _MIT_) by Daniel Schemala is a small plugin that prompts for the correct filename instead of opening a new file. It's ideal if you often type a partial filename, press tab, then accidentally open a new file because multiple filenames matched. 12 | 13 | One reason I liked the plugin is the source is relatively easy to follow. If you're trying to learn Vim script then you might want to look through [DidYouMean.vim](https://github.com/EinfachToll/DidYouMean/blob/master/plugin/DidYouMean.vim) to see how it works. 14 | -------------------------------------------------------------------------------- /_posts/2015-01-14-qutebrowser.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "qutebrowser: A Vim-Inspired Browser" 4 | author: "Alex Young" 5 | tags: 6 | - browsers 7 | --- 8 | 9 | ![qutebrowser](/images/posts/qutebrowser.png) 10 | 11 | I've tried a lot of Vim browser plugins before -- whether in Chrome or Firefox there are a lot of choices now. One project that's new to me is [qutebrowser](https://github.com/The-Compiler/qutebrowser), which is actually a browser rather than a browser extension. 12 | 13 | It's got a [keybinding cheatsheet](http://qutebrowser.org/img/cheatsheet-big.png), so you can see how similar to Vim it is. It's based on PyQt5 and QtWebKit, and has a minimal GUI that wouldn't look out of place on a tiling window manager. In fact, it was [inspired by dwb](http://portix.bitbucket.org/dwb/), which is influenced by Vimperator. 14 | 15 | The readme lists similar projects, which includes a GTK-based browser called [vimb](http://fanglingsu.github.io/vimb/). So if your system only has GTK then you may prefer to install that. 16 | -------------------------------------------------------------------------------- /_posts/2015-01-19-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Script Roundup: vim-lastplace" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - files 9 | --- 10 | 11 | [vim-lastplace](http://www.vim.org/scripts/script.php?script_id=5090) (GitHub: [dietsche/vim-lastplace](https://github.com/dietsche/vim-lastplace), License: _MIT_) records the last line you were on when you reopen a file. It can ignore certain files, which means you won't get issues when making Git commits. The ignored files are configurable with `g:lastplace_ignore`. 12 | 13 | This plugin is based around `BufReadPost`, which allows a command to be added whenever a file is opened. It then positions the cursor using `g` with a backtick and `"`, which moves the cursor at the last known position in the file. So it's essentially an intelligent repackaging of a built-in Vim feature, which appealed to me. It goes to show that useful plugins don't need a huge amount of code! 14 | -------------------------------------------------------------------------------- /_posts/2015-01-21-stackexchange.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Area 51 Vim Stack Exchange is Back" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - files 9 | --- 10 | 11 | ![Vi and Vim Area 51](/images/posts/viarea51.png) 12 | 13 | [There was a Vim Stack Exchange experiment](http://usevim.com/2014/09/24/vim-overflow/) last year, and [then it was closed](http://usevim.com/2014/10/10/vim-overflow-2/) despite receiving the necessary community support. But now it's back! It's [currently a proposal](http://area51.stackexchange.com/proposals/80441/vi-and-vim?referrer=zvD1X0YStSCNAfGtTTKvSg2), and there are 62 example questions. 14 | 15 | There's a [discussion on reddit](http://www.reddit.com/r/vim/comments/2t571i/vivim_stackexchange_needs_you_once_again_area_51/), but for the real truth behind the original proposal's rejection I think we all know [where](http://emacs.stackexchange.com/) to find the answer! 16 | 17 | I don't think a vi and Vim Stack Exchange would hurt, any source of Vim information is useful if you're trying to improve your skills. Hopefully this time the proposal will get enough votes and moderator support. 18 | -------------------------------------------------------------------------------- /_posts/2015-01-23-pacvim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "PacVim" 4 | author: "Alex Young" 5 | tags: 6 | - games 7 | - vim 8 | --- 9 | 10 | ![PacVim](/images/posts/pacvim.png) 11 | 12 | You're a green cursor that must highlight words whilst avoiding red `G` characters. Welcome to [PacVim](https://github.com/jmoon018/PacVim), a game for learning Vim by Jamal Moon. 13 | 14 | The readme has detailed installation instructions, which is great for beginners, and is launched by running `pacvim` rather than from within Vim itself. 15 | 16 | To complete a level you have to highlight all the words, so it's a bit like eating the [Pac-Dots](http://pacman.wikia.com/wiki/Pac-Dots) in PacMac. The implemented commands include `hjkl` for movement, `w` and `e` for word navigation, and `$` for moving to the end of the line. There are many more commands which are [documented in the readme](https://github.com/jmoon018/PacVim#list-of-implemented-commands). 17 | 18 | It's written in C++, but you can create your own levels (maps) with text files. 19 | -------------------------------------------------------------------------------- /_posts/2015-01-26-partial.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Refactor Templates with vim-partial" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - web 9 | --- 10 | 11 | ![Partial](/images/posts/partial.gif) 12 | 13 | If you're a web developer one chore you might be familiar with is extracting reusable chunks from big templates into smaller files. The [vim-partial](http://www.vim.org/scripts/script.php?script_id=5094) (GitHub: [jbgutierrez/vim-partial](https://github.com/jbgutierrez/vim-partial)) plugin by Javier Blanco Gutiérrez automates the process by creating a new file based on a selection and inserting the necessary `include` line. 14 | 15 | Some existing plugins do this, but they're typically tied to a specific language or framework. This project is more generic and configurable -- it understands how to extract things like ejs, stylus, erb, and haml, but you can extend it by setting `g:partial_templates`. You can also change where the output files are stored with `g:partial_templates_roots`, and you can even make it show the new file in a split window. 16 | -------------------------------------------------------------------------------- /_posts/2015-02-18-imagevim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Preview Images with image.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - graphics 9 | --- 10 | 11 | Sometimes I accidentally open a png or jpg with Vim, and it shows me a face-melting representation of the binary data. If you do this enough it gets annoying, so instead I've been using Ashish Anand's [image.vim](https://github.com/ashisha/image.vim) to render ASCII previews of images. 12 | 13 | ![image.vim](/images/posts/adventurevim.png) 14 | 15 | Converting images to ASCII is an old trick that you can do pretty easily on the command-line (at least it's easy in Linux), but the thing I liked about this plugin is it uses an autocmd to run whenever an image is opened: 16 | 17 | {% highlight text %} 18 | au BufRead *.png,*.jpg,*.jpeg :call DisplayImage() 19 | {% endhighlight %} 20 | 21 | It uses the Python Imaging Library (`pip install Pillow`) to render the ASCII image, which you may find easier to install than the equivalent command-line tools. 22 | -------------------------------------------------------------------------------- /_posts/2015-02-23-indentwise.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Indentation Motions" 4 | author: "Alex Young" 5 | tags: 6 | - indentation 7 | - motions 8 | - scripts 9 | - plugins 10 | --- 11 | 12 | Here's a cool idea: indentation with motions. IndentWise by Jeet Sukumaran (GitHub: [jeetsukumaran/vim-indentwise](https://github.com/jeetsukumaran/vim-indentwise)) provides motions based on indent depths or levels in normal, visual, and operator-pending modes. 13 | 14 | For example, pressing `[-` moves to the previous line of lesser indent than the current line. The opposite is `]-`, which moves to next line of lesser indent than the current line. It supports lots of other motions which are all documented, and configurable. 15 | 16 | You can also move based on the absolute indentation level by providing a count argument, and block-scope boundary navigation is supported as well. 17 | 18 | This plugin was inspired by [a VimTips wiki post](http://vim.wikia.com/wiki/Move_to_next/previous_line_with_same_indentation), but the author has expanded it quite a bit. 19 | -------------------------------------------------------------------------------- /_posts/2015-03-02-script-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "gVim to xcolors" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - python 8 | - colours 9 | --- 10 | 11 | gvim-to-xcolors (GitHub: [97-109-107/gvim-to-xcolors](https://github.com/97-109-107/gvim-to-xcolors)) is a Python script for extracting colours from Vim themes and outputting colours in the X resources convention. 12 | 13 | It does this by parsing highlight groups and their priority. The normal group is processed separately to determine the foreground and background colour. 14 | 15 | The author has been using it to generate i3wm colour schemes with [Charles Leifer's themer](http://charlesleifer.com/blog/using-python-to-generate-awesome-linux-desktop-themes/). I think this would be cool if you've got a favourite Vim colour scheme but can't quite get your window manager to look right. 16 | -------------------------------------------------------------------------------- /_posts/2015-03-04-neovim-emacs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Emacs in Neovim" 4 | author: "Alex Young" 5 | tags: 6 | - neovim 7 | - terminal 8 | - emacs 9 | --- 10 | 11 | There's a pull request on the [neovim / neovim](https://github.com/neovim/neovim) project that adds [libvterm](http://www.leonerd.org.uk/code/libvterm/). This library is a C implementation of a terminal emulator that provides callbacks for drawing, so Thiago de Arruda has hooked into it and displays the output from within Neovim. 12 | 13 | That means you can get a full terminal by typing `:terminal`. It's even capable of running Emacs. There's even a video of this on YouTube: take a look at [Emacs running in Neovim by Justin M. Keyes](https://www.youtube.com/watch?v=xZbMVj9XSUo). 14 | 15 | I found this on [reddit/r/vim](https://www.reddit.com/r/vim/) under [Emacs running in Neovim](https://www.reddit.com/r/vim/comments/2xlz3s/emacs_running_in_neovim/). Besides the obvious Emacs/Vim jokes, people seemed genuinely impressed. If this ships in Neovim it'll mean we have to completely rewrite all of our "Vim as an IDE" posts! 16 | -------------------------------------------------------------------------------- /_posts/2015-03-06-unix-stickers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Stickers and Posters" 4 | author: "Alex Young" 5 | image: "/images/posts/vimstickers.png" 6 | tags: 7 | - stickers 8 | - vimrc 9 | --- 10 | 11 | 12 | 13 | Unixstickers has a [new Vim poster](http://www.unixstickers.com/posters/linux-posters/vim-editor-logo-wall-poster) that's a giant Vim logo. I have a [Vim Unixsticker](http://www.unixstickers.com/stickers/software_stickers/vim-text-editor-shaped-sticker), and unlike most of my other Internet-ordered sticker swag this one is vinyl and looks pretty good on a laptop. 14 | 15 | If you're looking for a cheatsheet style Vim poster, then [this is my favourite one](http://vimcheatsheet.com). They're going to a release a 2.0 version soon. 16 | -------------------------------------------------------------------------------- /_posts/2015-03-11-neovim-reviews.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Neovim: Reviewers Wanted" 4 | author: "Alex Young" 5 | tags: 6 | - neovim 7 | - management 8 | --- 9 | 10 | Eliseo Martínez posted an issue to the Neovim project that [called for more reviewers](https://github.com/neovim/neovim/issues/2122): 11 | 12 | > Having more people merging code, or trying to cope with PR's in a more FIFO way, as it's been suggested in #2056, could help, but, IMO, that's not the real bottleneck. The crux of the problem, to my understanding, is reviewing. To state it clearly: We need more reviewers. 13 | > 14 | > I think we could try a simple approach to make reviewing more attractive: Let's credit reviewers by setting them as authors of review commits. 15 | 16 | Neovim has hit the point where a lot of work is being done, but it's getting harder for the core team to manage contributions. There's lots of excitement about the project so it's good that so many people are contributing, but exactly how pull requests are managed now will be critical for the future of the project. 17 | 18 | If you want to help Neovim then now might be a good time to get involved! 19 | -------------------------------------------------------------------------------- /_posts/2015-03-13-erlang-and-vim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Writing Erlang with Vim" 4 | author: "Alex Young" 5 | tags: 6 | - erlang 7 | - articles 8 | --- 9 | 10 | If you're an Erlang fan, how do you configure Vim? Adam Rutkowski sent me [Writing Erlang with Vim](http://aerosol.github.io/anxibits/vim-as-your-erlang-ide/), which includes his favourite plugins for tmux integration, Erlang code navigation, and documentation lookups. 11 | 12 | > Did you know that there's a suite of vim plugins dedicated to Erlang development making it, hands down, the best Erlang/OTP development environment? Let me break it down for you. 13 | 14 | He's included videos for each plugin so you can see how it's supposed to work. 15 | 16 | I noticed Adam uses [asciinema](https://asciinema.org/) for the videos -- this is new to me but seems amazingly useful for showing off cool terminal tricks. It actually shows terminal screencasts as text, complete with colours, which looks a lot better than blurry gifs. 17 | -------------------------------------------------------------------------------- /_posts/2015-04-06-underscore.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Underscore.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripting 7 | - vimrc 8 | - functional 9 | --- 10 | 11 | [Underscore.vim](http://www.vim.org/scripts/script.php?script_id=5149) (GitHub: [haya14busa/underscore.vim](https://github.com/haya14busa/underscore.vim), License: _MIT_) by haya14busa is a library of functional programming helpers for Vim: 12 | 13 | {% highlight text %} 14 | echo s:_.reject([1, 2, 3, 4, 5, 6], 'v:val % 2 == 0') 15 | " => [1, 3, 5] 16 | {% endhighlight %} 17 | 18 | It's inspired by [Underscore.js](http://underscorejs.org), but also [lodash](https://github.com/lodash/lodash) which I always felt was more "functional" than Underscore. There are a lot of functions in the library -- take a look at [the documentation to find each one](https://github.com/haya14busa/underscore.vim/blob/master/doc/underscore.txt). 19 | -------------------------------------------------------------------------------- /_posts/2015-04-08-neovim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Neovim: Mac GUI, Rust IDE, and More" 4 | author: "Alex Young" 5 | tags: 6 | - neovim 7 | - community 8 | --- 9 | 10 | There hasn't been a Neovim update since last year, so I was pleased to see [Newsletter #5 - Out of the Box](http://neovim.org/news/2015/april/). This edition has some interesting news about embedding Neovim: there's a Rust IDE called [SolidOak](https://sekao.net/solidoak/) that uses an embedded Neovim, and a new [Mac OS X GUI for Neovim](https://github.com/rogual/neovim-dot-app). The Mac app has build instructions in the readme, and it currently supports mouse input, tabs, and has Mac GUI features like menus and font options. 11 | 12 | ![Neovim Mac](/images/posts/macneovim.png) 13 | 14 | I managed to get it to run, but I had to update `msgpack` from Homebrew first. 15 | 16 | The newsletter covers many changes to Neovim's source, which includes new autocommand events for tabs, changes to the job API, and code hygiene improvements. It sounds like the project is still very active, and the community around it is growing rapidly. 17 | -------------------------------------------------------------------------------- /_posts/2015-04-10-athame.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Athame: Vim for Readline" 4 | author: "Alex Young" 5 | tags: 6 | - terminal 7 | - readline 8 | --- 9 | 10 | If you use readline's Vim mode, then you might be interested in [athame](https://github.com/ardagnir/athame). This project is a patch for readline that embeds Vim, so you can use Vim's full editing capabilities rather than the more limited vi-mode subset that readline provides. 11 | 12 | It uses the same author's [Vimbed](https://github.com/ardagnir/vimbed) project, which is used by [Pterosaur](http://github.com/ardagnir/pterosaur). Athame works by sending keys to an instance of Vim, which means you can search history using `/` and `?`. 13 | 14 | Because one of the advantages of Neovim is embedding, I wondered what a similar Neovim/readline fork would look like. However, it might be possible to approach the problem differently: use a Vim script to communicate with a Neovim `:terminal`. 15 | 16 | If you want to try out vi-mode in your terminal, try `set -o vi`, type some text, and then press escape to start navigating using Normal mode commands. 17 | -------------------------------------------------------------------------------- /_posts/2015-04-20-vim-watch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim.Watch" 4 | author: "Alex Young" 5 | tags: 6 | - vim 7 | - videos 8 | - tutorials 9 | --- 10 | 11 | [Sri Kadimisetty](http://sri.io) has been working on Vim video tutorials at [Vim.Watch](http://vim.watch). They're short, five minute tutorials that are focused on a single topic or command. For example, [sesionoptions](http://vim.watch/sessionoptions/) covers Vim's session management features. 12 | 13 | If you enjoy these and want to see more Vim video tutorials, I also noticed [MinuteVimTricks](https://www.youtube.com/user/MinuteVimTricks) posted a new video two weeks ago. 14 | -------------------------------------------------------------------------------- /_posts/2015-04-24-vim-colorscheme-primary.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Google Colour Scheme" 4 | author: "Alex Young" 5 | tags: 6 | - themes 7 | --- 8 | 9 | [Primary](http://www.vim.org/scripts/script.php?script_id=5160) (GitHub: [google/vim-colorscheme-primary](https://github.com/google/vim-colorscheme-primary)) by Lisie Michel at Google is a colour scheme based on Google's branding. The GUI version uses Google's exact colours, while the 256 and 8 colour versions are approximations. 10 | 11 | ![Primary](/images/posts/primarylight.png) 12 | 13 | I usually have a dark terminal, but I noticed Primary looks really nice in the light colour scheme mode. I don't usually write about colour schemes, but this one interested me because it's actually on Google's GitHub repository and looks good in light mode. 14 | -------------------------------------------------------------------------------- /_posts/2015-04-27-yajs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Yet Another JavaScript Syntax" 4 | author: "Alex Young" 5 | tags: 6 | - javascript 7 | - scripts 8 | - plugins 9 | - syntax 10 | --- 11 | 12 | JavaScript is moving pretty fast, so you might find Vim's built-in syntax lags behind the latest standards and APIs. [YAJS: Yet Another JavaScript Syntax](https://github.com/othree/yajs.vim) by othree is an extended version of [jelera/vim-javascript-syntax](https://github.com/jelera/vim-javascript-syntax). It includes support for ES6, web APIs, and DOM keywords. 13 | 14 | The ES6 support is extremely good -- it supports features like fat arrow, array comprehensions, and the template strings. 15 | 16 | I took a screenshot of YAJS vs. the built in highlighting, and you can see how it handles arrow functions, template strings, and some of the newer keywords: 17 | 18 | ![YAJS](/images/posts/es6.png) 19 | 20 | -------------------------------------------------------------------------------- /_posts/2015-05-04-vison.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vison: JSON Schema Completion" 4 | author: "Alex Young" 5 | tags: 6 | - json 7 | - javascript 8 | - plugins 9 | - scripts 10 | --- 11 | 12 | [Vison](http://www.vim.org/scripts/script.php?script_id=5162) (GitHub: [Quramy/vison](https://github.com/Quramy/vison)) by Yosuke Kurami is a plugin for writing JSON schema files. It handles completion for keys and values, and works with [downloadable JSON schemas](http://schemastore.org/json/) that are intended to be used for auto-completion. 13 | 14 | ![Vison](/images/posts/vison.png) 15 | 16 | The completion menu includes type hints and shows what values are optional, so it will make writing JSON files much easier. This is ideal if you frequently write things like package.json files. 17 | 18 | -------------------------------------------------------------------------------- /_posts/2015-05-11-colortuner.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Colortuner" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - colours 9 | --- 10 | 11 | 12 | 13 | [Colortuner](https://github.com/zefei/vim-colortuner) by Zefei Xuan is a colour scheme editor that allows you to alter the scheme with sliders. There's a slider for brightness, contrast, saturation, and hue. You can also invert the scheme to see the dark/light version. 14 | 15 | The interface also allows you to switch between themes, and you can specify a list of themes with `g:colortuner_preferred_schemes`. 16 | 17 | The only downside of this plugin is it depends on either a GUI version of Vim, or Neovim in a true colour terminal. Otherwise it looks very cool, and makes experimenting with themes easier than editing files. 18 | -------------------------------------------------------------------------------- /_posts/2015-05-13-vs2015.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Vim Builds in Visual Studio 2015" 4 | author: "Alex Young" 5 | tags: 6 | - vim 7 | - windows 8 | --- 9 | 10 | There have been a few patches to [vim's master branch](https://github.com/vim/vim/commits/master) that ensure Vim builds in [Visual Studio 2015](https://msdn.microsoft.com/en-us/library/dd831853\(v=vs.140\).aspx). Visual Studio has a [free "Community" edition](https://www.visualstudio.com/en-us/products/free-developer-offers-vs.aspx) that was introduced last year, and one of the main reasons people are excited about the 2015 RC is Microsoft's continued efforts to support cross-platform development. 11 | 12 | I'm not really a Windows developer, but I'd prefer to be able to build Vim in Visual Studio rather than having to install GCC for Windows. Builds [initially failed](https://groups.google.com/d/msg/vim_dev/lT_BBQJxr_U/vSzPNwwoIrQJ) under the 2015 RC, but it looks like the [main issue](https://code.google.com/p/vim/issues/detail?id=357) was fairly minor. If you're trying out a free RC you should at least be able to get Vim to build again now. 13 | 14 | -------------------------------------------------------------------------------- /_posts/2015-05-15-completion.md: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | layout: post 4 | title: "VimAwesome Plugin Completion" 5 | author: "Alex Young" 6 | tags: 7 | - vim 8 | - plugins 9 | - scripts 10 | --- 11 | 12 | If, like me, you install lots of Vim plugins regularly, then why not autocomplete plugin names based on [VimAwesome](http://vimawesome.com)? Junegunn Choi posted a [gist](https://gist.github.com/junegunn/5dff641d68d20ba309ce) to do this, and it's on [Hacker News](https://news.ycombinator.com/item?id=9548985) if you want to upvote it. 13 | 14 | ![VimAwesome](/images/posts/vimawesome-completion.gif?a=1) 15 | 16 | It actually uses a Ruby scrip to download and parse the JSON from [vimawesome.com](http://vimawesome.com), so you could use the same principle to add all kinds of web-based completion for services like GitHub, npm, RubyGems.org, and so on. 17 | -------------------------------------------------------------------------------- /_posts/2015-05-18-dotenv.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "dotenv.vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - web-development 9 | --- 10 | 11 | Yesterday Tim Pope published a new plugin called [dotenv.vim](http://www.vim.org/scripts/script.php?script_id=5176) (GitHub: [tpope/vim-dotenv](https://github.com/tpope/vim-dotenv), License: _Vim_). It reads variables from a `.env` or `Procfile` and sets the corresponding variables in Vim. 12 | 13 | This is useful if you have Procfiles for web applications and want to trigger the same commands for local development. Tim notes that you can use dotenv.vim with [projectionist.vim](https://github.com/tpope/vim-projectionist) and [dispatch.vim](https://github.com/tpope/vim-dispatch) to get a default `:Start` of `foreman start` for projects with a Procfile, which is ideal if you're working on lots of Heroku projects. 14 | -------------------------------------------------------------------------------- /_posts/2015-05-25-hardy.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Hardy: Arduino Support for Vim" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - arduino 8 | --- 9 | 10 | That Arduino IDE isn't too bad, but you'd probably prefer to use Vim for Arduino development. [Hardy](http://www.vim.org/scripts/script.php?script_id=5180) (GitHub: [4Evergreen4/vim-hardy](https://github.com/4Evergreen4/vim-hardy)) provides Arduino support for Vim. With it, you can type `:ArduinoVerify` to check an Arduino file, and `:ArduinoUpload` to compile and upload it. You'll still need to have installed the Arduino IDE for this to work, because it comes with the tools required for compilation. 11 | 12 | Hardy also includes an Arduino syntax file. The name "Hardy" comes from the fact "Arduino" means "hardy friend" in Italian, and this script is a friend of Arduino (or a friend of yours if you're not a fan of the IDE). 13 | -------------------------------------------------------------------------------- /_posts/2015-06-22-tag-comment.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "vim-tag-comment" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - plugins 8 | - html 9 | - xml 10 | --- 11 | 12 | [vim-tag-comment](http://www.vim.org/scripts/script.php?script_id=5190) (GitHub: [mvolkmann/vim-tag-comment](https://github.com/mvolkmann/vim-tag-comment), License: _MIT_) is another small but useful plugin by Mark Volkmann. This one adds/removes XML comments, but instead of adding a comment to each line it'll use one multi-line comment instead. 13 | 14 | It's not quite as simple as wrapping a visual selection in the comment syntax, however. It'll try to wrap a given element, so if you've got nested elements they'll be included in the comment. The commands for this are `ElementComment` and `ElementUncomment`. 15 | 16 | It comes with some built-in mappings: 17 | 18 | * `tc`: ElementComment 19 | * `tu`: ElementUncomment 20 | * `tC`: TagComment 21 | * `tU`: TagUncomment 22 | 23 | I've noticed people like shortcuts for commenting code. I prefer to just delete code myself, but it depends on how you work. 24 | -------------------------------------------------------------------------------- /_posts/2015-06-29-vim_cterm2gui2cterm.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "CTerm to GUI" 4 | author: "Alex Young" 5 | tags: 6 | - colours 7 | - gui 8 | --- 9 | 10 | I've seen some tools that map from Vim GUI themes to console, but what about the other way around? A reader sent in vim cterm2gui2cterm (GitHub: [97-109-107/vim_cterm2gui2cterm](https://github.com/97-109-107/vim_cterm2gui2cterm)), a tool that maps from console themes to GUI themes and back again. 11 | 12 | It's a Python script that has a dictionary that maps colours from the console number to a hex equivalent (`xtermMap`). It outputs the result in a cterm or vim colour scheme file, so you can easily load it as a colour scheme. It might be useful if you often switch between gVim and console Vim and want to unify the themes. 13 | -------------------------------------------------------------------------------- /_posts/2015-07-03-visual-increment.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Visual Mode Increment" 4 | author: "Alex Young" 5 | tags: 6 | - editing 7 | - new-features 8 | --- 9 | 10 | In [Vim patch 7.4.754](https://github.com/vim/vim/commit/3e0066389a80f201fc631391fa7f408f1ee39ba5), I noticed Vim now supports incrementing numbers in Visual mode. You can increment numbers by pressing `CTRL-A`, and decrement with `CTRL-X`. It's one of those features that doesn't sound amazingly useful but can be handy once you've memorised it. If you build off [Vim's master branch](https://github.com/vim/vim) you can try it out now. 11 | 12 | ![Visual increment](/images/posts/visual-increment.gif) 13 | 14 | To enter Visual mode, type `CTRL-V` (technically Visual mode blockwise). You can then use `hjkl` to select multiple lines, and increment the numbers on each line with `CTRL-A`. I thought this might be good for shifting sets of numbers in a numerical list, like you might find in a Markdown file for example. 15 | -------------------------------------------------------------------------------- /_posts/2015-07-06-terminus.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Terminus: Improved Terminal Support" 4 | author: "Alex Young" 5 | tags: 6 | - scripts 7 | - terminal 8 | - tmux 9 | --- 10 | 11 | [Terminus](http://www.vim.org/scripts/script.php?script_id=5216) (GitHub: [wincent/terminus](https://github.com/wincent/terminus)) by Greg Hurrell is a plugin for improving Vim's integration with terminals, with features designed for tmux and iTerm. Features include: 12 | 13 | * Cursor shape in Insert mode: thin vertical bar in the console 14 | * Mouse support: Activates 'mouse' support in all modes and additionally tries to activate `sgr-mouse` support 15 | * Terminal support for `FocusGained` and `FocusLost` events 16 | * Paste mode, so you don't have to set the `'paste'` option 17 | 18 | These features make Vim feel more like a GUI text editor, without doing anything too complex. I've seen quite a few plugins that attempt to improve the focus support, but I haven't yet tried using `sgr-mouse`. It seems like a good set of feature enhancements that people switching to console Vim are interested in. 19 | -------------------------------------------------------------------------------- /_posts/2015-07-13-ferret.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Ferret" 4 | author: "Alex Young" 5 | tags: 6 | - search 7 | - ack 8 | - grep 9 | --- 10 | 11 | [Ferret](http://www.vim.org/scripts/script.php?script_id=5220) (GitHub: [wincent/ferret](https://github.com/wincent/ferret)) by Greg Hurrell is a search plugin that offers asynchronous search, multi-file replace, args list/argdo support, and QuickFix listing enhancements. 12 | 13 | It supports The Silver Searcher, Ack, and grep. Asynchronous support is done with [dispatch.vim](https://github.com/tpope/vim-dispatch) -- you have to install dispatch.vim if you want asynchronous searching. 14 | 15 | I've been trying it out, and it feels very similar to my usual Silver Searcher plugin, so I'm going to stick with it for a few weeks to see if I prefer it. So far I definitely like the multi-file replace, and the QuickFix list looks good. 16 | -------------------------------------------------------------------------------- /_posts/2015-07-17-break.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Holiday" 4 | author: "Alex Young" 5 | tags: 6 | - news 7 | --- 8 | 9 | I'm going to take a break from usevim for a few weeks. We're about to have our second child, so things are going to be busy for a while! 10 | 11 | Please keep sending in your scripts, colour schemes, and links to tutorials. I'll publish again soon. 12 | -------------------------------------------------------------------------------- /bin/feed_images.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cat _site/feed.xml | sed "s/img src='\/images\/posts/img src='http:\/\/usevim.com\/images\/posts/g" > _site/feed_1.xml 4 | cat _site/feed_1.xml | sed 's/img src="\/images\/posts/img src="http:\/\/usevim.com\/images\/posts/g' > _site/feed.xml 5 | rm _site/feed_1.xml 6 | 7 | cat _site/feed.rss | sed "s/img src='\/images\/posts/img src='http:\/\/usevim.com\/images\/posts/g" > _site/feed_1.rss 8 | cat _site/feed_1.rss | sed 's/img src="\/images\/posts/img src="http:\/\/usevim.com\/images\/posts/g' > _site/feed.rss 9 | rm _site/feed_1.rss 10 | -------------------------------------------------------------------------------- /contact.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | h1 Contact usevim 6 | 7 | 8 | p When sending in a library, plugin, or module, please try to include as much information as possible. What is the project's license? How is it installed? 9 | p Include your name and a link to your site so we can tell readers who tipped us off. 10 | 11 | h2 Social Networks 12 | 13 | p Reach us on Twitter: @vimnews. 14 | 15 |

Contact Form

16 | 17 |

Please wait while the contact form loads, or visit it directly.

18 | 19 | 20 | -------------------------------------------------------------------------------- /cookies.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | h1 Cookies and Privacy 6 | 7 | p This website uses the following third-party services that create cookies during browsing: 8 | 9 | ul 10 | li 11 | a(href="http://carbonads.net/") Carbon Ads 12 | li 13 | a(href="http://disqus.com") Disqus 14 | li 15 | a(href="http://facebook.com") Facebook 16 | li 17 | a(href="http://google.com/") Google+ 18 | li 19 | a(href="http://twitter.com") Twitter 20 | 21 | h2 Disabling Cookies 22 | 23 | p If you do not wish to store cookies from this website, then change your browser's settings to block them. 24 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/favicon.ico -------------------------------------------------------------------------------- /files/tern_keyboard.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/files/tern_keyboard.pdf -------------------------------------------------------------------------------- /images/icons/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/facebook.png -------------------------------------------------------------------------------- /images/icons/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/feed.png -------------------------------------------------------------------------------- /images/icons/feed24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/feed24.png -------------------------------------------------------------------------------- /images/icons/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/google.png -------------------------------------------------------------------------------- /images/icons/mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/mail.png -------------------------------------------------------------------------------- /images/icons/tag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/tag.gif -------------------------------------------------------------------------------- /images/icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/icons/twitter.png -------------------------------------------------------------------------------- /images/posts/RMv8KsJ.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/RMv8KsJ.gif -------------------------------------------------------------------------------- /images/posts/adventuresquiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/adventuresquiz.png -------------------------------------------------------------------------------- /images/posts/adventurevim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/adventurevim.png -------------------------------------------------------------------------------- /images/posts/ags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/ags.png -------------------------------------------------------------------------------- /images/posts/airline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/airline.png -------------------------------------------------------------------------------- /images/posts/androiddev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/androiddev.png -------------------------------------------------------------------------------- /images/posts/atom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/atom.png -------------------------------------------------------------------------------- /images/posts/buffet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/buffet.png -------------------------------------------------------------------------------- /images/posts/change-inner-tag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/change-inner-tag.gif -------------------------------------------------------------------------------- /images/posts/change-inner-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/change-inner-tag.png -------------------------------------------------------------------------------- /images/posts/cloudvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/cloudvi.png -------------------------------------------------------------------------------- /images/posts/cmder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/cmder.png -------------------------------------------------------------------------------- /images/posts/colortuner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/colortuner.gif -------------------------------------------------------------------------------- /images/posts/columns-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/columns-tabs.png -------------------------------------------------------------------------------- /images/posts/counting-with-vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/counting-with-vim.png -------------------------------------------------------------------------------- /images/posts/ctags.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/ctags.gif -------------------------------------------------------------------------------- /images/posts/cvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/cvim.png -------------------------------------------------------------------------------- /images/posts/decoding-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/decoding-tabs.png -------------------------------------------------------------------------------- /images/posts/defaultpatience.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/defaultpatience.png -------------------------------------------------------------------------------- /images/posts/dnvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/dnvim.png -------------------------------------------------------------------------------- /images/posts/easymotion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/easymotion.png -------------------------------------------------------------------------------- /images/posts/elixir-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/elixir-file.png -------------------------------------------------------------------------------- /images/posts/elixir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/elixir.png -------------------------------------------------------------------------------- /images/posts/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/emoji.png -------------------------------------------------------------------------------- /images/posts/es6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/es6.png -------------------------------------------------------------------------------- /images/posts/fisa-vim-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/fisa-vim-config.png -------------------------------------------------------------------------------- /images/posts/flappyvird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/flappyvird.png -------------------------------------------------------------------------------- /images/posts/flat-vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/flat-vim.png -------------------------------------------------------------------------------- /images/posts/floobits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/floobits.png -------------------------------------------------------------------------------- /images/posts/foldingpop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/foldingpop.png -------------------------------------------------------------------------------- /images/posts/forms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/forms.png -------------------------------------------------------------------------------- /images/posts/friendly-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/friendly-tabs.png -------------------------------------------------------------------------------- /images/posts/frogtor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/frogtor.png -------------------------------------------------------------------------------- /images/posts/fzf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/fzf.gif -------------------------------------------------------------------------------- /images/posts/ghcmod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/ghcmod.png -------------------------------------------------------------------------------- /images/posts/githubissues.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/githubissues.gif -------------------------------------------------------------------------------- /images/posts/happyedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/happyedit.png -------------------------------------------------------------------------------- /images/posts/headlights_ss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/headlights_ss.png -------------------------------------------------------------------------------- /images/posts/hjkl-cherry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/hjkl-cherry.png -------------------------------------------------------------------------------- /images/posts/hjklshirt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/hjklshirt.png -------------------------------------------------------------------------------- /images/posts/iawriter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/iawriter.png -------------------------------------------------------------------------------- /images/posts/ibmkeyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/ibmkeyboard.png -------------------------------------------------------------------------------- /images/posts/incs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/incs.gif -------------------------------------------------------------------------------- /images/posts/javacomplete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/javacomplete.png -------------------------------------------------------------------------------- /images/posts/kakoune.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/kakoune.png -------------------------------------------------------------------------------- /images/posts/mac-keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/mac-keyboard.png -------------------------------------------------------------------------------- /images/posts/macneovim-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macneovim-windows.png -------------------------------------------------------------------------------- /images/posts/macneovim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macneovim.png -------------------------------------------------------------------------------- /images/posts/macvim-drawer-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macvim-drawer-detail.png -------------------------------------------------------------------------------- /images/posts/macvim-drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macvim-drawer.png -------------------------------------------------------------------------------- /images/posts/macvim-drew-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macvim-drew-icon.png -------------------------------------------------------------------------------- /images/posts/macvim-file-drawer-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macvim-file-drawer-settings.png -------------------------------------------------------------------------------- /images/posts/macvim-file-drawer-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/macvim-file-drawer-toggle.png -------------------------------------------------------------------------------- /images/posts/matchmaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/matchmaker.png -------------------------------------------------------------------------------- /images/posts/material-asm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/material-asm.png -------------------------------------------------------------------------------- /images/posts/mavericks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/mavericks.png -------------------------------------------------------------------------------- /images/posts/nerdtree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/nerdtree.png -------------------------------------------------------------------------------- /images/posts/nerdtreemenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/nerdtreemenu.png -------------------------------------------------------------------------------- /images/posts/netrw-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/netrw-long.png -------------------------------------------------------------------------------- /images/posts/nvim-term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/nvim-term.png -------------------------------------------------------------------------------- /images/posts/onebdi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/onebdi.png -------------------------------------------------------------------------------- /images/posts/openvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/openvim.png -------------------------------------------------------------------------------- /images/posts/pacvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/pacvim.png -------------------------------------------------------------------------------- /images/posts/painlessvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/painlessvim.png -------------------------------------------------------------------------------- /images/posts/partial.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/partial.gif -------------------------------------------------------------------------------- /images/posts/peertopeer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/peertopeer.png -------------------------------------------------------------------------------- /images/posts/primarylight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/primarylight.png -------------------------------------------------------------------------------- /images/posts/pyvim-window-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/pyvim-window-layout.png -------------------------------------------------------------------------------- /images/posts/qutebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/qutebrowser.png -------------------------------------------------------------------------------- /images/posts/reset_mod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/reset_mod.png -------------------------------------------------------------------------------- /images/posts/roguevim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/roguevim.png -------------------------------------------------------------------------------- /images/posts/rustrim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/rustrim.png -------------------------------------------------------------------------------- /images/posts/ryu-hjkl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/ryu-hjkl.png -------------------------------------------------------------------------------- /images/posts/scala-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/scala-workflow.png -------------------------------------------------------------------------------- /images/posts/selecta.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/selecta.gif -------------------------------------------------------------------------------- /images/posts/shellcheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/shellcheck.png -------------------------------------------------------------------------------- /images/posts/side-effects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/side-effects.png -------------------------------------------------------------------------------- /images/posts/signify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/signify.png -------------------------------------------------------------------------------- /images/posts/skip.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/skip.gif -------------------------------------------------------------------------------- /images/posts/snake-vim-trainer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/snake-vim-trainer.png -------------------------------------------------------------------------------- /images/posts/spectacle-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/spectacle-mac.png -------------------------------------------------------------------------------- /images/posts/spellingze.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/spellingze.gif -------------------------------------------------------------------------------- /images/posts/startify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/startify.png -------------------------------------------------------------------------------- /images/posts/superman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/superman.png -------------------------------------------------------------------------------- /images/posts/syntastic-javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/syntastic-javascript.png -------------------------------------------------------------------------------- /images/posts/syntastic-official.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/syntastic-official.png -------------------------------------------------------------------------------- /images/posts/syntastic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/syntastic.png -------------------------------------------------------------------------------- /images/posts/t9md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/t9md.png -------------------------------------------------------------------------------- /images/posts/tabman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/tabman.png -------------------------------------------------------------------------------- /images/posts/tern-for-vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/tern-for-vim.png -------------------------------------------------------------------------------- /images/posts/thumbnail-vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/thumbnail-vim.png -------------------------------------------------------------------------------- /images/posts/treed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/treed.png -------------------------------------------------------------------------------- /images/posts/twobdi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/twobdi.png -------------------------------------------------------------------------------- /images/posts/undotree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/undotree.png -------------------------------------------------------------------------------- /images/posts/unitevim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/unitevim.png -------------------------------------------------------------------------------- /images/posts/unix-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/unix-tree.png -------------------------------------------------------------------------------- /images/posts/viarea51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/viarea51.png -------------------------------------------------------------------------------- /images/posts/vicious-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vicious-1.png -------------------------------------------------------------------------------- /images/posts/vicious-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vicious-2.png -------------------------------------------------------------------------------- /images/posts/villustrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/villustrator.png -------------------------------------------------------------------------------- /images/posts/vim-101-tagbar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-101-tagbar-1.png -------------------------------------------------------------------------------- /images/posts/vim-101-tagbar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-101-tagbar-2.png -------------------------------------------------------------------------------- /images/posts/vim-adventures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-adventures.png -------------------------------------------------------------------------------- /images/posts/vim-dotoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-dotoo.png -------------------------------------------------------------------------------- /images/posts/vim-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-emoji.png -------------------------------------------------------------------------------- /images/posts/vim-encryption.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-encryption.gif -------------------------------------------------------------------------------- /images/posts/vim-essentials-to-mastery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-essentials-to-mastery.png -------------------------------------------------------------------------------- /images/posts/vim-geeknote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-geeknote.png -------------------------------------------------------------------------------- /images/posts/vim-github-dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-github-dashboard.jpg -------------------------------------------------------------------------------- /images/posts/vim-help-pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-help-pdf.png -------------------------------------------------------------------------------- /images/posts/vim-include-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-include-search.png -------------------------------------------------------------------------------- /images/posts/vim-ios-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-ios-1.png -------------------------------------------------------------------------------- /images/posts/vim-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-ios.png -------------------------------------------------------------------------------- /images/posts/vim-mobile-cheat-sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-mobile-cheat-sheet.png -------------------------------------------------------------------------------- /images/posts/vim-old-skool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-old-skool.png -------------------------------------------------------------------------------- /images/posts/vim-pomodoro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-pomodoro.png -------------------------------------------------------------------------------- /images/posts/vim-shortcut-stickers-530.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-shortcut-stickers-530.jpg -------------------------------------------------------------------------------- /images/posts/vim-stringify.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-stringify.gif -------------------------------------------------------------------------------- /images/posts/vim-webdevicons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-webdevicons.png -------------------------------------------------------------------------------- /images/posts/vim-windows-test-unit-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-windows-test-unit-test.png -------------------------------------------------------------------------------- /images/posts/vim-xxd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim-xxd.png -------------------------------------------------------------------------------- /images/posts/vim101-arglist-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-arglist-1.png -------------------------------------------------------------------------------- /images/posts/vim101-arglist-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-arglist-2.png -------------------------------------------------------------------------------- /images/posts/vim101-blockwise.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-blockwise.gif -------------------------------------------------------------------------------- /images/posts/vim101-blockwise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-blockwise.png -------------------------------------------------------------------------------- /images/posts/vim101-buffers-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-buffers-ball.png -------------------------------------------------------------------------------- /images/posts/vim101-buffers-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-buffers-list.png -------------------------------------------------------------------------------- /images/posts/vim101-cibracket.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-cibracket.gif -------------------------------------------------------------------------------- /images/posts/vim101-completion-ctrl-pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-completion-ctrl-pn.png -------------------------------------------------------------------------------- /images/posts/vim101-completion-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-completion-line.gif -------------------------------------------------------------------------------- /images/posts/vim101-completion-omni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-completion-omni.png -------------------------------------------------------------------------------- /images/posts/vim101-dot-repeat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-dot-repeat.gif -------------------------------------------------------------------------------- /images/posts/vim101-ed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-ed.png -------------------------------------------------------------------------------- /images/posts/vim101-help-tab-completion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-help-tab-completion.png -------------------------------------------------------------------------------- /images/posts/vim101-ptag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-ptag.gif -------------------------------------------------------------------------------- /images/posts/vim101-quickfix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-quickfix.png -------------------------------------------------------------------------------- /images/posts/vim101-registers-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-registers-1.png -------------------------------------------------------------------------------- /images/posts/vim101-replace-query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-replace-query.png -------------------------------------------------------------------------------- /images/posts/vim101-search-repeat-n.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-search-repeat-n.gif -------------------------------------------------------------------------------- /images/posts/vim101-selection-vo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-selection-vo.gif -------------------------------------------------------------------------------- /images/posts/vim101-selection.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-selection.gif -------------------------------------------------------------------------------- /images/posts/vim101-sub1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-sub1.png -------------------------------------------------------------------------------- /images/posts/vim101-sub2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-sub2.png -------------------------------------------------------------------------------- /images/posts/vim101-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-tabs.png -------------------------------------------------------------------------------- /images/posts/vim101-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-undo.png -------------------------------------------------------------------------------- /images/posts/vim101-virtualedit-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-virtualedit-1.png -------------------------------------------------------------------------------- /images/posts/vim101-virtualedit-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-virtualedit-2.png -------------------------------------------------------------------------------- /images/posts/vim101-visual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-visual.png -------------------------------------------------------------------------------- /images/posts/vim101-windows-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-windows-1.png -------------------------------------------------------------------------------- /images/posts/vim101-windows-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-windows-2.png -------------------------------------------------------------------------------- /images/posts/vim101-windows-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-windows-3.png -------------------------------------------------------------------------------- /images/posts/vim101-windows-nerdtree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-windows-nerdtree.png -------------------------------------------------------------------------------- /images/posts/vim101-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim101-windows.png -------------------------------------------------------------------------------- /images/posts/vim_C64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vim_C64.png -------------------------------------------------------------------------------- /images/posts/vimawesome-completion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimawesome-completion.gif -------------------------------------------------------------------------------- /images/posts/vimawesome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimawesome.png -------------------------------------------------------------------------------- /images/posts/vimconf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimconf.png -------------------------------------------------------------------------------- /images/posts/vimctagsjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimctagsjs.png -------------------------------------------------------------------------------- /images/posts/vimdeck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimdeck.png -------------------------------------------------------------------------------- /images/posts/vimdiff-xxd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimdiff-xxd.png -------------------------------------------------------------------------------- /images/posts/vimdiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimdiff.png -------------------------------------------------------------------------------- /images/posts/vimexperimental.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimexperimental.png -------------------------------------------------------------------------------- /images/posts/vimgenius-ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimgenius-ad.png -------------------------------------------------------------------------------- /images/posts/vimgenius-exercise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimgenius-exercise.png -------------------------------------------------------------------------------- /images/posts/vimgenius-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimgenius-start.png -------------------------------------------------------------------------------- /images/posts/vimkeycap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimkeycap.png -------------------------------------------------------------------------------- /images/posts/vimposter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimposter.png -------------------------------------------------------------------------------- /images/posts/vimprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimprint.png -------------------------------------------------------------------------------- /images/posts/vimr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimr.png -------------------------------------------------------------------------------- /images/posts/vimrc-folding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimrc-folding.png -------------------------------------------------------------------------------- /images/posts/vimrcfolding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimrcfolding.png -------------------------------------------------------------------------------- /images/posts/vimrcfu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimrcfu.png -------------------------------------------------------------------------------- /images/posts/vimroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimroom.png -------------------------------------------------------------------------------- /images/posts/vimrscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimrscreen.png -------------------------------------------------------------------------------- /images/posts/vimstarwars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimstarwars.png -------------------------------------------------------------------------------- /images/posts/vimstickers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimstickers.png -------------------------------------------------------------------------------- /images/posts/vimtouchandroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimtouchandroid.png -------------------------------------------------------------------------------- /images/posts/vimtronner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimtronner.gif -------------------------------------------------------------------------------- /images/posts/vimulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vimulator.png -------------------------------------------------------------------------------- /images/posts/vison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vison.png -------------------------------------------------------------------------------- /images/posts/visual-increment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/visual-increment.gif -------------------------------------------------------------------------------- /images/posts/vivify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vivify.png -------------------------------------------------------------------------------- /images/posts/vmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vmark.png -------------------------------------------------------------------------------- /images/posts/vopher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vopher.png -------------------------------------------------------------------------------- /images/posts/vsvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/vsvim.png -------------------------------------------------------------------------------- /images/posts/wasdkeyboards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/wasdkeyboards.png -------------------------------------------------------------------------------- /images/posts/windows-horiz-horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/windows-horiz-horiz.png -------------------------------------------------------------------------------- /images/posts/windows-horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/windows-horiz.png -------------------------------------------------------------------------------- /images/posts/windows-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/windows-tab.png -------------------------------------------------------------------------------- /images/posts/windows-vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/windows-vert.png -------------------------------------------------------------------------------- /images/posts/windows8vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/windows8vim.png -------------------------------------------------------------------------------- /images/posts/wordstoavoid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/wordstoavoid.png -------------------------------------------------------------------------------- /images/posts/yosemite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/posts/yosemite.png -------------------------------------------------------------------------------- /images/twitter/YukaYoung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/twitter/YukaYoung.png -------------------------------------------------------------------------------- /images/twitter/alex_young.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/usevim/7cdff5fbdcec0a0873bb903b41e21715feddcae7/images/twitter/alex_young.png -------------------------------------------------------------------------------- /index.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Usevim 4 | paginate: true 5 | --- 6 | 7 | !{paginatedPosts()} 8 | !{paginate} 9 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-apollo.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/, 2 | null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-basic.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun", 3 | /^.[^\s\w"$%.]*/,a]]),["basic","cbm"]); 4 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//], 2 | ["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-dart.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i], 2 | ["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]), 3 | ["dart"]); 4 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-erlang.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/], 2 | ["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-go.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]); 2 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-hs.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/, 2 | null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-lisp.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a], 3 | ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]); 4 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-llvm.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]); 2 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-lua.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i], 2 | ["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-ml.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], 2 | ["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-mumps.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i, 2 | null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-pascal.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a], 3 | ["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]); 4 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-proto.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]); 2 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-r.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/], 2 | ["pun",/^(?:<>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-rd.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]); 2 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-scala.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], 2 | ["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-tcl.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit", 3 | /^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]); 4 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-tex.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]); 2 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-wiki.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]); 2 | PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/lang-yaml.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]); 3 | -------------------------------------------------------------------------------- /javascripts/pretty/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | -------------------------------------------------------------------------------- /screenshots.txt: -------------------------------------------------------------------------------- 1 | 70x20 2 | 3 | -------------------------------------------------------------------------------- /tags.jade: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | h1 Tags 6 | 7 | p Click a tag to view the associated posts. 8 | 9 | .tag-list 10 | - var tags = allTags(); 11 | - if (tags && tags.length > 0) 12 | - for (var i = 0, tag = tags[0], posts = postsForTag(tag); i < tags.length; i++, tag = tags[i], posts = postsForTag(tag)) 13 | h2(id=tag) 14 | a.tag(href="#") (#{posts.length}) #{tag} 15 | .posts 16 | - for (var j = 0, post = posts[j]; j < posts.length; j++, post = posts[j]) 17 | p 18 | a(href="#{post.url}") #{post.title} 19 | --------------------------------------------------------------------------------