IVim - A vim port to iOS.

Overview

iVim

iVim is a project that brings the vim editor to the iOS system.

Type :help ios in iVim for more detailed information.

Features

Font management

Besides some system and embedded monospace fonts, iVim allows users to import and use their own custom fonts. Also, iVim provides commands for more intuitive and efficient font management.

Extended keyboard

By introducing compact buttons, iVim covers as many keys as possible in its extended keyboard, so that you can input symbols without switching among key groups. Moreover, you can customize it to meet your own special needs.

Multistage language input

iVim adds support to multistage input languages such as Chinese or Japanese.

Sharing

Through sharing, iVim makes its editing power available to more apps. Via the share extension, iVim can import text or text files from, or export to other apps. Via the document picker, you can also import or edit files or directories in iCloud Drive or documents providers, without leaving iVim.

External hardware keyboard

iVim supports external hardware keyboards well, just connect your favorite one to the device and start typing. With the native modifier keys mapping option from the system, you can even make the "caps lock" key act both as "ctrl" and "esc" in iOS 13.4 and above.

Auto restore

After an app termination, iVim restores the last editing session automatically on launch. So you don't have to worry about data losing any more. And you can disable it in Settings.app if you prefer the old way.

External commands

iVim includes some useful external commands that you are familiar with and integrates powerful scripting languages such as Python and Lua. With +terminal feature enabled and a simple shell named "ivish" included, you can run the commands in terminal windows like on a computer.

Plugins Management

iVim provides a plugins manager, "iplug", for you to install and manage plugins easily.

How to install it

App Store

iVim is now on App Store

Source code

  1. Open iVim.xcodeproj in Xcode
  2. In General > Identity of target iVim and iVimShare, change their bundle identities to your own unique ones, and select your Apple ID to sign them. As to the App Group, it requires a paid Apple ID. If yours is, change the App Group identifier for these two targets to your own; if not, just turn them off (the only difference is that you cannot share text to iVim when it is off)
  3. Connect your device via USB to your computer, and select it as the Destination of iVim
  4. Run iVim, Xcode will install it onto your device
  5. A free Apple ID may need to do this every 7 days
  6. Note that the source code may not be updated as the App Store version.

Quick tips

My .vimrc file was messed up, now iVim won't start. What can I do other than reinstall it?

You can go to iVim in the system's Settings app, put -u None into Arguments of LAUNCH OPTIONS section to tell iVim not to load config files next time. Then try and launch iVim.

Giants' shoulders

iVim was inspired by and based on 3 projects:

  1. vim - the official Vim repository
  2. Vim port from Applidium
  3. VimIOS - A port of Vim to iOS 9+

Without them, iVim wouldn't begin.

Also, without violating the copyright of Vim, feel free to make modifications to meet your own needs.

