■ DroidVim (Text Editor)

DroidVim is a Vim for Android.
Vim (Huge version), grep, diff and ctags are ready to use.
▼ Required - ARM (Android 4.1 and up), x86 (Android 4.3 and up)

■ Note:

How to quit:

  • Type ":qa" command
  • Use "Q" button on the function bar
  • Use "QUIT" on the navigation drawer

Direct/Normal input

By default it is set to "Direct input" (alphanumeric characters only) for normal mode commands. "Text input mode"

Vim tutorial:

Type ":Vimtutor".

■ Troubleshooting:

  • If Vim freezes, use "Close window" on the menu.
  • Depending on the filer or cloud storage application, it may be set to read only when opening the file via the "Share (or Open with)" menu.
       In that case, use the "Open file..." button or ask the filer or cloud storage developer.
  • "File manager" can be used from the drawer menu.
       However, for security reasons, you cannot copy a "dot file" such as Vimfiles (.vimrc or .vim) to the home directory. (Dot files contained in subdirectories will be copied without problems.)

Screen glitches

Using non-alphanumeric characters may cause screen glitches.
Vim and terminal can not handle "proportional fonts". Please use "monospaced fonts".
monospaced fonts
All character widths must be the same or double (fixed-width). For example, 'i' and 'W' must have the same character width.

■ Storage access

Vim has direct access to the Android file system.
Therefore, to edit files with Vim, it is necessary to understand the file system and security of Android.

App Private Storage
Android apps run in the sandbox. And there is storage that only the app can access.
   This storage can be handled in much the same way as a general Linux file system. The Home directory is in this area.
   Android 7 and later, you can use the "File Manager" button or the "Files" app to access to the App Private Storage.
Internal Storage
Storage that can be commonly accessed by Android apps.
   In most cases, Vim can access the internal storage directly with ":e /sdcard".
   Android 6 and later, permission is required for direct access.
   Android 11 and later, direct access is no longer possible for security reasons. The file must be accessed as "Open file... " button on the navigation drawer or use the "Files" app.
External Storage
External SD card, USB memory, various cloud storages.
   Edit the file via the cache because it is not directly accessible for security reasons.
   Start the file picker from the "Open file..." button on the navigation drawer. (Android 4.4 and up)
   Android 7 and later, you can use the "File Manager" button or the "Files" app to access to the App Private Storage.

For security reasons, DroidVim may create a cache file and edit the cache file when accessing external storages.
Access to this cache file remains valid even after exiting DroidVim, so it can be accessed with various MRU plug-ins.

Internal storage

Vim's netrw can access the internal storage (e.g. :e.). You can access the internal storage using $INTERNAL_STORAGE.
* There is a symbolic link in Home directory. (Android 10 and before)
* For Android 11 or later, it is "App Private Storage Area".

■ Vimfiles and Home directory

If you want to change Vim settings, create Vimfiles (.vimrc and .vim, :h vimrc) in the Home directory ($HOME).
You can also edit .vimrc with "Long press menu -> Edit .vimrc".
Vim loads your personal configuration files from the following directories under $HOME/.vim.
/autoload automatically loaded scripts :h autoload-functions    
/colors   color scheme files           :h colorscheme          
/doc       documentation                 :h write-local-help      
/ftplugin filetype plugins             :h write-filetype-plugin
/pack     packages                     :h packadd              
/plugin   plugin scripts               :h write-plugin          
/syntax   syntax files                 :h mysyntaxfile          
You can create directories and copy files with commands via Vim.
  1. :!mkdir -p $HOME/.vim/colors
  2. :!cp /path/to/your_colorscheme.vim $HOME/.vim/colors

There are several more convenient ways to copy files to DroidVim's home directory.

!!! WARNING !!!
Uninstalling the app will remove $HOME. Please backup regularly.

Symbolic link (Android 10 and earlier)

It is recommended to use Vimfiles created in the internal storage so that Vimfiles are not deleted during the uninstall.
If you created Vimfiles in the internal storage, create a symbolic link with the following commands via Vim.
  1. :!rm $HOME/.vimrc
       (Delete $HOME/.vimrc)
  2. :!ln -s /path/to/.vimrc $HOME/.vimrc
  3. :!rm -rf $HOME/.vim
       (Delete $HOME/.vim)
  4. :!ln -s /path/to/.vim $HOME/.vim
