Have you ever thought about why Vim is still used by many people for more than 20 years and did not fade out?
Reputations
Some people says:
I do not understand why there are people continue to use a fossil-like text editor.
Certainly, Vim is character-based text editor. if Vim was same as it was 20 years ago, your opinion would be correct. But you have to know that Vim is changing still now.
In the fact
In the fact, Vim improved many features without stopping.
Version5
- Add some GUIs including Win32 GUI
- Python/Perl infterface
- And many useful features
Version6
- Support UTF-8
- Vertical split
- Netrw
- Server-Client
- Quickfix
- And many useful features
Version7
- Spell checking
- Support MzScheme
- omni-completion
- Tab pages
- vimgrep
- And many useful features
Version8
- Asynchronous I/O support, channels and jobs, timers
- Partial function, Lambda/Closure function
- Packaging
- DirectX drawing
- GTK+ 3 support
Recently, Vim add new feature:terminal
. It is possible to open terminal window in Vim. Run the shell, watching log files, sending e-mail, start Emacs on the :terminal
. This feature gave us a lot of possibilities.
This feature was noted as not-good-design for Vim in :help design-not
. But the text is written in 20 years ago. Can you say that the design written in 20 years ago is always correct even in nowadays? Bram Moolenaar who is author of Vim decided to change the doc.
Vim is not a shell or an Operating System. It does provide a terminal window, in which you can run a shell or debugger. E.g. to be able to do this over an ssh connection. But if you don't need a text editor with that it is out of scope (use something like screen or tmux instead).
Interestingly, support for :terminal includes Windows. (FYI: I implemented windows :terminal, yay!)
You can use :terminal
on Windows GUI/CUI both to run Windows command-prompt. This doesn't depend on Cygwin/msys2. Just require winpty.dll and winpty-agent.exe, for the description, see the bottom of :help Terminal-mode
. You can use one window in Vim as if it is command prompt. To know more features of terminal, see :help terminal
.
Contributors
And you've better to know how may contributors send patches to vim-dev, we are discussing to fix bugs and add new features. For example, do you know how many commits in this october 2017?
- 8.0.1169 : highlignting one char too many with 'list' and 'cul'
- 8.0.1170 : using termdebug results in 100% CPU time
- 8.0.1171 : popup test is still a bit flaky
- 8.0.1172 : when E734 is given option is still set
- 8.0.1173 : terminal window is not redrawn after CTRL-L
- 8.0.1174 : Mac Terminal.app has wrong color for white
- 8.0.1175 : build failure without +termresponse
- 8.0.1176 : job_start() does not handle quote and backslash correctly
- 8.0.1177 : in a terminal window the popup menu is not cleared
- 8.0.1178 : using old compiler on MS-Windows
- 8.0.1179 : Test_popup_and_window_resize() does not always pass
- 8.0.1180 : MS-Windows testclean target deletes the color script
- 8.0.1181 : tests using Vim command fail on MS-Windows
- 8.0.1182 : cannot see or change mzscheme dll name
- 8.0.1183 : MS-Windows build instructions are outdated
- 8.0.1184 : the :marks command is not tested
- 8.0.1185 : Ruby library includes minor version number
- 8.0.1186 : still quite a few old style tests
- 8.0.1187 : building with lua fails for OSX on Travis
- 8.0.1188 : autocmd test fails on MS-Windows
- 8.0.1189 : E172 is not actually useful
- 8.0.1190 : unusable after opening new window in BufWritePre event
- 8.0.1191 : MS-Windows: missing 32 and 64 bit files in installer
- 8.0.1192 : MS-Windows: terminal feature not enabled by default
- 8.0.1193 : crash when wiping out a buffer after using getbufinfo()
- 8.0.1194 : actual fg and bg colors of terminal are unknown
- 8.0.1195 : can't build on MS-Windows
- 8.0.1196 : crash when t_RF is not set
- 8.0.1197 : MS-Windows build instructions are not up to date
- 8.0.1198 : older compilers don't know uint8_t
- 8.0.1199 : when 'clipboard' is "autoselectplus" star register is set
- 8.0.1200 : tests switch the bell off twice
- 8.0.1201 : "yL" is affected by 'scrolloff'
- 8.0.1202 : :wall gives an errof for a terminal window
- 8.0.1203 : terminal window mistreats composing characters
- 8.0.1204 : a QuitPre autocommand may get the wrong file name
- 8.0.1205 : it is possible to unload a changed buffer
- 8.0.1206 : no autocmd for entering or leaving the command line
- 8.0.1207 : profiling skips the first and last script line
- 8.0.1208 : 'statusline' drops empty group with highlight change
- 8.0.1209 : still too many old style tests
- 8.0.1210 : CTRL-G and CTRL-T are ignored with typeahead
- 8.0.1211 : cannot reorder tab pages with drag & drop
- 8.0.1212 : MS-Windows: tear-off menu does not work on 64 bit
- 8.0.1213 : setting 'mzschemedll' has no effect
- 8.0.1214 : accessing freed memory when EXITFREE is set
- 8.0.1215 : newer gcc warns for implicit fallthrough
- 8.0.1216 : tabline is not always updated for :file command
- 8.0.1217 : can't use remote eval to inspect vars in debug mode
- 8.0.1218 : writing to freed memory in autocmd
- 8.0.1219 : terminal test is flaky
- 8.0.1220 : skipping empty statusline groups is not correct
- 8.0.1221 : still too many old style tests
- 8.0.1222 : test functions interfere with each other
- 8.0.1223 : crash when using autocomplete and tab pages
- 8.0.1224 : still interference between test functions
- 8.0.1225 : no check for spell region being zero
- 8.0.1226 : edit and popup tests failing
- 8.0.1227 : undefined left shift in readfile()
- 8.0.1228 : invalid memory access in GUI test
- 8.0.1229 : condition in vim_str2nr() is always true
- 8.0.1230 : CTRL-A in Visual mode uses character after selection
- 8.0.1231 : expanding file name drops dash
- 8.0.1232 : MS-Windows users are confused about default mappings
- 8.0.1233 : typo in dos installer
- 8.0.1234 : MS-Windows: composing chars are not shown properly
- 8.0.1235 : cannot disable the terminal feature in a huge build
- 8.0.1236 : Mac features are confusing
- 8.0.1237 : ":set scroll&" often gives an error
- 8.0.1238 : incremental search only shows one match
- 8.0.1239 : cannot use a lambda for the skip argument to searchpair()
- 8.0.1240 : MS-Windows: term_start() does not support environment
This include adding features and fixing bugs. Can you say that development status of Vim is not active? Vim will continue to change and probably will not become a fossil.
Top comments (5)
Still love vim!
Thank you @mattn for all your awesome work on vim and go projects!
:terminal
is the biggest reason why I am using NeoVim at the moment. I really like navigating the terminal output with vim instead of using the mouse to copy text. Maybe I can switch back to standard vim soon now that it supports:terminal
.I'm still not a heavy user of :terminal. I'm investigating what I can do on :terminal. :)
The best about
:terminal
for me is that I can use vim controls to navigate and search output and also visual mode for copying output.Also really nice is that you can define shortcuts or macros that execute things in the terminal.
When I run
:terminal
in a vertical split I like to use it for things likego test
. Then I define a macro like thisqq^Li^P^M^[^Hq
and I can use@q
to re run the tests.I think it's also important to allow ESC key to get out of terminal mode:
And I use these shortcuts to quickly open a terminal:
DISCLAIMER FOR VIM NEWBIES:
I started to write quick tips and tutorials for Vim beginners, to help them deal with specific configs and get excited with tricks you can use.
You can check it on medium.com/vim-drops !
Cheers!✌️👨💻⌨️👩💻✌️
indeed. but I don't know Bill Joy have same design-not. :)