HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
lunixbochs
ActualVim
Python2013–2020
lunixbochs / ActualVim

ActualVim

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

11Distinct people
17Mentions
0Explicit recommenders
1.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

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

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year17 dated mentions

Observed mentions: 2013-10-24 07:51:45 UTC to 2020-08-05 21:10:01 UTC.

02462013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC422
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC000
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC716
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101

What Hacker News says

17 sources
I'd also recommend Neovim[0], a community-led fork of Vim. One of the focuses of Neovim is exposing an API that lets other apps embed a headless instance in their UIs. This lets you use your Neovim editor along with all its configuration and plugins inside other apps! I've never been satisfied with any of the available vim emulator plugins out there for VSCode, IntelliJ, etc. (there's always something missing!), so this feature has been really valuable to me if I need a better debugging experience but want to use nvim as much as possible. Someone's already made plugins that embed a Neovim instance right inside VSCode[1] and Sublime Text[2]. There's no emulation here, just straight up neovim running behind those buffers. I've tried VSCode with that plugin (though personally I like to stick to just neovim when I can), and I can say that de
Read the rest
spite some minor bugs it's been a pretty smooth experience. Even stuff like `gt` to change editor tabs is supported. [0]: https://neovim.io/ [1]: https://github.com/asvetliakov/vscode-neovim [2]: https://github.com/lunixbochs/actualvim
In Why Should You Learn Vim in 2020
https://github.com/JetBrains/ideavim for any readers interested. It IS much better than when I tried it. It parses your vimrc with and matches simple patterns to support the subset of features it does support but it doesn't really have an interpreter although one was discussed https://youtrack.jetbrains.com/issue/VIM-669 Which means no plugins for example or complex viml. Presumably this would simply be ignored not broken. Another approach for a different environment that seems more interesting https://github.com/lunixbochs/ActualVim I don't use sublime so I can't report on how optimal it is the idea of using an embedded vim instance is certainly interesting.
In History and Effective Use of Vim
Not snippets/completion, very specifically "[Sublime's] Auto-popups while typing". This is due to the way I intercept Sublime's input. Vim's snippets/completion work fine, and Sublime's work fine if you invoke them in another way. See https://github.com/lunixbochs/actualvim/issues/97 for the planned fix. Of the main caveats: - No multiple cursors is due to lack of support in neovim, it's blocked on either neovim implementing them or me emulating them - No "Auto-popups while typing" is due to a limitation in Sublime's input system, which I plan to work around if they don't provide another first-party solution. - Undo coalescing isn't a major issue unless you switch modes repeatedly, because Vim's undo works fine. - Surfacing more of Vim's UI is slowly happening as neovim adds more UI APIs. - "Extremely large files" is fixed in master for n
Read the rest
vim->Sublime buffer changes with neovim 0.3's change deltas. It's not completely fixed for Sublime->nvim buffer changes (like if you run a host plugin or click a Sublime UI element), because Sublime has no delta system. #97 plus a C diffing library would sort that out, as would Sublime adding a change delta API.
In Neovim 0.3 released
ActualVim (a plugin for Sublime Text 3) implemented support for the Nvim 0.3 "buffer updates" feature in less than 24 hours: https://github.com/lunixbochs/ActualVim/commit/414e8d4c3feb4... Oni[1] is also expected to use the feature soon. Other features worth noting are - <Cmd> key https://github.com/neovim/neovim/pull/4419 - stdpath() function https://github.com/neovim/neovim/pull/6272 https://github.com/neovim/neovim/pull/7679 and https://github.com/neovim/neovim/pull/8226 are small but nice quality-of-life improvements. There's also many new API features and defaults tweaks listed in the release notes. Oh, and a built-in AST-producing VimL expression parser: https://github.com/neovim/neovim/pull/7234 That's a big one. [1] https://github.com/onivim/oni
In Neovim 0.3 released
https://github.com/lunixbochs/actualvim It's not just "literally use Neovim as the editing engine", I've tried to make editing the text in "Sublime Mode" work too, including running Sublime plugins. Work in progress, but afaik the most complete Vim integration for an existing editor. Waiting on updates to both Neovim and Sublime Text to polish it a bit more. VSCodeVim is using it as a reference for some of their new work as well.
In Neovim v0.2.1 released
https://github.com/lunixbochs/ActualVim gives you neovim inside Sublime Text, altho I haven't tried it. I couldn't stand IdeaVim, the one for the Jetbrains IntelliJ platform - felt very buggy. Such as when you open a modal and it remains in Normal mode so you can't enter text. Currently using https://github.com/VSCodeVim/Vim when using VSCode which is better but still got some rough edges. Despite a fair bit of use and study - mostly using neovim - I feel that I haven't got as much from vim as I'd expected or hoped. Switching from Normal to Insert mode - even when you get good at the one-time Normal mode commands - doesn't always elegant. There's all sorts of configurations and plugins that try to plug the gaps, but it's such a huge effort to assemble them all. For example, just installed https://github.com/terryma/vim-multiple-cursors to
Read the rest
day to attempt get the elegant multiple selection of modern text editors.
In Why I like Vim so much [video]
I have a few semi-active projects that could use some love. I'm struggling with RSI right now and have way more creative energy than I can channel, so I'd also be interested in pair programming on my projects via video or in person (Bay Area). All of these projects are MIT-licensed, and I'm pretty good about filing GitHub issues for things that need to happen. Email/Twitter in profile. - - - Usercorn - https://github.com/lunixbochs/usercorn Skills: Go, C, Syscall ABI Usercorn is a sort of debugging tool, kernel API emulator, and CPU emulator (powered by Unicorn Engine) rolled into one. It's hard to simply explain the vision but it can do things like run a MIPS Linux binary on x86_64 OS X (kinda like a more powerful qemu-user). Plenty of GitHub issues here, but the main work needed right now: Fixing up bugs related to glibc, dyld, and othe
Read the rest
r runtimes. x86_64 Linux is the best supported loader right now, so the rest could use some love. There's progress being made on OS X / iOS + dyld startup right now. Support for issuing signals to the guest CPU (need a signal handler table on a process's kernel structure, a syscall handler for `signal` and `sigaction`, and code that can jump the guest CPU into a signal handler and do a `sigreturn`) More syscall emulation (~50/350 syscalls are implemented for Linux and OS X), but it's pretty easy to add new ones. Support for guest threading and fork/clone (these will likely need a virtual process/thread table, then each thread/process can run on a Goroutine and take advantage of Go's existing scheduler). Virtual filesystem layer, so syscalls like open/read/write don't go directly to the host OS and can be intercepted/overlaid in a more general sense. - - - lib43 - https://github.com/lunixbochs/lib43 Skills: C, ASM, Syscall ABI Yet another libc, created as a result of this blog post: http://ryanhileman.info/posts/lib43 - mostly just has string, memory, number, and basic IO functions right now. Ways to contribute: Pick a man page for any missing libc function and implement it in a simple/readable manner, or dive into an architecture syscall ABI (like ARM/NetBSD) and write the assembly backend for it. https://github.com/lunixbochs/lib43 - - - glshim - https://github.com/lunixbochs/glshim Skills: C, OpenGL This provides desktop OpenGL ~1.5 sans shaders to any mobile device implementing OpenGL ES 1.0. It has been used to port dozens of open and closed-source games to the Pandora and other mobile platforms. It was also used for the Android real-Minecraft launcher (called Boardwalk I think). Current goals include testing/improving the remote rendering (which allows software like emulators to easily serialize and remotely render OpenGL), increasing compatibility (testing games + filing/fixing issues on GitHub), adding WINE support (will be a trial/error process of running WINE, debugging/fixing the thing that prevents initialization, repeat), and writing more feature tests (which are actually pretty easy. You write a simple program to make OpenGL calls and assert which OpenGL ES calls should be emitted from the other end). - - - patchkit - https://github.com/lunixbochs/patchkit Skills: Python, C, ASM This project allows you to reproducibly patch compiled binaries with one or more short Python scripts. It includes an assembler (Keystone), disassembler (Capstone), basic linker, basic static recompilation/code transformation engine, control flow graph, and C compiler integrations... all in about 700 lines of Python. It was mostly created for use in attack-defense Capture The Flag competitions. These are both working patches: def patch(pt): pt.patch(0x800400a, asm='mov eax, 1') def patch(pt): pt.patch(pt.entry, c='void f() { printf("hi\n"); }') It mainly needs glue code written for more architectures, support for PE/MachO formats, and improvements to the C compiler/linker. The provided symbols are mostly specific to Darpa's DECREE environment, so support should be added for yanking/calling symbols from the binary itself as well as integrating something like lib43 to provide a basic libc and syscall support on many platforms. - - - ActualVim - https://github.com/lunixbochs/actualvim Skills: Python This project is a massive hack to sneakily jam a Vim instance into a Sublime Text buffer. This gives you surprisingly good Vim keybinding support, and even works with your Vim plugins, but it totally breaks Sublime Text plugins and commands (as text changes won't be propagated back to Vim). As a result, the project is mostly a joke right now (just a pretty UI around Vim that breaks most interactive Vim plugins). I do think NeoVim is mature enough to take this the rest of the way into being a serious project, and there's a fair bit of interest. The Sublime Text side of the interface works very well, so the main tasks here would be (1) swapping out Vim for NeoVim (which I seem to remember having a very simple remote control API), and a (2) handler to propagate text changes back from Sublime plugins into the NeoVim buffer.
In Ask HN: Who needs contributors? (October 2016)

Showing the 15 most recent of 17 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.