(You can use $INTERNAL_STORAGE to access the internal storage.)

File manager (Android 7 and later)

You can use "File Manager" button (Drawer menu) to copy the files.
You can also use a file manager app that supports Android Storage Access Framework.

!!! WARNING !!!
Uninstalling the app will remove $HOME. Please backup regularly.

File manager app

If you want to use a file manager app that does not support Android Storage Access Framework, change the Home directory to $APPEXTHOME.
You can find the path of $APPEXTHOME with executing :echo $APPEXTHOME via Vim.
Copy the plugins and color scheme files you need to $APPEXTHOME/.vim.

In Android 10 and earlier, it can be set to a directory in the internal storage, but it is recommended to create a symbolic link.

!!! WARNING !!!
  • You will not be able to change the attributes of files in the Home directory.
  • Uninstalling the app will remove $APPEXTHOME. Please backup regularly.


You can backup or restore the files in the home directory ($HOME) by using Backup/Restore command.
 "Drawer Menu > Storage > Backup/Restore"

Backup/Restore has the following restrictions.
  • Backup/Restore only copies files with new timestamp.
  • Backup/Restore does not copy symbolic links.
  • No mirroring.

■ Tips:

Move the cursor

  • Swipe left or right in the lower half of the screen to move the cursor to the left or right
  • The [○] button swaps the top/bottom, left/right directions.
       It also synchronizes with the state of the [Ctrl] button. ([ESC] button to cancel)

One-line text box

When you start one-line text box (double tap at the bottom of the screen), you can use the usual input equivalent to a normal Android application.
It is convenient to change "Preferences" -> "◇ button" to "One-line text box".

HTML and Link.

  • Open HTML file in browser.
       - "Menu" -> "Share" -> \"File\"
       - Type :ShareIntent file
  • Open the URL under the cursor.
       - gx (:h gx)


DroidVim supports a 256 color terminal scheme.
:colorscheme term256


You can install the VimScript plugin to "$HOME/.vim/plugin" directory.
See followings:
  • :h plugin
  • :h runtimepath.
You can also use packadd. ("$HOME/.vim/packadd")
  • :h packages.

zip, tar

Zip and tar files can be extracted using busybox unzip or busybox tar.


If you want to edit the file shared by Samba, try using the following application.

Setting example
Share Path:\\\storage

shell script

If you want to run a shell script in the home directory on Android 10 or later, enable "Preference > shell > proot".


Since DroidVim is running on the terminal emulator, root access is possible by installing the su command.
In a rooted environment, the vi command should also be available. We recommended using vi with shell or Ctrl+z.
  1. :shell or Ctrl-Z
  2. su
  3. vi

You can also use DroidVim's vim binary by running the suvim command.
  1. :shell or Ctrl-Z
  2. suvim
  3. use exit to exit root

Android 10 and later

If you get an error with the su command, execute :TerminalMode on Vim.
When you restart DroidVim, DroidVim will start up in "Terminal emulator mode", so execute su or suvim.
If you have problems with bash, use :TerminalMode sh.
When you exit DroidVim, DroidVim will start up in "normal mode".
You can also use it by turning off [Settings] > [Shell] > [proot].

■ Text input mode

By default it is set to "Direct input" (alphanumeric characters only) for normal mode commands.
Switch to the normal input by the following method.
  • "◇" button (function bar)
  • One-line text box
  • <C-^>
  • Vim script
  • IME shortcuts

Vim Script(control via Vim)

If you want to switch to the normal input automatically when enter the insert mode, add the following settings to your .vimrc.
let g:imctrl_normal=53 let g:imctrl_insert=50
You can also use <C-^>. (:h iminsert :h i_CTRL-^)

Non-English language with Gboard

If you want to input non-English language characters using Gboard, try using the following settings.
  1. Set Gboard's "Language" to only two, English and the language you want to use.
  2. Long press space key → Choose "English".
  3. Set DroidVim's "Preferences" → "functionbar" → "◇" button to "<C-^>"
  4. Add the following settings to .vimrc and restart.