Comments
  • Cannot resize font

    Cannot resize font

    I have tried resizing the font (advanced age in combination with poor eyes) to larger than the standard 14 points but it does not change. Have tried both pinch-zoom and :ifont set but no luck

    opened by KlasO 48
  • Improve external keyboard support

    Improve external keyboard support

    Vim, of course, works best with a hardware keyboard. Mostly it works well, but special keys like <Ctrl> and <Esc> are not recognized properly.

    • <Esc> doesn't seem to work at all: I must use the software keyboard to enter this.
    • <Ctrl> seems to register (so that <C-a> is different from a), but <C-a> seems to do nothing. For example, if in normal mode I type <C-a> over a number, nothing happens, though typing just a does what's expected.

    I should add that I normally use the Dvorak layout on my external keyboard, but the problem remains if I switch back to the standard US keyboard. (Incidentally, one issue with other iOS apps with Dvorak keyboards is that entering codes ignores the Dvorak layout. For example, hitting the s key when in Dvorak layout will enter o, but holding down the Ctrl key while hitting the s key wrongly enters <C-s> when it should enter <C-o>.)

    opened by bwhelm 37
  • iplug quit when cloning

    iplug quit when cloning

    ✅ 45 plugin install with option -q test ❌ 45 plugins install without option test

    
    iplug add https://github.com/majutsushi/tagbar https://github.com/preservim/nerdtree https://github.com/SirVer/ultisnips https://github.com/itchyny/lightline.vim https://github.com/preservim/nerdcommenter https://github.com/ryanoasis/vim-devicons https://github.com/Yggdroot/indentLine https://github.com/jiangmiao/auto-pairs https://github.com/lervag/vimtex https://github.com/justinmk/vim-sneak https://github.com/tpope/vim-repeat https://github.com/ludovicchabant/vim-gutentags https://github.com/prabirshrestha/vim-lsp https://github.com/kana/vim-textobj-user https://github.com/honza/vim-snippets https://github.com/liuchengxu/vim-which-key https://github.com/justinmk/vim-dirvish https://github.com/wakatime/vim-wakatime https://github.com/mg979/vim-visual-multi https://github.com/liuchengxu/vista.vim https://github.com/liuchengxu/eleline.vim https://github.com/mhinz/vim-signify https://github.com/dense-analysis/ale https://github.com/Shougo/deoplete.nvim https://github.com/easymotion/vim-easymotion https://github.com/vimwiki/vimwiki https://github.com/junegunn/goyo.vim https://github.com/itchyny/calendar.vim https://github.com/Yggdroot/LeaderF https://github.com/rafi/awesome-vim-colorschemes https://github.com/skywind3000/asyncrun.vim https://github.com/ncm2/ncm2 https://github.com/Shougo/defx.nvim https://github.com/prabirshrestha/asyncomplete.vim https://github.com/andymass/vim-matchup https://github.com/vim-syntastic/syntastic https://github.com/tpope/vim-commentary https://github.com/python-mode/python-mode https://github.com/kana/vim-textobj-fold https://github.com/jceb/vim-orgmode https://github.com/idanarye/vim-vebugger https://github.com/sbdchd/neoformat https://github.com/mhinz/vim-startify https://github.com/tpope/vim-surround https://github.com/ctrlpvim/ctrlp.vim
    
    

    Quit when cloning,and iplug list say that I have 0 plugin installed. But I can see 28 folders in ~/.vim/pack/ivim/start Test :Goyo and the interface shows that plugin Goyo works. Wired.

    opened by suliveevil 31
  • Python Module:pynvim、Greenlet Support

    Python Module:pynvim、Greenlet Support

    I want to use Defx and it requires other two plugin and Python Module neovim whose dependencies are pynvim greenlet Is it possible to integrated these modules into iVim?

    opened by suliveevil 22
  • External Monitor support broken in iVim 2.29

    External Monitor support broken in iVim 2.29

    Hi,

    I have been using iVim on an iPad connected to an external monitor via a USB-C adapter.

    Expected behaviour: iVim is useable on an external monitor and appears the same way it appears on the iPad screen. This is how iVim behaved in version 2.28.

    Actual behaviour: The iPad displays iVim like it used to, but the external monitor now only displays the file browser. The file browser also cannot be interacted with via keyboard nor Bluetooth mouse.

    This is what I see on my iPad: IMG_1214

    This is what I see on my external monitor: IMG_1215

    Is it possible to restore the old method of handling an external monitor? Thank you!

    opened by aaronhktan 21
  • iVim 2.45 fails to start

    iVim 2.45 fails to start

    Hi there,

    First of all, thanks for making this wonderful port of VIM!

    Unfortunately, my installation of iVim broke down in version 2.45 (on iPadOS 15.2). The app does not even start saying invalid value ‘’ set to option 'guifont'. The current font 'Source Code Pro' is not changed.

    At first, I thought it could be my fault as there could be some options set in .vimrc by me. However, there is nothing related to fonts there. Also, running the app with -u NONE does not help. So I am not sure how to proceed.

    opened by alexeyignatiev 19
  • Decryption does not work anymore with new release (January 2021)

    Decryption does not work anymore with new release (January 2021)

    I just updated to the new release. I have some files that are encrypted on my icloud and I can't read them anymore.

    All the previous versions could decrypt correctly, but now it just appears as if I don't have the right password.

    Tried it with other files and still does not work. The files are not corrupted since I still can open it with the vi from my Mac with the right decrypting key.

    The new window to enter the decryption key is nice, if it could work ;-)

    Thanks Daniel

    opened by DanielMontreal 17
  • Set working directory using idoc?

    Set working directory using idoc?

    I’m using Working Copy, and can open files using idoc perfectly, but is it possible to set the working directory to a Working Copy repo base directory? I often need to jump between numerous files, and while I haven’t tried installing any plugins yet (I use ctrl+p on my laptop), being able to browse to files using :e rather than through the idoc UI all the time would be a huge timesaver.

    I am hesitant to import files to the iVim workspace as this will require exporting back to Working Copy in order to commit / sync / etc.

    opened by jhofmeyr 16
  • New version iVim 2.29 (5) broke opening an encrypted file

    New version iVim 2.29 (5) broke opening an encrypted file

    Since this new version, opening an encrypted file from iCloud-Drive does not show the encryption dialog, instead it opens an empty file in vim.

    The previous version was opening a dialog to ask for the password, then opened the file correctly decoded.

    Thanks!

    Daniel

    opened by DanielMontreal 15
  • New Feature to map Ctrl to Esc on Release

    New Feature to map Ctrl to Esc on Release

    This adds a new app setting to map ctrl to esc on release. That is if ctrl (either physical or mapped by iVim/iOS) is pressed and released without any other keys pressed, it'll act as an escape key.

    opened by voltprime-b 15
  • :help ios hangs, requires killing ivim

    :help ios hangs, requires killing ivim

    I've just installed Blink and, at their suggestion, iVim. My first action was to use :help ios to read the docs ...

    but scrolling down past the very first screen hangs iVim immediately requiring a force quit to recover.

    I'm on an iPad, ios 12.0 beta. It does not seem to happen on my iPhone X running 11.4.1

    opened by ctgreybeard 15
  • Hard to type slash and question mark, key to close to screen edge

    Hard to type slash and question mark, key to close to screen edge

    My iPhone case has a raised edge around the screen. This makes it difficult to type slash and question mark by swiping up and right or down and right, on the colon key (the right most key, above the ‘p’ key).

    A possible solution

    Currently there is about a two key gap in the middle.

    image

    One solution might be to remove the gap, and center the keys in the middle.

    image

    A one key gap on each side, seems like enough to make it a lot easier to type slash and question mark.

    opened by duianto 0
  • Markdown Preview

    Markdown Preview

    Hello,

    as I want to use Markdown for notetaking I also want to preview that Markdown. I know there is :ipreview but I think that looks ugly :) (No offense). Is there a possibility to either install another Markdown Parser or change the style the built in one has? Thanks again and have a nice day!

    opened by bencodes07 0
  • Cmd-Period no longer interpreted as <Esc> in iPadOS 16

    Cmd-Period no longer interpreted as in iPadOS 16

    After the iPadOS 16 upgrade, when Cmd-Period is pressed, iVim now interprets the keypress as <D-.> rather than <Esc>. The somewhat other more cross-platform convention of <C-]> continues to work fine.

    The workaround is to map <D-.> to <Esc>, which makes iVim work as it did yesterday. Weirdly, it seems that all over iPadOS 16, Cmd-Period works perfectly well as <Esc> just as it has for every Apple OS since 1984 so it doesn't seem like an intended change to the OS.

    opened by majick 6
  • Window height is incorrect after iPadOS 15.7 update

    Window height is incorrect after iPadOS 15.7 update

    iVim no longer uses the full height of the screen following an OS update. I do not use any of the on screen keyboard features, and keep it disabled at all times.

    A7AE4D56-5FB0-4551-8A73-6829FAC4FEA5

    opened by majick 1
  • Could access to iCloud Drive be built into iVim?

    Could access to iCloud Drive be built into iVim?

    That is my question. I have no idea how realistic it is.

    I know that other iOS apps have access to iCloud Drive. Certainly Apple’s Pages, Numbers, and Notes apps do. I believe many non-Apple apps do.

    I assume, perhaps naively, that the circumstances that make it possible for apps on Apple’s mobile devices to have access to iCloud Drive are related to those that made the :iexdir command possible.

    If so, could iVim come with access to iCloud Drive built in? Perhaps that would be inconsistent with vim philosophy. It would likely make iVim even more attractive as a vim editor for Apple mobile devices.

    opened by EricEWeir 0
