• Stars
    star
    1,562
  • Rank 29,758 (Top 0.6 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 11 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sublime Text 3 input mode using Neovim. Issues are closed, feel free to submit Pull Requests if you have bug fixes however.

ActualVim

Everything you like about using Sublime Text 3, and everything you like about typing in vim.

Actual uses an embedded Neovim instance to accurately manipulate each Sublime Text buffer as though you were editing the text directly in vim, while the Sublime Text interface, features, and plugins continue to work (see end of README for caveats).

This isn't a remote terminal UI like gvim and other vim frontends. Text modification and selections are bidirectionally synced into the actual Sublime Text UI.

Why?

Sublime looks way better than your terminal and has a rich plugin ecosystem.

Other Sublime vim emulation plugins, including the built-in Vintage, are only rough approximations of the functionality of vim itself. They are missing features or behave differently than the real thing.

With ActualVim, you can use your own vimrc, plugins, and any real vim motions/commands, because it is vim behind the scenes, and bidirectional sync means Sublime Text and the native OS interface still works too.

Usage

This plugin requires Neovim to be installed, but should otherwise work on all Sublime Text 3 platforms (tested primarily on Windows and macOS). Please use at least Neovim 0.2.2, but Neovim 0.3 or newer is highly recommended.

Clone ActualVim to the path found in Preferences -> Browse Packages... or sublime.packages_path(). Usually found here:

  • macOS: ~/Library/Application Support/Sublime Text 3/Packages/
  • Linux: ~/.config/sublime-text-3/Packages/
  • Windows: %APPDATA%/Sublime Text 3/Packages/

You can set the Neovim path by opening Preferences: ActualVim Settings using the command palette (cmd+shift+p or ctrl+shift+p) or via Preferences -> Package Settings -> ActualVim Settings.

ActualVim launches a single Neovim embedded instance and multiplexes each Sublime view into a separate buffer.

If the plugin doesn't work (a horizontal underline cursor appears when ActualVim kicks in), check the Sublime Text console for errors and make sure you set the Neovim path. Barring that, file an issue.

Misc

On OS X 10.7+, you should do defaults write com.sublimetext.3 ApplePressAndHoldEnabled -bool false to enable key repeat.

You can run ActualVim: Disable or ActualVim: Enable via the command pallete to toggle the input mode without losing vim state.

Caveats

Currently broken Sublime Features:

  • Multiple Selection (#8).
  • Auto-popups while typing, like completion (#57) and snippet suggestions (#94).
  • Sublime's undo isn't coalesced properly while in vim mode (it's one character at a time: #44).

Surfacing vim's UI (like the status bar) still needs some love, but I have some good ideas for making it look beautiful (better than your terminal) using Sublime's embedded HTML Phantom views.

Extremely large files will see a performance hit until neovim supports change deltas. The large_file_disable command mitigates this by disabling ActualVim for larger files (with configurable cutoff).

More Repositories

1

usercorn

dynamic binary analysis via platform emulation
Go
876
star
2

patchkit

binary patching from Python
C
626
star
3

struc

Better binary packing for Go
Go
560
star
4

SublimeXiki

Xiki in Sublime Text
Python
512
star
5

sublimelint

Error highlighting in Sublime Text.
Python
250
star
6

glshim

OpenGL 1.x driver shim for OpenGL ES devices.
C
153
star
7

vtclean

strips terminal escapes from text, can preserve color
Go
105
star
8

revsync

realtime cross-tool collaborative reverse engineering
Python
100
star
9

lib43

portable libc optimized for code size and readability
C
80
star
10

tinygles

Software-rendered OpenGL ES
C
76
star
11

reslate

A solid backbone for your `.slate.js.`
JavaScript
66
star
12

mpwn

single file ctf/exploit client library - python3, type annotated
Python
66
star
13

og

Language and tool enhancements for Go
Go
51
star
14

feeds

transcribe audio feeds into public web ui
Python
41
star
15

meta

code sometimes leaks into the space between projects
Python
41
star
16

pingbin

service to check internet accessibility
Go
41
star
17

pitybas

a faithful TI-BASIC implementation
Python
33
star
18

glues

fork of http://code.google.com/p/glues/
C++
26
star
19

go-keychain

Simple OS keychain bindings for password storage in Go (Golang)
Go
26
star
20

bnrepl

Run your Binary Ninja Python console in a separate Terminal window.
Python
18
star
21

sublimevim

a (deprecated) WIP vim input plugin for Sublime Text 2
Python
17
star
22

lorcon

Fork of https://code.google.com/p/lorcon/
C
14
star
23

community

Talon Community Repo (New API)
Python
14
star
24

ghostrace

Golang syscall firehose (programmatic strace/dtruss)
C
13
star
25

n64-saleae-logic

N64 controller protocol analyzer
C++
13
star
26

precorn

[WIP] pivot a running process into an emulator for instrumentation
C
13
star
27

capstr

(fast) Capstone Go bindings
Go
12
star
28

crossldso

link a linux ELF .so library into memory with python and call functions in it, even if you're not on linux
Python
10
star
29

microlathe

LockIT Pro JTAG proxy + GDB stub
Python
9
star
30

project-euler

Project Euler polyglot
Prolog
8
star
31

uberserver

matchmaking/chat lobby server for the spring rts project
Python
8
star
32

orca

Shell
7
star
33

inscount

stable instruction counter based on qemu-user (--target-list=i386-linux-user,x86_64-linux-user)
C
7
star
34

EnableWebGL

A tweak to enable WebGL on iOS
Logos
6
star
35

sublime-syntaxget

A faster way to change Syntax highlighting modes in Sublime Text 2
Python
6
star
36

localdns

serves DNS for observed DHCP leases
Go
6
star
37

voicecode-commando

voicecode command cheat sheet
HTML
5
star
38

subasm

subleq assembler / interpreter / rop chain
Python
5
star
39

fs-uae-gles

A GL ES port of FS-UAE
C++
4
star
40

linters

default linters for sublimelint
Python
4
star
41

smolcc

C
4
star
42

unicorn-tools

4
star
43

AppleScripting

Sublime Text 3 package for editing and running AppleScript
Python
4
star
44

pynamed

No-nonsense DNS server stub in Python using twisted.names
Python
4
star
45

argjoy

Golang method invocation with arg codecs and optional args
Go
4
star
46

talon_wm

Window management in Talon
Python
3
star
47

binutils-wasm

binutils compiled to wasm with every single target
Shell
3
star
48

pyadc

WIP: basic ADC client daemon in Python
Python
3
star
49

tftpd-cgi

A simple TFTP server capable of serving CGI scripts.
Python
3
star
50

go-clip

Clipboard bindings for Golang (without shelling out)
Go
3
star
51

preload-hooks

LD_PRELOAD framework
C
3
star
52

luaish

Go
2
star
53

libgpu

basic software rasterizer
C
2
star
54

vaporbat

Python Steam client
Python
2
star
55

maze

maze generator (eventually solver? was going to be an experiment in parallel maze solving)
Go
2
star
56

tactis

TIS-100 emulator / library
C
2
star
57

pypyninja

pypy interpreter shim for Binary Ninja
C
2
star
58

idascript

Python
2
star
59

uberspring

Python client/server for the Spring RTS network protocol
Python
2
star
60

pytiger

pytiger mirror, with various fixes for pyadc
C
2
star
61

webster

https://bochs.info/webster/ - interface to webster 1913 unabridged
HTML
2
star
62

qemu-2.5-unicorn

C
1
star
63

railsync

Go
1
star
64

location-sentry

Tweak to show GPS-using apps on iOS
Objective-C
1
star
65

minorgems-gles

minorGems plus OpenGL ES, OpenPandora compatibility
C++
1
star
66

ids

Python
1
star
67

bearfield

A small, efficient, easy to use MongoDB object layer.
Python
1
star
68

ti-omap5-sgx-ddk-linux

C
1
star
69

LockButton

menubar icon to lock your mac
Objective-C
1
star