Buffer Editor

Manual version 2.0


Introduction

First of all, Thank you so much for purchasing Buffer Editor.
You are awesome!

You are entitled to get free lifetime updates to this product + exceptional support from the author directly.

Requirements

Requires iOS 13.0 or later.

Editor #back to top

Buttons in main view



1. Settings



2. Action button "+".

Buttons in editor view



3. Export button
4. Syntax selection button
5. Settings button
6. Fullscreen toggle button
7. Save button

Vim / External keyboard commands

You can use the editor in normal mode or in the Vim mode.

Supported Shortcuts

Refer to the list below for commands available to the Bluetooth keyboard.
Key Notes
Left Move cursor left
Right Move cursor right
Up Move cursor up
Down Move cursor down
CMD + CTRL + f Toggle fullscreen
tab Tab or Indent selection
SHIFT + tab Unindent selection
CTRL + tab Next tab
CTRL + SHIFT + tab Previous tab
CMD + number (1-9) Selected tab (number)
CMD + e Edit currently open file
CMD + / Toggle comment
CMD + ALT + / Toggle block comment
CMD + a Select All
CMD + f Search
CMD + x Cut
CMD + c Copy
CMD + s Save file
CMD + v Paste
CMD + z Undo last edit
SHIFT + ← → Select character before / after cursor
CMD + SHIFT + ← → Select before / after cursor
CMD + SHIFT + ↑ ↓ Select all before / after cursor
OPTION(ALT) + ← → Move cursor one word forward / backward
OPTION(ALT) + SHIFT + ← → Select one word forward / backward

Supported Vim Commands