Releases(v1.0)
Owner
Terry Chou
Terry Chou
A native Jellyfin client for Apple platforms (iOS, macOS and tvOS)

Jellyfin Swift (working title) is a native Swift app targeting all modern Apple devices (iOS, ipadOS, tvOS and macOS).

Julien Machiels 3 Jun 7, 2021
AppLove - View iOS app reviews in multiple selected territories with translation option.

App Love Note: Swift Version 2.2 currently, will update to Swift 3/XCode 8 after cocoapods are updated to Swift 3. Features View iOS Customer App Revi

Woodie Dovich 52 Nov 19, 2022
Awesome-ML - Discover, download, compile & launch different image processing & style transfer CoreML models on iOS.

⚠️ ⚠️ ⚠️ IMPORTANT: I'm no longer maintaining Awesome-ML. Awesome ML is an iOS app that is made to demonstrate different image processing CoreML model

eugene 171 Nov 8, 2022
BaseConverter-iOS - The fast and easy way to convert numbers with tons of possibilities!

BaseConverter-iOS The fast and easy way to convert numbers with tons of possibilities! With BaseConverter, convert your numbers from and to: Decimal B

Groupe MINASTE 3 Feb 8, 2022
Dash-iOS - Dash gives your iPad and iPhone instant offline access to 200+ API documentation sets

