├── .bashrc ├── alpine-vim-base ├── README.md └── Dockerfile ├── run ├── Dockerfile ├── .vimrc └── README.md /.bashrc: -------------------------------------------------------------------------------- 1 | stty -ixon -------------------------------------------------------------------------------- /alpine-vim-base/README.md: -------------------------------------------------------------------------------- 1 | #### Base for `jare/vim-bundle:latest` 2 | 3 | [![](http://i.imgur.com/G6KybVM.png)](http://i.imgur.com/G6KybVM.png) 4 | -------------------------------------------------------------------------------- /run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$GOBIN 3 | cd /home/developer 4 | echo "let g:pathogen_disabled = [$DISABLE]" > .vimrc 5 | echo "execute pathogen#infect('/ext/bundle/{}')" >> .vimrc 6 | mkdir -p /home/developer/.vim_runtime/temp_dirs 7 | cat .vimrc~ >> .vimrc 8 | echo "source /ext/.vimrc" >> .vimrc 9 | source /home/developer/.bashrc 10 | cd /home/developer/workspace/ 11 | vim $@ 12 | -------------------------------------------------------------------------------- /alpine-vim-base/Dockerfile: -------------------------------------------------------------------------------- 1 | # Multistage builds to reduce image size to ~37MB 2 | # by tuanhtrng 3 | FROM alpine:latest as builder 4 | 5 | MAINTAINER JAremko 6 | 7 | WORKDIR /tmp 8 | 9 | # Install dependencies 10 | RUN apk add --no-cache \ 11 | build-base \ 12 | ctags \ 13 | git \ 14 | libx11-dev \ 15 | libxpm-dev \ 16 | libxt-dev \ 17 | make \ 18 | ncurses-dev \ 19 | python \ 20 | python-dev 21 | 22 | # Build vim from git source 23 | RUN git clone https://github.com/vim/vim \ 24 | && cd vim \ 25 | && ./configure \ 26 | --disable-gui \ 27 | --disable-netbeans \ 28 | --enable-multibyte \ 29 | --enable-pythoninterp \ 30 | --with-features=big \ 31 | --with-python-config-dir=/usr/lib/python2.7/config \ 32 | && make install 33 | 34 | FROM alpine:latest 35 | 36 | COPY --from=builder /usr/local/bin/ /usr/local/bin 37 | COPY --from=builder /usr/local/share/vim/ /usr/local/share/vim/ 38 | # NOTE: man page is ignored 39 | 40 | RUN apk add --no-cache \ 41 | diffutils \ 42 | libice \ 43 | libsm \ 44 | libx11 \ 45 | libxt \ 46 | ncurses 47 | 48 | ENTRYPOINT ["vim"] 49 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jare/alpine-vim:latest 2 | 3 | # User config 4 | ENV UID="1000" \ 5 | UNAME="developer" \ 6 | GID="1000" \ 7 | GNAME="developer" \ 8 | SHELL="/bin/bash" \ 9 | UHOME=/home/developer 10 | 11 | # Used to configure YouCompleteMe 12 | ENV GOROOT="/usr/lib/go" 13 | ENV GOBIN="$GOROOT/bin" 14 | ENV GOPATH="$UHOME/workspace" 15 | ENV PATH="$PATH:$GOBIN:$GOPATH/bin" 16 | 17 | # User 18 | RUN apk --no-cache add sudo \ 19 | # Create HOME dir 20 | && mkdir -p "${UHOME}" \ 21 | && chown "${UID}":"${GID}" "${UHOME}" \ 22 | # Create user 23 | && echo "${UNAME}:x:${UID}:${GID}:${UNAME},,,:${UHOME}:${SHELL}" \ 24 | >> /etc/passwd \ 25 | && echo "${UNAME}::17032:0:99999:7:::" \ 26 | >> /etc/shadow \ 27 | # No password sudo 28 | && echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" \ 29 | > "/etc/sudoers.d/${UNAME}" \ 30 | && chmod 0440 "/etc/sudoers.d/${UNAME}" \ 31 | # Create group 32 | && echo "${GNAME}:x:${GID}:${UNAME}" \ 33 | >> /etc/group 34 | 35 | # Install Pathogen 36 | RUN apk --no-cache add curl \ 37 | && mkdir -p \ 38 | $UHOME/bundle \ 39 | $UHOME/.vim/autoload \ 40 | $UHOME/.vim_runtime/temp_dirs \ 41 | && curl -LSso \ 42 | $UHOME/.vim/autoload/pathogen.vim \ 43 | https://tpo.pe/pathogen.vim \ 44 | && echo "execute pathogen#infect('$UHOME/bundle/{}')" \ 45 | > $UHOME/.vimrc \ 46 | && echo "syntax on " \ 47 | >> $UHOME/.vimrc \ 48 | && echo "filetype plugin indent on " \ 49 | >> $UHOME/.vimrc \ 50 | # Cleanup 51 | && apk del curl 52 | 53 | # Vim wrapper 54 | COPY run /usr/local/bin/ 55 | #custom .vimrc stub 56 | RUN mkdir -p /ext && echo " " > /ext/.vimrc 57 | 58 | COPY .vimrc $UHOME/my.vimrc 59 | 60 | COPY .bashrc $UHOME/.bashrc 61 | 62 | # Vim plugins deps 63 | RUN apk --update add \ 64 | bash \ 65 | ctags \ 66 | curl \ 67 | git \ 68 | ncurses-terminfo \ 69 | python \ 70 | # YouCompleteMe 71 | && apk add --virtual build-deps \ 72 | build-base \ 73 | cmake \ 74 | go \ 75 | llvm \ 76 | perl \ 77 | python-dev \ 78 | && git clone --depth 1 https://github.com/Valloric/YouCompleteMe \ 79 | $UHOME/bundle/YouCompleteMe/ \ 80 | && cd $UHOME/bundle/YouCompleteMe \ 81 | && git submodule update --init --recursive \ 82 | && $UHOME/bundle/YouCompleteMe/install.py --gocode-completer \ 83 | # Install and compile procvim.vim 84 | && git clone --depth 1 https://github.com/Shougo/vimproc.vim \ 85 | $UHOME/bundle/vimproc.vim \ 86 | && cd $UHOME/bundle/vimproc.vim \ 87 | && make \ 88 | && chown $UID:$GID -R $UHOME \ 89 | # Cleanup 90 | && apk del build-deps \ 91 | && apk add \ 92 | libxt \ 93 | libx11 \ 94 | libstdc++ \ 95 | && rm -rf \ 96 | $UHOME/bundle/YouCompleteMe/third_party/ycmd/clang_includes \ 97 | $UHOME/bundle/YouCompleteMe/third_party/ycmd/cpp \ 98 | /usr/lib/go \ 99 | /var/cache/* \ 100 | /var/log/* \ 101 | /var/tmp/* \ 102 | && mkdir /var/cache/apk 103 | 104 | USER $UNAME 105 | 106 | # Plugins 107 | RUN cd $UHOME/bundle/ \ 108 | && git clone --depth 1 https://github.com/pangloss/vim-javascript \ 109 | && git clone --depth 1 https://github.com/scrooloose/nerdcommenter \ 110 | && git clone --depth 1 https://github.com/godlygeek/tabular \ 111 | && git clone --depth 1 https://github.com/Raimondi/delimitMate \ 112 | && git clone --depth 1 https://github.com/nathanaelkane/vim-indent-guides \ 113 | && git clone --depth 1 https://github.com/groenewege/vim-less \ 114 | && git clone --depth 1 https://github.com/othree/html5.vim \ 115 | && git clone --depth 1 https://github.com/elzr/vim-json \ 116 | && git clone --depth 1 https://github.com/bling/vim-airline \ 117 | && git clone --depth 1 https://github.com/easymotion/vim-easymotion \ 118 | && git clone --depth 1 https://github.com/mbbill/undotree \ 119 | && git clone --depth 1 https://github.com/majutsushi/tagbar \ 120 | && git clone --depth 1 https://github.com/vim-scripts/EasyGrep \ 121 | && git clone --depth 1 https://github.com/jlanzarotta/bufexplorer \ 122 | && git clone --depth 1 https://github.com/kien/ctrlp.vim \ 123 | && git clone --depth 1 https://github.com/scrooloose/nerdtree \ 124 | && git clone --depth 1 https://github.com/jistr/vim-nerdtree-tabs \ 125 | && git clone --depth 1 https://github.com/scrooloose/syntastic \ 126 | && git clone --depth 1 https://github.com/tomtom/tlib_vim \ 127 | && git clone --depth 1 https://github.com/marcweber/vim-addon-mw-utils \ 128 | && git clone --depth 1 https://github.com/vim-scripts/taglist.vim \ 129 | && git clone --depth 1 https://github.com/terryma/vim-expand-region \ 130 | && git clone --depth 1 https://github.com/tpope/vim-fugitive \ 131 | && git clone --depth 1 https://github.com/airblade/vim-gitgutter \ 132 | && git clone --depth 1 https://github.com/fatih/vim-go \ 133 | && git clone --depth 1 https://github.com/plasticboy/vim-markdown \ 134 | && git clone --depth 1 https://github.com/michaeljsmith/vim-indent-object \ 135 | && git clone --depth 1 https://github.com/terryma/vim-multiple-cursors \ 136 | && git clone --depth 1 https://github.com/tpope/vim-repeat \ 137 | && git clone --depth 1 https://github.com/tpope/vim-surround \ 138 | && git clone --depth 1 https://github.com/vim-scripts/mru.vim \ 139 | && git clone --depth 1 https://github.com/vim-scripts/YankRing.vim \ 140 | && git clone --depth 1 https://github.com/tpope/vim-haml \ 141 | && git clone --depth 1 https://github.com/SirVer/ultisnips \ 142 | && git clone --depth 1 https://github.com/honza/vim-snippets \ 143 | && git clone --depth 1 https://github.com/derekwyatt/vim-scala \ 144 | && git clone --depth 1 https://github.com/christoomey/vim-tmux-navigator \ 145 | && git clone --depth 1 https://github.com/ekalinin/Dockerfile.vim \ 146 | # Theme 147 | && git clone --depth 1 \ 148 | https://github.com/altercation/vim-colors-solarized 149 | 150 | # Build default .vimrc 151 | RUN mv -f $UHOME/.vimrc $UHOME/.vimrc~ \ 152 | && curl -s \ 153 | https://raw.githubusercontent.com/amix/vimrc/master/vimrcs/basic.vim \ 154 | >> $UHOME/.vimrc~ \ 155 | && curl -s \ 156 | https://raw.githubusercontent.com/amix/vimrc/master/vimrcs/extended.vim \ 157 | >> $UHOME/.vimrc~ \ 158 | && cat $UHOME/my.vimrc \ 159 | >> $UHOME/.vimrc~ \ 160 | && rm $UHOME/my.vimrc \ 161 | && sed -i '/colorscheme peaksea/d' $UHOME/.vimrc~ 162 | 163 | # Pathogen help tags generation 164 | RUN vim -E -c 'execute pathogen#helptags()' -c q ; return 0 165 | 166 | ENV TERM=xterm-256color 167 | 168 | # List of Vim plugins to disable 169 | ENV DISABLE="" 170 | 171 | ENTRYPOINT ["sh", "/usr/local/bin/run"] 172 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 2 | " Huge thanks to "Amir Salihefendic" : https://github.com/amix 3 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4 | 5 | " It will be prepended with https://github.com/amix/vimrc/tree/master/vimrcs (basic.vim extended.vim) 6 | 7 | 8 | """""""""""""""""""""""""""""" 9 | " => bufExplorer plugin 10 | """""""""""""""""""""""""""""" 11 | let g:bufExplorerDefaultHelp=0 12 | let g:bufExplorerShowRelativePath=1 13 | let g:bufExplorerFindActive=1 14 | let g:bufExplorerSortBy='name' 15 | map o :BufExplorer 16 | 17 | 18 | """""""""""""""""""""""""""""" 19 | " => MRU plugin 20 | """""""""""""""""""""""""""""" 21 | let MRU_Max_Entries = 400 22 | map f :MRU 23 | 24 | 25 | """""""""""""""""""""""""""""" 26 | " => YankRing 27 | """""""""""""""""""""""""""""" 28 | let g:yankring_history_dir = '/home/developer/.vim_runtime/temp_dirs' 29 | 30 | 31 | """""""""""""""""""""""""""""" 32 | " => CTRL-P 33 | """""""""""""""""""""""""""""" 34 | let g:ctrlp_working_path_mode = 0 35 | 36 | let g:ctrlp_map = '' 37 | map j :CtrlP 38 | map :CtrlPBuffer 39 | 40 | let g:ctrlp_max_height = 20 41 | let g:ctrlp_custom_ignore = 'node_modules\|^\.DS_Store\|^\.git\|^\.coffee' 42 | 43 | 44 | """""""""""""""""""""""""""""" 45 | " => Vim grep 46 | """""""""""""""""""""""""""""" 47 | let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated' 48 | set grepprg=/bin/grep\ -nH 49 | 50 | 51 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 52 | " => Nerd Tree 53 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 54 | let g:NERDTreeWinPos = "right" 55 | let g:NERDTreeWinSize=50 56 | map nn :NERDTreeToggle 57 | map nb :NERDTreeFromBookmark 58 | map nf :NERDTreeFind 59 | let NERDTreeShowHidden=1 60 | 61 | 62 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 63 | " => Nerd Tree Tabs 64 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 65 | 66 | 67 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 68 | " => TagBar 69 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 70 | nmap :TagbarToggle 71 | 72 | 73 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 74 | " => vim-go 75 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 76 | au FileType go nmap r (go-run) 77 | au FileType go nmap b (go-build) 78 | au FileType go nmap t (go-test) 79 | au FileType go nmap c (go-coverage) 80 | au FileType go nmap ds (go-def-split) 81 | au FileType go nmap dv (go-def-vertical) 82 | au FileType go nmap dt (go-def-tab) 83 | au FileType go nmap gd (go-doc) 84 | au FileType go nmap gv (go-doc-vertical) 85 | au FileType go nmap s (go-implements) 86 | au FileType go nmap i (go-info) 87 | au FileType go nmap e (go-rename) 88 | 89 | let g:go_highlight_functions = 1 90 | let g:go_highlight_methods = 1 91 | let g:go_highlight_structs = 1 92 | let g:go_highlight_operators = 1 93 | let g:go_highlight_build_constraints = 1 94 | 95 | 96 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 97 | " => vim-multiple-cursors 98 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 99 | let g:multi_cursor_use_default_mapping=0 100 | 101 | " Default mapping 102 | let g:multi_cursor_start_word_key = '' 103 | let g:multi_cursor_select_all_word_key = '' 104 | let g:multi_cursor_start_key = 'g' 105 | let g:multi_cursor_select_all_key = 'g' 106 | let g:multi_cursor_next_key = '' 107 | let g:multi_cursor_prev_key = '' 108 | let g:multi_cursor_skip_key = '' 109 | let g:multi_cursor_quit_key = '' 110 | 111 | 112 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 113 | " => surround.vim config 114 | " Annotate strings with gettext http://amix.dk/blog/post/19678 115 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 116 | vmap Si S(i_f) 117 | au FileType mako vmap Si S"i${ _(2f"a) } 118 | 119 | 120 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 121 | " => Vim-Airline 122 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 123 | " Always show statusline 124 | set laststatus=2 125 | 126 | 127 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 128 | " => buffer switch 129 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 130 | nnoremap . :bn 131 | nnoremap , :bp 132 | 133 | 134 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 135 | " => color and theme 136 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 137 | set background=dark 138 | colorscheme solarized 139 | set relativenumber 140 | set number 141 | 142 | 143 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 144 | " => Snippets 145 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 146 | let g:UltiSnipsExpandTrigger="" 147 | let g:UltiSnipsJumpForwardTrigger="" 148 | let g:UltiSnipsJumpBackwardTrigger="" 149 | let g:UltiSnipsEditSplit="vertical" 150 | 151 | 152 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 153 | " => undotree 154 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 155 | nnoremap :UndotreeToggle 156 | 157 | 158 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 159 | " => Set Vim working directory to the current location 160 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 161 | set autochdir 162 | 163 | 164 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 165 | " => Set Tabular 166 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 167 | let mapleader=',' 168 | if exists(":Tabularize") 169 | nmap a= :Tabularize /= 170 | vmap a= :Tabularize /= 171 | nmap a: :Tabularize /:\zs 172 | vmap a: :Tabularize /:\zs 173 | endif 174 | 175 | 176 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 177 | " => Indent Guides 178 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 179 | let g:indent_guides_enable_on_vim_startup = 1 180 | let g:indent_guides_guide_size = 1 181 | nmap :IndentGuidesToggle 182 | set ts=2 sw=2 et 183 | 184 | 185 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 186 | " => UTF-8 187 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 188 | set encoding=utf-8 189 | 190 | 191 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 192 | " => tagbar TypeScript 193 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 194 | let g:tagbar_type_typescript = { 195 | \ 'ctagstype': 'typescript', 196 | \ 'kinds': [ 197 | \ 'c:classes', 198 | \ 'n:modules', 199 | \ 'f:functions', 200 | \ 'v:variables', 201 | \ 'v:varlambdas', 202 | \ 'm:members', 203 | \ 'i:interfaces', 204 | \ 'e:enums', 205 | \ ] 206 | \ } 207 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #### `jare/vim-bundle:latest` 2 | 3 | [![](http://i.imgur.com/G6KybVM.png)](http://i.imgur.com/G6KybVM.png) 4 | 5 | #### [For the more *"IDE like experience"* try `jare/drop-in`](https://hub.docker.com/r/jare/drop-in/) 6 | [![](http://i.imgur.com/RVTlBBO.png)](http://i.imgur.com/RVTlBBO.png) 7 | 8 | #### [Or Vim/Emacs hybrid `jare/spacemacs`](https://hub.docker.com/r/jare/spacemacs/) 9 | [![](https://raw.githubusercontent.com/syl20bnr/spacemacs/master/doc/img/spacemacs-python.png)](https://raw.githubusercontent.com/syl20bnr/spacemacs/master/doc/img/spacemacs-python.png) 10 | 11 | #### Based on ["The Ultimate vimrc"](https://github.com/amix/vimrc) 12 | *Make sure to use "Solarized Dark" compatible theme or color palette may look weird.* 13 | *You can configure terminal color mode by setting TERM variable `docker run ... -e TERM= jare/vim-bundle ` 14 | By default the `` is `xterm-256color` but for the "less colorful" terminals set it to `xterm`.* 15 | ###### **The best way to use:** 16 | **Make an alias:** 17 | `alias edit='docker run -ti --rm -v $(pwd):/home/developer/workspace jare/vim-bundle'` 18 | **Have fun!** `edit some.file` 19 | *Also You can use this one for getting updates:* `alias edit_update="docker pull jare/vim-bundle:latest"` 20 | ###### **How to disable some plugins:** 21 | `docker run ... -e DISABLE="'vim-airline', 'nerdtree'" ... jare/vim-bundle` 22 | ###### **How to add your plugins and .vimrc:** 23 | 1. Create a folder with your `.vimrc` file and, if you want to add plugins, subfolder called `bundle` with them. 24 | 2. mount it: `docker run ... -v <***>/my-stuff:/ext/ ... jare/vim-bundle` 25 | *But the best way will be extending this container.* 26 | 27 | ###### **Plugins:** 28 | 1. [Airline](https://github.com/bling/vim-airline) *Lean & mean status/tabline for vim that's light as air* 29 | 2. [Tagbar](https://github.com/majutsushi/tagbar) *Plugin that displays tags in a window, ordered by scope* 30 | 3. [EasyGrep](https://github.com/vim-scripts/EasyGrep) *Fast and Easy Find and Replace Across Multiple Files* 31 | 4. [Bufexplorer](https://github.com/jlanzarotta/bufexplorer) *BufExplorer Plugin for Vim* 32 | 5. [CtrlP](https://github.com/kien/ctrlp.vim) *Fuzzy file, buffer, mru, tag, ... finder with regexp support* 33 | 6. [The NERD Tree](https://github.com/scrooloose/nerdtree) *A tree explorer plugin for vim* 34 | 7. [NERDTree tabs](https://github.com/jistr/vim-nerdtree-tabs) *NERDTree and tabs together in Vim, painlessly* 35 | 8. [Syntastic](https://github.com/scrooloose/syntastic) *Syntax checking hacks for vim* 36 | 9. [Vim-Scala](https://github.com/derekwyatt/vim-scala) *Integration of Scala into Vim - not a ton here, but useful* 37 | 10. [Solarized Colorscheme for Vim](https://github.com/altercation/vim-colors-solarized) *Solarized Colorscheme* 38 | 11. [Taglist](https://github.com/vim-scripts/taglist.vim) *Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)* 39 | 12. [Vim-expand-region](https://github.com/terryma/vim-expand-region) *Visual selection of increasingly larger regions using the same key combination* 40 | 13. [Fugitive](https://github.com/tpope/vim-fugitive) *fugitive.vim: a Git wrapper so awesome, it should be illegal* 41 | 14. [Gitgutter](https://github.com/airblade/vim-gitgutter) *Plugin which shows a git diff in the gutter (sign column) and stages/reverts hunks* 42 | 15. [Vim-go](https://github.com/fatih/vim-go) *Go development plugin for Vim* 43 | 16. [Vim-markdown](https://github.com/plasticboy/vim-markdown) *Vim Markdown runtime files* 44 | 17. [Vim-indent-object](https://github.com/michaeljsmith/vim-indent-object) *Defines a new text object representing lines of code at the same indent level* 45 | 18. [Vim-multiple-cursor](https://github.com/terryma/vim-multiple-cursors) *True Sublime Text style multiple selections for Vim* 46 | 29. [Vim-repeat](https://github.com/tpope/vim-repeat) *Enable to repeat last change by non built-in commands* 47 | 20. [Vim-surround](https://github.com/tpope/vim-surround) *surround.vim: quoting/parenthesizing made simple* 48 | 21. [The Most Recently Used (MRU)](https://github.com/vim-scripts/mru.vim) *Plugin to manage Most Recently Used (MRU) files* 49 | 22. [YankRing](https://github.com/vim-scripts/YankRing.vim) *Maintains a history of previous yanks, changes and deletes* 50 | 23. [Vim-HAML](https://github.com/tpope/vim-haml) *Vim runtime files for Haml, Sass, and SCSS* 51 | 24. [snipMate & UltiSnip Snippets](https://github.com/honza/vim-snippets) *vim-snipmate default snippets (Previously snipmate-snippets)* 52 | 25. [Easymotion](https://github.com/easymotion/vim-easymotion) *Vim motions on speed!* 53 | 26. [Undotree](https://github.com/mbbill/undotree) *The ultimate undo history visualizer for VIM* 54 | 27. [Vim-javascript](https://github.com/pangloss/vim-javascript) *Vastly improved Javascript indentation and syntax support in Vim.* 55 | 28. [NerdCommenter](https://github.com/scrooloose/nerdcommenter) *Plugin for intensely orgasmic commenting* 56 | 39. [Tabular](https://github.com/godlygeek/tabular) *Script for text filtering and alignment* 57 | 30. [DelimitMate](https://github.com/Raimondi/delimitMate) *Plugin, provides insert mode auto-completion for quotes, parens, brackets, etc.* 58 | 31. [Vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides) *A Vim plugin for visually displaying indent levels in code* 59 | 32. [Vim-less](https://github.com/groenewege/vim-less) *vim syntax for LESS (dynamic CSS)* 60 | 33. [HTML5.vim](https://github.com/othree/html5.vim) *HTML5 omnicomplete and syntax* 61 | 34. [Vim-json](https://github.com/elzr/vim-json) *Syntax highlighting for JSON in Vim* 62 | 35. [Vim-addon-mw-utils](https://github.com/marcweber/vim-addon-mw-utils) *vim: interpret a file by function and cache file automatically* 63 | 36. [Tlib](https://github.com/tomtom/tlib_vim) *Some utility functions for VIM* 64 | 37. [Vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator) *to navigate seamlessly between vim and tmux splits using a consistent set of hotkeys* 65 | 38. [UltiSnips](https://github.com/SirVer/ultisnips) The ultimate snippet solution for Vim! 66 | 39. [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) Fast, as-you-type, fuzzy-search code completion 67 | 40. [Vimproc.vim](https://github.com/Shougo/vimproc.vim) Interactive command execution in Vim 68 | 42. [Dockerfile.vim](https://github.com/ekalinin/Dockerfile.vim) syntax file for Docker's Dockerfile and snippets for snipMate 69 | 70 | *[.vimrc](https://github.com/JAremko/alpine-vim/blob/master/.vimrc)* 71 | 72 | ###### **Working with Golang:** 73 | - For the full Golang support you need to mount `/usr/lib/go`. For example, run [`jare/go-tools`](https://hub.docker.com/r/jare/go-tools/) in the detached mode `docker create -v /usr/lib/go --name vim-go-tools jare/go-tools /bin/true` and mount its volumes like this `docker run ... --volumes-from vim-go-tools ... jare/vim-bundle` or add it to the alias `alias edit="docker run -ti --rm --volumes-from go-tools -v $(pwd):/home/developer/workspace jare/vim-bundle"` 74 | - If you want to use a [go-tool](https://hub.docker.com/r/jare/go-tools/) , but [vim-go](https://github.com/fatih/vim-go) doesn't provide a shorthand - you can simply type, for example, `:!gofmt %` and it will output formatted source of the current buffers(`%:p ` absolute file path, `%:h` head of the file name and `%:p:h` is the current directory). If you want to overwrite - use `:% ! gofmt %` The `gofmt` tool used as an example, actually, it covered in vim-go. 75 | 76 | ###### Alternatively, you can put something like this into .bashrc to automatically bootstrap all containers: 77 | 78 | ``` bash 79 | #docker vim-bundle 80 | function ed() { 81 | local dtc_id=$(docker ps -a -q --filter 'name=vim-go-tools') 82 | if [[ -z "${dtc_id}" ]]; then 83 | echo 'vim-go-tools container not found. Creating...' 84 | docker create -v '/usr/lib/go' --name 'vim-go-tools' \ 85 | 'jare/go-tools' '/bin/true' 86 | echo 'Done!' 87 | fi 88 | echo 'Starting Vim' 89 | docker run -ti --rm -p 8080:8080 --volumes-from 'vim-go-tools' \ 90 | -v $('pwd'):/home/developer/workspace 'jare/vim-bundle' "${@}" 91 | } 92 | export -f ed 93 | ``` 94 | ###### **Keep in mind:** 95 | - With something like GNOME terminal You should be able to: 96 | - drag and drop text into the Vim. 97 | - use mouse right button menu by holding `Shift`. 98 | - `` mapped to `,`. I use the basic mappings from the great [amix .vimrc](https://github.com/amix/vimrc/tree/master/vimrcs) 99 | - You can set the user with the ENV variables [in the Dockerfile](https://github.com/JAremko/alpine-vim/blob/master/Dockerfile#L3) 100 | - If Vim or Powerline doesn't look right in the tmux try `tmux -2` 101 | - If the Golang auto-complete doesn't work try `go install` package 102 | - **Leave a comment if you found a bug or if you have a suggestion** 103 | - **Any contribution are greatly appreciated as well as new runtime containers!** 104 | --------------------------------------------------------------------------------