" Execute "Language Switch" when the input mode is switched by `iminsert` let g:imactivate_language_switch = 61 let g:imactivate_normal = 53
After that, use "◇" button in insert mode to switch between alphanumeric characters and non-English language characters.
※ This method is not useful if you need more than two languages.

If a physical keyboard is connected, use <C-^> or <C-6>. You can also use "IME shortcuts".
  1. DroidVim's "Preferences" → "Text Input Mode" → Set "IME Shortcut Action" to "<C-^>"
※ Unless there is a problem, do not use "[Shift] + [Space]".

Option details

imctrl_insert               When entering the insert mode
imctrl_normal               When exiting the insert mode
imactivate_insert           When entering the insert mode (iminsert=2)
imactivate_normal           When exiting the insert mode (iminsert=2)
imactivate_language_switch When entering/exiting the insert mode (iminsert=2)

The operation differs depending on the IME being used. Please set appropriately by referring to “Setting value details” in the next section.

Setting value details

You can change the text input mode from Vim script.
:ATEMod 72

50 Normal input
51 Direct input : password
52 Direct input : URI
53 Direct input : Default
54 Direct input : Raw
55 Toggle "Normal input"/"Input mode at startup" See Preferences
56 One-line text box
61 Language switch (Shift+Space) If you are using IME for which "language switch" command is not enabled, the same process as pressing the space key is performed.
62 Language switch (Alt+Space)  If you are using IME for which "language switch" command is not enabled, the same process as pressing the space key is performed.
63 <C-^> For iminsert
70 Hide softkeyboard
71 Show softkeyboard
72 Toggle Softkeyboard

Physical keyboard

The terminal emulator can also control the input mode.
If you want to control the input mode from the physical keyboard, try setting "Preferences" → "Text input mode" → "IME shortcuts" appropriately.

Android Shortcuts

Layout switch   [Ctrl]+[Space]   If multiple layouts are available.
Language switch [Shift]+[Space] If IME can use multiple languages.
IME switch       [Meta]+[Space]   If multiple IMEs are available.
[Meta] means [Windows] key or [Command] key
(Android 7 and up)

■ Extra contents (in-app purchase):

Extra contents

Add the following packages required by some plugins.
  • Git, curl - Version Control System.
  • Python - Programming Language.
  • Markdown to html plugin (Experimental)


With one donation, you can use extra contents on all your devices, and you do not need a donation for updates.
If you add a new device, Google Play may not yet reflect your billing status.
In that case, proceed with the flow until the "Google Play's in-app billing dialog" appears. (No need to buy)
When the "Google Play's in-app billing dialog" is displayed, Google Play will acquire the data from the server and the latest billing status will be reflected.

python (pip)

The following procedure is required to use pip.
  1. :shell or Ctrl-z
  2. pip
  3. Return to Vim and quit.
  4. :shell or Ctrl-z
  5. pip install --upgrade pip
Python on DroidVim does not support numpy/scipy.
This is because the developer of numpy/scipy has not built the library file for Android.


When extra contents is installed on a specific device (e.g. Samsung devices), some commands (e.g. "ls") may not work.
In such a case, please use "busybox-setup sysbin".
  1. :shell or Ctrl-z
  2. busybox-setup sysbin

If problems still occur, initialize and setting commands.


  1. busybox-setup clean
  2. busybox-setup

Setting commands

  1. For example, if ls does not work, execute busybox-setup sysbin ls or busybox-setup ls.
  2. If there is a command which does not work, do the same thing.

all               Add all busybox commands. (busybox-setup all)
{command}         Add specified busybox command. (e.g. busybox-setup ls)
sysbin            Use all commands of your device preferentially. (busybox-setup sysbin)
sysbin {command}  Use specified command of your device preferentially. (e.g. busybox-setup sysbin ls)
clean             Clear all additional commands. (busybox-setup clean)
If you run without options, the standard installation will be performed.

■ Network permissions

DroidVim uses network permissions for the following purposes:
  • Extra contents
  • HTML file preview
  • Help
  • Crash report
If you don't like it, build DroidVim yourself from source code or stop using DroidVim.

■ Source code:

DroidVim is an open source project.

■ Contact:

<< Prev  |  PageTop