Command Description
a Move cursor after current character and go into editing mode
i Go into editing mode
o Put cursor on next line and go into editing mode
O Put cursor on previous line and go into editing mode
w Move forward by one word
b Move backward by one word
e Move forward to the end of the (current/next) word
h Move cursor left by one character
j Move cursor down by one line
k Move cursor up by one line
l Move cursor right by one character
0 Go to beginning of line
^ Go to first non-whitespace character in line
>> Indent current line
<< Unindent current line
> Indent visual selection
< Unindent visual selection
$ Go to last character in line
[number]gg Go to specific line in buffer
gg Go to first line in buffer
G Go to last line in buffer
f Go to next character in line
F Go to previous character in line
x Delete character underneath cursor
X Delete character behind cursor
r Replace character underneath cursor
s Delete character underneath cursor and enter insert mode
d Delete selection
dd Delete line
y Yank selection
yy Yank line
p Paste selection in front of cursor or on next line
P Paste selection behind cursor or previous next line
u (In visual mode) Set selected text to lowercase. Use visual mode to select text. You can also select text with 'touch' select or cmd+a to select all text. Then press esc and type u
U (In visual mode) Set selected text to UPPERCASE. Use visual mode to select text. You can also select text with 'touch' select or cmd+a to select all text. Then press esc and type U
v Start Visual mode per character
V Start Visual mode linewise
u Undo action
Escape Toggle between Vim and insert mode
Ctrl+c Toggle between Vim and insert mode
Ctrl+[ and (CTRL+ALT+8 and 9) Toggle between Vim and insert mode
Ctrl+R Redo action
Ctrl+D Move half-page down
Ctrl+U Move half-page up
Ctrl+F Move page down
Ctrl+B Move page up
. Repeat action
c Change selected text, line or range of text (targeted with a set of accumulated commands) and go into insert mode
C Change everything from the current character position to the end of the line and go into insert mode
| The pipe command allows you to move to a specific column within the line. Ex: '10|' will move to the 10th column in the current line
J Join the previous line with new line and place cursor between joined lines
A Move to the end of the line and go directly into insert mode
I Move to the beginning of the line and go directly into insert mode
n Move to the next match in buffer
N Move to the previous match in buffer
/ Search forwards
? Search backwards
* Search for the word underneath the cursor

Supported Colon Commands

Command Description
:w, :wq Write file to disk.
:q, :q! Close the editor. Adding '!' will close editor discarding changes.
:red, :redo Redo an edit.
:x Write file to disk and close editor
:set nu Show line numbers
:set nonu Hide line numbers
:set nokb Hide the keyboard
:set fs Toggle editor fullscreen mode
:set ic:set ignorecase Ignore case when searching in buffer
:set noic:set noignorecase Do not ignore case (case sensitive) when searching in buffer
:sort Alphabetic sort. Use visual mode to select text. You can also select text with 'touch' select or cmd+a to select all text. Then press esc and type :sort
:sort n Numeric sort. Use visual mode to select text. You can also select text with 'touch' select or cmd+a to select all text. Then press esc and type :sort n
:set syntax=[option]
:syntax [option]
Change the color of the text.

Extended keyboard

Usage

You can enable or disable the extended keyboard in the settings.
Tap the button to enter the character from the middle of the button. Swipe the button to the corner to enter the other characters.

Special characters/commands

Command Description
TAB Tab or Indent selection
LEFT TAB Unindent selection
A Select all text
B Block comment selection
C Comment selection / add comment

Colorscheme / theme

colorscheme change the current color scheme. You can also change the theme via settings.

Usage

    :colo [scheme_code]
    
    :colorscheme [scheme_code]
    

Example Usage

Change the color scheme to Solarized Dark.

    :colo solarized_dark
    

Change the color scheme to Xcode.

    :colorscheme x_code
    

Color Schemes

Name Code
Ayu Dark ayu_dark
Ayu Light ayu_light
Buffereditor buffereditor
Candy candy
Candyland candyland
Dante dante
Deep Dark deepdark
Desert desert
Dracula dracula
Github github
Gatito gatito
Inkpot inkpot
Jellybeans jellybeans
Mac Classic mac_classic
madeofcode madeofcode
Monokai monokai
Oceanic oceanic
One Dark one_dark
One Dark Pro one_dark_pro
Putty putty
Seti seti
Solarized Dark solarized_dark
Solarized Light solarized_light
Spacecadet spacecadet
Spacegray Light spacegray_light
VSCode Dark vscode_dark
VSCode Light vscode_light
Wombat wombat
Xcode x_code
Xotopia Dark xotopia_dark

Help command

help opens the User Guide and to Vim help topics.

Usage

    :help [topic]
    

Example Usage

Display help topic for the 'syntax' Vim option.

    :help syntax
    

Syntax command

syntax forces the text color to change.

Usage

    :set syntax=[option]
    

Options

Option Description
on Turn syntax highlighting on.
off Turn syntax highlighting off.
manual Load the default language to parse the file (this is based off of the file's extension). This also turns syntax highlighting on.
[lang_name] The language used to parse the file. Please refer to the Language Codes below for a list of supported languages.

Example Usage

Turn syntax highlighting on.

    :set syntax=on
    

Force the file to be parsed as Objective-C syntax.

    :set syntax=objc
    

Language Codes

Name Code
ASP asp
AWK awk
ActionScript actionscript
Ada ada
Arduino arduino
Bash (Unix shell) bash
C c
C++ cpp
C# csharp
Clojure clojure
Cobol cobol
CSS css
D d
Dart dart
Dockerfile dockerfile
F# fsharp
Fortran fortran
Gherkin gherkin
Go go
Haml haml
Haskell haskell
HTML (4 & 5) html
INI ini
Java java
Javascript javascript
JSON json
Julia julia
Kotlin kotlin
LaTeX latex
(Common) Lisp lisp
Lua lua
Markdown markdown
MATLAB matlab
MQL (4 & 5) mql
NSIS nsis
Objective-C objc
Orgmode orgmode
Pascal pascal
Perl perl
PHP php
Powershell powershell
Progress progress
Prolog prolog
Pug pug
Puppet puppet
Python python
Q/kdb+ qkdb
R r
reStructuredText restructuredtext
Ruby ruby
Rust rust
Scala scala
Solidity solidity
SQL sql
Stata stata
Swift swift
Terraform terraform
TypeScript typescript
TypeScriptReact typescriptreact
Verilog verilog
VHDL vhdl
Visual Basic vb
Vue vue
x86 ASM x86asm
XML xml
YAML yaml

Search and replace

Regex Commands

Operators
| Or
* 0 or more times. Match as many times as possible.
+ 1 or more times. Match as many times as possible.
? 0 or 1 times. Prefer 1.
*? 0 or more times. Match as few times as possible.
+? 1 or more times. Match as few times as possible.
?? 0 or 1 times. Prefer 0.
*+ 0 or more times. Match as many times as possible when first encountered, do not retry with fewer even if overall match fails (Possessive Match).
++ 1 or more times. Possessive match.
?+ 0 or 1 times. Possessive match.
{n} {n}? {n}+ Exactly n times.
{n,} n or more.
{n,}? At least n times, but no more than required for an overall pattern match.
{n,m} Between n and m times.
{n,m}? Between n and m times. Match as few times as possible, but not less than n.

Anchors
^ Beginning of a line.
$ End of a line.
\A Beginning of an input. Doesn't match after a new line within the input.
\z End of input.
\Z End of input, but before the final line terminator, if one exists.
. Any character.
\ Quote (escape) following character.

Others
$n n is a digit. Back referencing to a capture group. n must be >= 0 and not greater than the number of capture groups. $ not followed by a digit has no special meaning.
\ Treat the following character as a literal, suppressing any special meaning.

Character Classes
\b Word boundary, if outside of a [Set]. BACKSPACE, if within a [Set].
\B Not word boundary.
\s White space character.
\S Non-white space character.
\d Digit character.
\D Non-digit character.
\w Word character.
\W Non-word character.

Groups and Ranges
(...) Capturing parentheses (capturing group).
(?:...) Non-capturing parentheses. Matches but doesn't capture. Somewhat more efficient than capturing parentheses.
(?!...) Negative look-ahead. True if the parenthesized pattern does not match at the current input position.
[...] Any one character in the set.
[^...] Negated set. Not any one in the set.

Useful Examples
m[^o] matches any "m" followed by anything other than "o"
m(?!o) matches any "m" (and only "m") not followed by "o"

Preview in safari

You can preview your files in safari.
The preview will start a small web server at localhost which can be accessed in the same network via other device.

Usage

1. Open for example index.html
2. Press the export button in the top right of the editor view.
3. Choose "Preview in Safari".

You can edit the file in splitview by dragging the Safari for example at the right side of the Buffer Editor.
This will allow you to edit the code and see the preview at the same time.

Managing files and connections #back to top

Create, delete and edit connections

You can create new connection by pressing "+" on the top right of the main view.
You can delete the connection by swiping left over the connection.
You can edit the connection details by pressing the "i" button on the right side of the connection.

Creating new files and folders

1. Choose connection / filemanager from the main view
2. press "+" sign on top right
3. choose "create file" or "create folder"

Upload/Download files

Normally you don't have to upload or download files with buffer editor.
You can just press the tick on the top right of the editor view.
Downloading the files allows you to transfer the file to another service or for offline use.

Upload

1. Choose local files from main view
2. go to some folder
3. press "+" sign on top right
4. check the files (box over icon)
5. press upload.
6. choose the remote service, go to some folder. press confirm.

Download

1. Choose any remote service from main view
2. go to some folder
3. press "+" sign on top right
4. check the files (box over icon)
5. press download.
6. choose folder in local files. press confirm.

Saving, Deleting, Moving, Copying and renaming files and folders

Saving files

Press the tick on the top right of the editor view.
If you are using remote service, file will be saved/synced automatically to your remote service.

Deleting files

You can delete files by swiping left over the file.

You can also choose multiple files.
1. Choose connection / filemanager from the main view
2. press "+" sign on top right
3. choose "delete/move"
4. check the files (box over icon)
5. press delete.

Moving files

1. Choose connection / filemanager from the main view
2. press "+" sign on top right
3. choose "delete/move"
4. check the files (box over icon)
5. press move
6. choose folder and press confirm.

Copying files

1. Choose connection / filemanager from the main view
2. Open any file
3. Press the export button on top right of the editor view
4. Choose "copy file"

Renaming files

1. Press "i" button on the right side of the file or golder.
2. Edit and press done.

Recent Files

You can access recent files by choosing recent files on the main view.
You can also clear recent files list by pressing "+" sign in the recent files view.

When you open any file from the recent files the newest version will be opened from the certain filemanager or connection.

Go back multiple folders

You can move back multiple folders when you are deep in the folder structure.
When you hold the left navigation arrow it will show you a list of the folder structure, just tap the destination folder.

Connections and filemanagers#back to top

FTP

Host: Enter your host.
Port: Enter your port.
Username: Enter your username.
Password: Enter your password.
Initial Path: Enter your initial path.
Mode: Enter your mode. FTP may operate in an Active or a Passive mode. If you are unsure of which mode to use, contact your hosting provider.

SFTP/SSH

Host: Enter your host.
Port: Enter your port.
Username: Enter your username.
Password: Enter your password.
Initial Path: Enter your initial path.
Keys path: Enter your Keys path.

User/Password authentication

Enter your user name and password as you would for a regular connection.

Supported SSH key formats

RSA
DSS
ECDSA_256
ECDSA_384
ECDSA_521
ED25519

Generating SSH Key

Open your terminal on Mac/pc.
You can use one of the following commands. This will generate proper id_rsa and id_rsa.pub keys.

ssh-keygen -m PEM -t rsa -b 4096

ssh-keygen -m PEM -t rsa -b 4096 -C "myemail@example.com"

SSH Key Authentication

1. Create new folder inside Buffer Editor "Local files" folder for example "sshkeys". You can find the "Local Files" folder in the main view of Buffer Editor.
2. Download your private key (check supported SSH key formats) file in this folder. Make sure that there is only one file (private key) in the folder.
Please note: If you decide to copy/paste the key, please make sure it is exactly like original and there is no extra spaces or newlines. Inproper copy/pasting might cause problem to connect to your server.
3. Fill in your Keys path "sshkeys".
Don't include "Local Files" in the path and don't include the key file in the path.
Keys path is path to the folder, where the private key is, not to the exact file.
If you leave the Keys path field empty, default path is used /Local Files/ConnectionName/. ConnectionName comes from Name Field.
4. Fill in your passphrase into the password field. Leave it empty, if you don't use passphrase for your ssh key.

Terminal

1. Open your SFTP/SSH connection from main view.
2. Press "+" sign on top right.
3. Choose terminal.

Common errors

"Incorrectly defined auth methods (publickey) on server..."
How to resolve:
Please recheck the keys path and server configuration. You can also contact our support via email or twitter.

Solving key auth errors

If you have any auth/login error, please try to download the key from your server or hosting provider. (Don't use airdrop or copy/pasting.)

GitHub/GitLab/BitBucket/CustomGit

Features

Clone
Commit
Push
Pull
Branches

Usage

Username: Enter your username. (sometimes your username is your email)
Email: Enter your email.
Password: Enter your password. This can be empty if you use SSH keys without passphrase.
Clone url: Enter your cloning url.
Branch: Enter your branch.
Keys path: Enter your Keys path.

Push/Pull/Commit/Branch

Press "+" symbol at top right to access Push, Pull, Commit and Switch branch functions.
You need to Commit the changes first before Pushing.

Branch/Changing branch

You can define the branch when cloning, by writing the branch name in the Branch field.
You can change the branch for the repository/connection by pressing "i" button on the right side of the connection in the main screen. Rename the branch and press done.
Note

Remember to commit before changing branch. Otherwise modified changes will be lost.
If you have added new file, remember to commit before changing branch or the file will "follow" to the changed branch. You can also commit the new file to this branch.

User/Password authentication

1. Enter your user name, email and password.(If you want to use 2FA see "2FA Authentication")
2. Please wait until "cloning" dialog disappears
Example https clone url: https://github.com/User/test.git

2FA Authentication

If you want to use 2 Factor authentication with Buffer Editor, you have to generate personal access token.
Write the personal access token to the Password field.
More information:
https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html

Supported SSH key formats

RSA
DSS
ECDSA_256
ECDSA_384
ECDSA_521
ED25519

Generating SSH Key

Open your terminal on Mac/pc.
Use one of the following commands. This will generate proper id_rsa and id_rsa.pub keys.

ssh-keygen -m PEM -t rsa -b 4096

ssh-keygen -m PEM -t rsa -b 4096 -C "myemail@example.com"

Ssh Key Authentication

1. Create new folder inside Buffer Editor "Local files" folder for example "sshkeys". You can find the "Local Files" folder in the main view of Buffer Editor.
2. Download your private key (RSA format) file in this folder. Make sure that there is only one file (private key) in the folder.
Please note: If you decide to copy/paste the key, please make sure it is exactly like original and there is no extra spaces or newlines. Inproper copy/pasting might cause problem to connect to your server.
3. Fill in your Keys path "sshkeys".
Don't include "Local Files" in the path and don't include the key file in the path.
Keys path is path to the folder, where the private key is, not to the exact file.
If you leave the Keys path field empty, default path is used /Local Files/ConnectionName/. ConnectionName comes from Name Field.
4. Fill in your passphrase into the password field. Leave it empty, if you don't use passphrase for your ssh key.
5. Please wait until "cloning" dialog disappears

Example ssh clone url: git@github.com:User/test.git

Custom port

For example if you are using custom port 1234 with gitea, please try to use following clone url
git@gitea:1234/path/to/repo
or
ssh://git@gitea:1234/path/to/repo

Common errors and issues

The file "sample.git" couldnt' be opened because there is no such file.

The cloning has been failed and there is no folder or files that could be opened.

How to fix

1. Use the correct cloning url. Please see the example clone url for ssh and https.
2. Use the correct login details. Read the user guide. You can also contact our support: support@blakzero.com

Solving key auth errors

If you have any auth/login error, please try to download the key from your server or hosting provider. (Don't use airdrop or copy/pasting.)

Merge conflict / Unable to push

Merge conflicts may occur if competing changes are made to the same file or when a file is deleted that another person is attempting to edit.
Merge conflict normally occurs if you have edited your repository with another device and then you start to edit with buffer editor without pulling the changes made before.
You can't push, if you don't solve conflicts.

How to fix

If you have made changes to your repository with another device. You need to pull first and then you can start editing with buffer editor.

Could not find appropriate mechanism for credentials

1. Use the correct cloning url. Please see the example clone url for ssh and https.
2. For 2FA use the https:// url and for SSH keys use the git@... url.

Dropbox

Enter your details to the official login system when prompted.

iCloud Documents

These files are synced between your iOS devices.
iCloud documents is not iCloud Drive. You can link folders or open files from iCloud Drive with the "open from" function

Google Drive

Enter your details to the official login system when prompted.

External folders

Use the "Open From" function to select folders, these folders will be added to the EXTERNAL FOLDERS section on the main view.
Only iOS folders that are locally stored in the file system can be linked.
You can't link folders from cloud providers, but you can still open files for editing.

Settings#back to top

Settings

Option Description
Auto-Indent Indent newline automatically
Auto-Complete Quotes Insert completing quote
Auto-Complete Quotes Insert completing quote
Auto-Complete Brackets Insert completing bracket "{ }"
Auto-Complete Code Suggest code
Show Extended Keyboard Shows swipeable keys over the keyboard
Show Navigation Arrows Shows arrows for cursor navigation over the keyboard
Display Status Bar Displays iOS status bar( battery, time etc).
Line Numbers Draw line numbers
Font Name Choose font
Font Size Choose font size
Expand Tabs (soft tabs) Enable hard or soft tabs
Tab Width Choose tab width
Display Tab Characters Display invisible tabs
Display Space Characters Display invisible space characters
Display Newline Characters Display invisible newline characters
Highlight Matching Brackets Highlight matching brackets
Theme Choose theme for editor
Word Wrapping Word wrapping allows long words to be able to be broken and wrap onto the next line
Highlight Current Line Enable current line highlightning
Show Inverse Cursor(vim mode)/td> Enable inverse cursor for vim mode
Dark mode Enable dark or light mode for application
Override Obj-C(.m) with MATLAB(.m) syntax Overrides Obj-C(.m) with MATLAB(.m) syntax
Override Perl(.pl) with Prolog(.pl) syntax Overrides Perl(.pl) with Prolog(.pl) syntax
Enable Touch/Face ID Protection Enable protection for app if Touch/Face ID is supported by the device.
Auto Save Enable auto save
Auto Save Interval (minutes) Choose auto save interval

Fonts

Name Author
Anonymous Pro Mark Simonson
CamingoCode
Courier [Bold]
Courier New [Bold]
DejaVu Sans Mono Bitstream Inc.
Droid Sans Mono The Android Open Source Project
Fantasque Sans Mono
Fira Code
Fira Mono For Powerline
Hermit
Inconsolata Raph Levien
Iosevka
Liberation Mono Pravin Satpute, Steve Matteson (Ascender, Inc.)
Luxi Mono Bigelow & Holmes Inc
Menlo
monofur tobias b koehler
M+ 2m
ProFont Windows Mike Smith
Proggy Clean proggy_fonts
Proggy Square proggy_fonts
SourceCodePro
Space Mono

Support#back to top

If you have any issues or requests, please contact our support.

  • Support email : support@blakzero.com

Our main priority is to keep the app bug free, but if you find any bugs please send us email.
Please include following information in your email.

  • Device version
  • iOS version
  • Description of the issue/bug
  • Screen recording (if possible)