All Projects → thaerkh → Vim Workspace

thaerkh / Vim Workspace

Licence: apache-2.0
📑 Automated Vim session management with file auto-save and persistent undo history

Projects that are alternatives of or similar to Vim Workspace

neo4j-php-client
Php client and driver for neo4j database
Stars: ✭ 95 (-74.6%)
Mutual labels:  session
insomnia-plugin-documenter
Export Insomnia workspace HTML documentation.
Stars: ✭ 23 (-93.85%)
Mutual labels:  workspace
Jaguar
Jaguar, a server framework built for speed, simplicity and extensible. ORM, Session, Authentication & Authorization, OAuth
Stars: ✭ 286 (-23.53%)
Mutual labels:  session
monoreact
📦 React workspaces implementation
Stars: ✭ 13 (-96.52%)
Mutual labels:  workspace
visual-ts-game-engine
Typescript project based on matter.ts implementation."This version 2 of visualjs game engine, totally different approach. Whole project is based fully dependency build. Main file is app.ts and ioc.ts. Class ioc saves singleton instances also bind. In this project html and css is also present, webpack helps and handle this type of files. GamePlay…
Stars: ✭ 15 (-95.99%)
Mutual labels:  session
kemal-session
Simple session handler for Kemal
Stars: ✭ 47 (-87.43%)
Mutual labels:  session
telethon-session-sqlalchemy
SQLAlchemy backend for Telethon session storage
Stars: ✭ 34 (-90.91%)
Mutual labels:  session
Pode
Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
Stars: ✭ 329 (-12.03%)
Mutual labels:  session
egg-session
session plugin for egg
Stars: ✭ 48 (-87.17%)
Mutual labels:  session
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+4705.35%)
Mutual labels:  session
i3-workscreen
In i3wm compatible manner - dynamically re-configures your (multi)-monitor setup on the fly when you hotplug/unplug display cabel(s)
Stars: ✭ 29 (-92.25%)
Mutual labels:  workspace
session
A session service, PSR-15 session middleware, and a flash message service which helps use one-time messages.
Stars: ✭ 14 (-96.26%)
Mutual labels:  session
Fw
workspace productivity booster
Stars: ✭ 269 (-28.07%)
Mutual labels:  workspace
nestjs-cookie-session
Idiomatic Cookie Session Module for NestJS. Built on top of `cookie-session` 😻
Stars: ✭ 35 (-90.64%)
Mutual labels:  session
Many People Blog
🎈基于vue+node+mysql的多人博客,带后台管理系统。支持:登陆/注册,留言,评论/回复,点赞,记录浏览数量,带有相册功能,内容丰富,当然也可以发表文章。欢迎使用!
Stars: ✭ 300 (-19.79%)
Mutual labels:  session
dothub
Stop managing your github config like a mere human
Stars: ✭ 14 (-96.26%)
Mutual labels:  workspace
save-workspace-atom-plugin
If you work with few projects same time this plugin give you the opportunity to change your workspace faster. Save your workspace, all your opened tabs, cursor position, etc. for each task you are working with.
Stars: ✭ 24 (-93.58%)
Mutual labels:  workspace
Stacker
Stacker - The environment for local web development, ready for use.
Stars: ✭ 356 (-4.81%)
Mutual labels:  workspace
Koa Redis
Redis storage for Koa session middleware/cache with Sentinel and Cluster support
Stars: ✭ 324 (-13.37%)
Mutual labels:  session
Codenvy
Codenvy
Stars: ✭ 273 (-27.01%)
Mutual labels:  workspace

Features

Workspace Sessions

Persistent Vim Session

Toggling the ToggleWorkspace command on will persistently track your session found in a current working directory, and all workspace features will be enabled. Conversely, toggling the command off will remove the session and disable the workspace features.

If Vim is run with a file argument and it's already in the session's workspace, Vim will load the session and go to the tab window that contains it. Otherwise, it will be loaded as a new tab in the session. If you would rather create a new buffer in the existing tab instead of creating a new tab:

let g:workspace_create_new_tabs = 0  " enabled = 1 (default), disabled = 0

It is recommended you bind this command to a convenient shortcut, such as the following:

nnoremap <leader>s :ToggleWorkspace<CR>

The following default can be configured if you wish to change the session name:

let g:workspace_session_name = 'Session.vim'

Use g:workspace_session_directory to save all your session files in a single directory outside of your workspace. Example:

let g:workspace_session_directory = $HOME . '/.vim/sessions/'

Note: this will use the workspace directory as the session file name, overriding g:workspace_sesssion_name.

If you'd like sessions to not load if you're explicitly loading a file in a workspace directory (as opposed to an argument-less vim), the following in your vimrc will provide that behaviour:

let g:workspace_session_disable_on_args = 1

Hidden Buffers

Over time, hidden buffers can build up to a point where most are unnecessary, with only those currently tied to a tab window being important. When called, the command CloseHiddenBuffers will close any hidden buffers meeting this criteria.

Undo History

When in a workspace, file undo history is persisted between sessions, without needing to keep Vim on. Cursor positions will also persist across session reloads.

The following defaults can be configured if you wish to change feature behaviour:

let g:workspace_persist_undo_history = 1  " enabled = 1 (default), disabled = 0
let g:workspace_undodir='.undodir'

Omni Completion

Preview windows will close on InsertLeave, to mitigate the default behaviour of being an orphaned window.

Autosave

Files edited in a workspace session will autosave on InsertLeave, idle (CursorHold), pane switches (FocusLost and FocusGained), or buffer switches (BufLeave).

FocusLost and FocusGained triggers will typically trigger only with GUI versions of Vim. However, there are plugins that enables these for the console version within Tmux (i.e. sjl/vitality.vim).

This autosave feature enforces a last writer wins policy (eventual consistency).

You can manually enable the autosave feature outside of a workspace session with the ToggleAutosave command.

If you would like autosave to be always on, even outside of a session, add the following to your vimrc:

let g:workspace_autosave_always = 1

If you would like to disable autosave for some reason (i.e. too much IO on disk), it can be disabled as shown here:

let g:workspace_autosave = 0

Untrailing Spaces

By default, all trailing spaces are trimmed before a buffer is autosaved. If you don't prefer this behaviour, add this line:

let g:workspace_autosave_untrailspaces = 0

Ignore List

Git commit filetypes won't autosave (or trim trailing spaces) by default. You can customize the ignore list with this line:

let g:workspace_autosave_ignore = ['gitcommit']

Indent Guides

This feature has been moved to its own plugin vim-indentguides.

Installation

This plugin requires Vim 8.0, follows the standard runtime path structure, and can be installed with a variety of plugin managers.

Using Plug

Paste the following in your ~/.vimrc file:

if empty(glob('~/.vim/autoload/plug.vim'))
  silent execute "!curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
  autocmd VimEnter * PlugInstall | source $MYVIMRC
endif

call plug#begin('~/.vim/plugged')
Plug 'thaerkh/vim-workspace'
call plug#end()

If you don't already have Plug, this will auto-download Plug for you and install the workspace plugin.

If you already have Plug, simply paste Plug 'thaerkh/vim-workspace' and call :PlugInstall to install the plugin.

Remember to :PlugUpdate often to get all the latest features and bug fixes!

Using Vundle

Paste this in your ~./vimrc:

Plugin 'thaerkh/vim-workspace'

Using Pathogen

cd into your bundle path and clone the repo:

cd ~/.vim/bundle
git clone https://github.com/thaerkh/vim-workspace

License

License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].