Discontinued Dash for iOS was discontinued. Please check out Dash for macOS instead. Dash for iOS Dash gives your iPad and iPhone instant offline acce

Bogdan Popescu 7.1k Dec 29, 2022
DevSwitch - An iOS app for switching between countries on the App Store with ease.

Archived as of 24/04/2021. Apple has again broken the URLs required for storefront switching. I've decided to archive DevSwitch due to this. If Apple

Aaron Pearce 432 Jan 3, 2023
IOS - Unofficial app for Swift Evolution

EVOlution - iOS The goal of this project is for the version 1.0 was: bring to iOS the experience provided by Swift Evolution website. Now we are shift

EVOlution App 235 Dec 19, 2022
A solid language pack for Vim.

A collection of language packs for Vim. One to rule them all, one to find them, one to bring them all and in the darkness bind them. It won't affect y

Adam Stankiewicz 5.2k Jan 2, 2023
XVim2 - Vim key-bindings for Xcode 9

XVim2 XVim2 is a Vim plugin for Xcode intending to offer a compelling Vim experience without the need to give up any Xcode features. Xcode 9 or above,

null 2.3k Jan 1, 2023
ImagePalette - Swift/iOS port of Android's Palette

ImagePalette - Swift/iOS port of Android's Palette

Shaun Harrison 54 Sep 23, 2022
Native iOS port of KDE Connect

Welcome to KDE Connect iOS 2021's Testing Repository! This project is inteded to be the iOS version of the group of applications called KDE Connect, w

KDE GitHub Mirror 292 Dec 27, 2022
iOS port from libphonenumber (Google's phone number handling library)

libPhoneNumber for iOS NBPhoneNumberUtil NBAsYouTypeFormatter ARC only Update Log https://github.com/iziz/libPhoneNumber-iOS/wiki/Update-Log Issue You

iziz 2.3k Jan 3, 2023
nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS.

nds4ios Supports iOS 6 to iOS 9. nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS. Currently, emulation is powered by a th

Kevin 162 Dec 25, 2022
iDOS - DOSBox port on iOS

dospad dosbox port for iOS, aka iDOS, based on dosbox v0.74-3 and SDL1.2. This is an all-in-one project, so the build process is just one simple click

Chaoji Li 494 Jan 3, 2023
iOS port of the Tachiyomi manga reader.

Tachiyomi iOS An iOS port of the popular Tachiyomi Manga Reader for Android. About the Project Hello fellow manga enthusiasts! For too long now Androi

Sakurasoft Ltd 70 Dec 22, 2022
A Swift port of the Cassowary linear constraint solver

Cassowary Swift A Swift port of the Cassowary linear constraints solver. Tested on OS X, iOS and Linux. Example usage let solver = Solver() let left

Tribal Worldwide London 110 Oct 18, 2022
This is a Swift port of Ruby's Faker library that generates fake data.

This is a Swift port of Ruby's Faker library that generates fake data. Are you still bothered with meaningless randomly character strings? Just relax

Vadym Markov 1.6k Jan 3, 2023
A Swift port of some of the original PersistentJXA projects by D00MFist

Persistent-Swift This repo is a Swift port of some of the original PersistentJXA projects by D00MFist (https://github.com/D00MFist/PersistentJXA). I p

Cedric Owens 25 Sep 27, 2022
A port of SwiftUILab's Advanced Animations that also supports macOS

SwiftUILab Advanced Animations on the Mac as well A port of SwiftUILab's Advanced Animations that also supports macOS Here's the Ghist of the original

Mihaela Mihaljevic Jakic 10 Jan 2, 2023
Swift port of AnyPic project

SwiftAnyPic Swift port of AnyPic project https://github.com/ParsePlatform/Anypic Requirements This application requires Xcode 7 and the iOS SDK v9.0.

null 90 Nov 23, 2022