Giter VIP home page Giter VIP logo

qvacua / vimr Goto Github PK

View Code? Open in Web Editor NEW
6.6K 118.0 214.0 35.77 MB

VimR — Neovim GUI for macOS in Swift

Home Page: https://twitter.com/VimRefined

License: MIT License

Objective-C 0.44% Swift 90.84% Shell 2.20% Python 2.21% CSS 2.65% HTML 0.65% Ruby 0.02% Rich Text Format 0.51% Vim Script 0.28% Groovy 0.19%
neovim neovim-guis vim macos swift objective-c neovim-clients cocoa neovim-experience

vimr's Introduction

VimR — Neovim GUI for macOS

DownloadDocumentation

Screenshot 1 Screenshot 2

About

Project VimR is a Neovim GUI for macOS written in Swift.

The goal is to build an editor that uses Neovim inside with many of the convenience GUI features similar to those present in modern editors. We mainly use Swift, but also use C/Objective-C when where appropriate.

There are other Neovim GUIs for macOS, see the list, so why?

  • Play around with Neovim,
  • play around with Swift (and especially with RxSwift),
  • Play around with the main idea of Redux architecture, and
  • (most importantly) have fun!

If you feel chatty, there is a chat room: https://matrix.to/#/#vimr:matrix.org

If you want to support VimR financially, use Github's Sponsor.

Download

Pre-built Universal signed and notarized binaries can be found under Releases.

Reusable Components

  • RxMsgpackRpc: Implementation of MsgpackRpc using RxSwift.
  • RxNeovimApi: RxSwift wrapper of Neovim API.
  • NvimView: SwiftPM module containing an NSView which bundles everything, e.g., Neovim binary and its runtime-files, needed to embed Neovim in a Cocoa App.

Some Features

  • Markdown preview
  • Generic HTML preview (retains the scroll position when reloading)
  • Fuzzy file finder a la Xcode's "Open Quickly..."
  • Trackpad support: Pinching for zooming and two-finger scrolling.
  • Ligatures: Turned off by default. Turn it on in the Preferences.
  • Command line tool.
  • (Simple) File browser
  • Flexible workspace model a la JetBrain's IDEs

How to Build

Clone this repository. Install homebrew, then in the project root:

git submodule init
git submodule update

xcode-select --install # install the Xcode command line tools, if you haven't already
brew bundle

clean=true notarize=false ./bin/build_vimr.sh
# VimR.app will be placed in ./build/Build/Products/Release/

Development

See DEVELOP.md.

License

MIT

vimr's People

Contributors

apaleslimghost avatar cosmojg avatar cypheon avatar edgarcosta avatar edgej avatar ernstwi avatar fujimura avatar georgealbert avatar georgeharker avatar greg avatar hwartig avatar imajes avatar imkerberos avatar jaanauati avatar jasonm avatar josa42 avatar laibulle avatar mkhl avatar musically-ut avatar nclark avatar qvacua avatar rainux avatar rluba avatar solawing avatar stephengroat avatar tkonolige avatar tstromberg avatar tsung-ju avatar xiehuc avatar zaius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vimr's Issues

New Icon

I made a vector version of the vim logo a while back. I proposed to MacVim that they use it but they didn't seem interested. I since it was vector, it is easy to modify. So I made a blue version. I have been using it for VimR since I first downloaded it.

vim

Here is the .icns file incase you want to use it.

Thanks for the app. It is very cool!

Keyboard mappings(or Vim-like defaults) for file explorer.

I really like how the quickopen has ctrl+p/n to move up and down the results. That's consistent with Mac OS (try searching for a file in finder - ctrlp/n moves up and down the results). But it would be nice to use keymappings in the file explorer that resemble vim (and maybe a bit of NERDTree influence).

  • j/k to move up and down the file tree.
  • l (or o) to open a directory.
  • <cr> to open a file (not a directory). (Same modifier scheme as quick open perhaps).
  • Some shortcut to shift focus. between the editor and the file explorer.

I'm sure you'd love to allow customization of the keymappings, but some reasonable defaults would make the file explorer ready for serious use in day-day work until keyboard mappings are implemented.

Shift+Space keymappings not respected.

I tried my .vimrc setup which has normal and normal<Shift+Space> mapped to tabn/tabprev respectively. It seems shift+Space doesn't work in VimR.

(Admittedly low priority).

Neovim

Hi,

I really like the idea behind vimr. I was wondering if it wouldn't be easier to play with neovim and create an UI on top of it, rather than fiddling with MacVim.

I'm not an expert, so I don't know if this is feasible/convenient. What do you think?

Open/Closing the sidebar and toggling status bar resize VimR's window

I accidentally find this bug, when I was opening/closing multiple times in a row the sidebar.
In the beginning the windows is some pixel smaller but after the windows' size is divided by 2.

Ok, not a bug bug as I don't often show/hide the sidebar, but worth tell you I guess.

Vimr may not be cleaning up processes.

I noticed that Vimr may be leaving behind processes after quitting. I opened up several tabs via the Quick Open and then when cmd+qing the app, something from Vimr was getting left behind.

Consider scripting environment for UI system.

This is just something longer term to consider, to keep in mind.

There's some good options for allowing configurability of the windowing environment. That means people can script their own plugins to script the UI that don't do a lot of interaction with the main editing view. (The main editing view will likely need to be a different scripting/plugin API/paradigm for the foreseeable future until NeoVim is done).

  • Clojurescript
    -- Pros: There already exists a clojurescript to VimL compiler so you could write the same language for regular vim plugins and VimR UI plugins.
    -- Cons: Not as popular as JS.
  • JavaScript
    -- Pros: Easy to embed. Supported on Mac OS out of the box. Everyone knows it at least a little bit. Hugely popular language.
    -- Cons: Different language than scripts written for standard Vim plugins. (But someone could make a JS -> VimL compiler much like we have for clojurescript).

The upside of having an entirely different scripting environment for window/UI management is that it's so much easier to start from scratch and the tasks are usually pretty separate from the core editing experience. The downside is that it's removed from the standard Vim scripting environment so orchestrating between the two will be tougher - maybe a blessing in disguise though.

configure complains about lack of curses library.

checking for tgetent in -lcurses... no
no terminal library found
checking for tgetent()... configure: error: NOT FOUND!
      You need to install a terminal library; for example ncurses.
      Or specify the name of the library with --with-tlib.

Discuss: Consider using existing code for left nav/find window.

The Vico project is a really, really excellent editor. There's so many good things to say about it (awesome scripting language, beautiful dialogs/navigation, truly faithful Vim mode) - those engineers are awesome for doing what they did. Vimr's approach is to allow you to use all of the same Vim plugins/colors/integrations that you already have, but has the goal of adding a beautiful experience on top of it. Would you consider repurposing some of Vico's UI elements for the left nav and project find? I think they're spectacularly done (serious compliments to the developers who built and maintain it). There's a ton of code in there for configuring the keyboard mappings for UI elements which is done in an obscure language (but a good language) so I don't know how much of that could be reused, but at least a lot of the code for fetching files and displaying them/searching them could be used.

Thoughts?

Full Screen.

I really like MacVim's fullscreen support. Can we still achieve it while using MacVim framework? It's great how MacVim lets you bypass Mac OS X's extremely long full screen animation. How could anyone get work done while waiting that long for an animation!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.