Skip to content
This repository has been archived by the owner on Oct 21, 2022. It is now read-only.

LightTable/Vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
whitesource-bolt-for-github[bot]
Feb 11, 2019
62104fc · Feb 11, 2019

History

60 Commits
Feb 16, 2017
Feb 11, 2019
Jan 31, 2016
Nov 28, 2014
Nov 8, 2014
Jan 31, 2016
Jan 31, 2016
Jan 31, 2016
Jan 31, 2016
Oct 14, 2014
Jan 31, 2016
Jan 31, 2016
Jan 31, 2016

Repository files navigation

Vim for Light Table

A thin wrapper around CodeMirror's vim mode that integrates it into Light Table.

For additional Vim-like functionality, see the guide for Vim Users.

Setup

Install the Vim plugin using the Plugin Manager. Vim keybindings only take effect on new files. Existing files will need to be reopened.

Mapping Keys

To map keys to normal mode, place them in a keymap under a :editor.keys.vim.normal.cm or :editor.keys.vim.normal tag. These tags differ in what key combos are available, how keys are referred to and what they can map to. :editor.keys.vim.normal is for standard LightTable keybindings that support standard modifier-key combos e.g. ctrl-Y and map to LightTable command(s). Do not use this tag to map individual keys, remap keys to other keys or bind to non-standard key combos e.g. <Space>ob.

:editor.keys.vim.normal.cm is a tag that bypasses LightTable's normal keyhandling and interacts directly with the Vim CodeMirror plugin. This allows for the following more powerful but non-standard behavior:

  • Key combinations are not limited to modifier keys e.g. <Space>ob or jkl
  • Keys can be mapped to a string of keys or the standard LightTable command(s)
  • An individual key can be a keybinding
  • Special keys and modifier keys are referred to differently than in standard LightTable keybindings. For example, down is <down> and Ctrl-x is <C-x>. See the Vim CodeMirror keymap for more examples.

Some examples of these two tags:

;; Map a standard key combo to a command
[:editor.keys.vim.normal "alt-q" :lt.plugins.reflow/reflow]

;; Map an individual key to a LightTable command
[:editor.keys.vim.normal.cm ":" :vim.ex]

;; Remap a key to a sequence of keys
[:editor.keys.vim.normal.cm "j" "gj"]

For a thorough example of :editor.keys.vim.normal.cm, see this config.

To map keys to visual mode, place them in a keymap under a :editor.keys.vim.visual.cm or :editor.keys.vim.visual tag. These have the same behavior as their respective normal tags: :editor.keys.vim.visual.cm supports powerful but non-standard keybindings while :editor.keys.vim.visual supports standard LightTable keybindings.

Our current vim mode version does not support mapping to other modes at this time.

For Committers

Upgrade vim.js with the following where $VERSION is a version number tag:

curl https://raw.githubusercontent.com/codemirror/CodeMirror/$VERSION/keymap/vim.js > vim.js

vim.js is currently on CodeMirror version 4.6.0.

License

Copyright (C) 2013 Kodowa Inc.

Distributed under the MIT license, see license.md for the full text.