Created
July 17, 2014 19:31
-
-
Save gfixler/505d9809ef925dd5502c to your computer and use it in GitHub Desktop.
gfixler on the history of Vim in #vim
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
04:22 < walt> hahaha, I love whem vim help talks about performance.. Can tell when it was originally written | |
04:22 < walt> "Vim does on-the-fly spell checking. To make this work fast the word list is | |
04:22 < walt> oh gosh | |
04:22 < dawik> i use airline. its pretty nice | |
04:22 < walt> loaded in memory. Thus this uses a lot of memory (1 Mbyte or more)." | |
04:22 < gfixler> dawik: me too | |
04:22 -!- bandini [~michele@97e50b0e.skybroadband.com] has quit [Ping timeout: 260 seconds] | |
04:22 < mozzarella> I just want a line that tells me the current buffer number and the total number of buffers | |
04:23 < mozzarella> does airline do that? | |
04:23 < gfixler> QED - the Quick EDitor was created at the University of California at Berkeley in the late 60s | |
04:23 < gfixler> Ken Thompson was part of that team | |
04:23 -!- Scall [~chat@unaffiliated/scall] has joined #vim | |
04:24 < gfixler> while working on QED, he used a paper he read from the 50s by a mathemetician - Stephen Cole Kleene - on regular sets | |
04:24 < gfixler> and he - Ken Thompson - implemented the first ever regular expression engine in QED in the late 60s | |
04:24 -!- lykinsbd [~lykinsbd@50.56.228.65] has quit [Ping timeout: 250 seconds] | |
04:24 < gfixler> around 1970 he rewrote QED in assembly on a PDP-11, calling it ed, the EDitor | |
04:24 -!- ARM9 [~ARM9@46-236-101-75.customer.t3.se] has joined #vim | |
04:25 < mozzarella> the standard editor? | |
04:25 -!- Cakey [~miku@180.191.22.119] has quit [Ping timeout: 256 seconds] | |
04:25 < gfixler> being in assembly, and coming from a pre-K&R world, it was not memory-safe, so almost no plugins were written for it | |
04:25 < ARM9> what standard editor | |
04:25 < gfixler> mozzarella: yep | |
04:25 < gfixler> Ken helped create Unix, and much of the work was done in ed | |
04:25 -!- jbroome_ is now known as jbroome | |
04:25 < gfixler> and ed was one of the first programs you could use on Unix | |
04:26 < ARM9> ah, we talking ed | |
04:26 < mozzarella> I have never used ed, looks painful to use to be honest | |
04:26 < gfixler> then half a decade later, in 1976, Bill Joy rewrote ed in the now post-K&R world, in C | |
04:26 < gfixler> it was memory safe, so you could write plugins without constantly stomping on the editor's memory space | |
04:26 -!- hx0x [~hx0x@p4FE76E42.dip0.t-ipconnect.de] has joined #vim | |
04:26 < gfixler> he called it ex, for the EXtended editor | |
04:27 < gfixler> it seems like pretty much at the same time he also started building a screen mode for it | |
04:27 < gfixler> up to the point editing and coding was being done on teletype machines | |
04:27 < gfixler> the first of these appeared around 1901, funded by Joy Morton of the Morton Salt Company | |
04:27 < gfixler> they were typewriters that could hook to each other over telephone lines | |
04:28 < gfixler> and if you typed on one, all the ones connected to it typed the same thing | |
04:28 < gfixler> it was like chatrooms | |
04:28 < ARM9> lol | |
04:28 < gfixler> many even had a button that you could press that would print out on your end all the other teletypes that were connected to you | |
04:28 < ARM9> I love little history lessons like these | |
04:28 -!- Pawka [~pawka@88-119-158-31.static.zebra.lt] has quit [Ping timeout: 240 seconds] | |
04:28 < gfixler> these were used by big business, like railroads and the AP | |
04:28 < ARM9> irc 1901 edition | |
04:29 < ARM9> wonder if anyone made a bot for it | |
04:29 < gfixler> yeah, they were basically typewriters - which started appearing in the 1700s or even earlier | |
04:29 < gfixler> mixed with morse code, which came along in the 1800s, IIRC | |
04:29 < osse> mozzarella: statusline is what you're after because it's the only thing you can freely customize | |
04:29 -!- solars [~solars@089144223204.atnat0032.highway.bob.at] has quit [Ping timeout: 250 seconds] | |
04:29 < gfixler> a couple of guys were like "Why don't we hook up typewriters to morse code so we can just type words? | |
04:29 < gfixler> and Joy Morton threw money at them | |
04:29 -!- cps0 [~cps0@las-gw.ic.unicamp.br] has joined #vim | |
04:30 < gfixler> so these things are almost gone now, but there were like 100s of 1000s of them by the 60s | |
04:30 < gfixler> all over the place | |
04:30 < gfixler> so in the 60s, when computers started to become a thing, and people were inputting information into them a byte at a time by flipping 8 switches to 0 and 1 positions, then pressing a button to input that byte | |
04:30 < gfixler> someone realized they should just adapt mainframes to understand teletypes | |
04:31 -!- Cakey [~miku@180.191.22.119] has joined #vim | |
04:31 < gfixler> which had been around for 60 years | |
04:31 < gfixler> so Unix was written that way | |
04:31 < gfixler> ed was a 'line editor' | |
04:31 < gfixler> because you were literally typing on paper | |
04:31 < gfixler> there was no screen, so there was no such thing as a cursor | |
04:31 < gfixler> when you wanted to see the line you were on, you would type p (and it would smack a p on the paper), then hit enter | |
04:31 -!- solars [~solars@089144223204.atnat0032.highway.bob.at] has joined #vim | |
04:31 < gfixler> and it would print out the line you were on | |
04:31 < gfixler> if you wanted to see a different line, you could type the number, like 17, and hit enter | |
04:32 < gfixler> it would take you to that line and print it out | |
04:32 -!- blackmesa [~blackmesa@aftr-37-201-227-226.unity-media.net] has quit [Ping timeout: 256 seconds] | |
04:32 < gfixler> this is ed I'm describing | |
04:32 -!- fayek [~fayek@foresight/developer/fayek] has joined #vim | |
04:32 < gfixler> this was line editing | |
04:32 -!- ircuser-1 [~ircuser-1@158.183-62-69.ftth.swbr.surewest.net] has joined #vim | |
04:32 -!- jceb [~jceb@mail.univention.de] has quit [Ping timeout: 240 seconds] | |
04:32 < gfixler> if you wanted to change line 7, you'd type 7c and hit enter | |
04:32 < gfixler> it would move you to line 7, erase it from memory, and you could start typing | |
04:32 -!- thetet [~raggam-nl@80.110.233.167] has quit [Quit: Leaving.] | |
04:32 < gfixler> you could keep adding lines, too | |
04:32 -!- NuckingFuts [~Nuck@oftn/member/Nuck] has quit [Ping timeout: 256 seconds] | |
04:32 < gfixler> until you hit enter, then a period, then another enter | |
04:32 < gfixler> that would exit the insert mode | |
04:32 < gfixler> there was no escape key | |
04:33 < gfixler> there also weren't capital letters | |
04:33 < gfixler> I mean there weren't lower case | |
04:33 < gfixler> there were only capitals | |
04:33 < gfixler> so Ken Thompson reimplemented regex in ed | |
04:33 < gfixler> you could type s/find/replace, and it would find find and replace it with replace on the current line | |
04:34 < gfixler> you could do that on a different line: 7s/find/replace, or on a range: 7,10s/find/replace | |
04:34 < gfixler> there were shortcuts - 0,$s/find/replace would do the whole document | |
04:34 < gfixler> and 0,$ had a shortcut, too - % | |
04:34 < gfixler> all of this is still in Vim | |
04:34 -!- jingtaoliu [~technommy@113.91.74.32] has joined #vim | |
04:34 -!- endiruna [~endiendir@79.98.116.151] has joined #vim | |
04:34 < gfixler> you could print out a bunch of lines with 3,8p | |
04:34 < gfixler> which also works in vim | |
04:35 < gfixler> :3,10p | |
04:35 < gfixler> try it | |
04:35 -!- nuck [~Nuck@oftn/member/Nuck] has joined #vim | |
04:35 -!- bandini [~michele@97e50b0e.skybroadband.com] has joined #vim | |
04:35 < gfixler> there was also :8,20n | |
04:35 < gfixler> that did the same thing, but put the line numbers in front of the lines, followed by a tab | |
04:35 -!- Munchor [uid11547@gateway/web/irccloud.com/x-joeigjsiyspwymng] has joined #vim | |
04:35 < walt> writing unix musst have been real fun | |
04:35 < gfixler> that's also still in Vim, but you can't use n any more | |
04:35 < osse> gfixler: in vim there's now :# instread of :n | |
04:35 < gfixler> you have to use #, e.g. :3,10# | |
04:35 < gfixler> osse - right! | |
04:36 -!- Cakey [~miku@180.191.22.119] has quit [Remote host closed the connection] | |
04:36 < gfixler> I forget what n does now | |
04:36 < gfixler> next? | |
04:36 < osse> oui | |
04:36 < gfixler> cool | |
04:36 < ARM9> I use :n to open a bunch of files at once | |
04:36 -!- Soda [~user@31.40.45.168] has quit [Remote host closed the connection] | |
04:36 < ARM9> :n src/** | |
04:36 < gfixler> there was also global, e.g. g/find/action | |
04:36 < gfixler> that would find find and do action on each line | |
04:37 < gfixler> the manual supposedly listed a very common example: g/re/p | |
04:37 < gfixler> which would find 're' (your regular expression) and p (print/put) each line that matched | |
04:37 < gfixler> which would literally type out each matching line on the paper in your teletype machine | |
04:37 < gfixler> Ken Thompson later took the code for global and ripped it out | |
04:37 -!- Cakey [~miku@180.191.22.119] has joined #vim | |
04:37 < gfixler> and made grep, which does what g/re/p did in ed | |
04:38 < gfixler> it finds the lines that match your regex and prints them out | |
04:38 < gfixler> it's a filter | |
04:38 < gfixler> specifically, it's a 'stream editor' | |
04:38 < gfixler> you can't move around and make decisions - stream editors take some actions and then perform them on a stream of text passing through them | |
04:38 < gfixler> so terminals were appearing - CRTs | |
04:39 < tek0> are you on cocaine? | |
04:39 < gfixler> and Bill Joy was porting the assembly ed to the C ex | |
04:39 < mozzarella> were there other operating system popular at the time? other than unix | |
04:39 < gfixler> and decided to make a visual version that would have a cursor | |
04:39 < gfixler> this would be a screen editro | |
04:39 < gfixler> editor* | |
04:39 < gfixler> he called it vi for the VIsual editor | |
04:40 < gfixler> it started as a symlink to ex | |
04:40 < gfixler> and grew from there | |
04:40 < gfixler> ex and vi were built simultaneously around '76 | |
04:40 -!- moritzs [~moritz@p5DDB806F.dip0.t-ipconnect.de] has quit [Quit: Verlassend] | |
04:41 -!- sideb00b [~sideb00b@151.76.83.59] has joined #vim | |
04:41 < gfixler> then in 89 or so, Bram Moolenaar ported a port of vi (the Atari ST version, IIRC) to the Amiga | |
04:41 < gfixler> vim initially stood for VI IMitation | |
04:41 < gfixler> but a year later, it started to get more serious, so he renamed it VI IMproved | |
04:42 < gfixler> mozzarella: yes, it was a mix of things | |
04:42 < gfixler> lots of OSes, because they were very small, and it was possible for one person or a few people to make them in not too long a time period | |
04:42 -!- Pawka [~pawka@88-119-158-31.static.zebra.lt] has joined #vim | |
04:42 < gfixler> which made things crazy - apparently it felt like every computer ran its own unique thing | |
04:43 < gfixler> tek0: mods are asleep, post history lessons | |
04:43 -!- Cakey [~miku@180.191.22.119] has quit [Ping timeout: 250 seconds] | |
04:43 < gfixler> so ex was hugely popular, because it was memory-safe - literally hundreds of plugins were written for it | |
04:43 < mozzarella> why couldn't you use vi on a amiga? | |
04:43 < walt> gfixler: which would make sense as if you are making a computer, with some specific hardware, and making an OS is not a big task, then it's more streamlined to just develop the software for your hardware also | |
04:43 < ProfOak_> So I've been afk most of this time, but I have been enjoying this story time | |
04:44 -!- m3nTe [~root@unaffiliated/m3nte] has quit [Ping timeout: 240 seconds] | |
04:44 < gfixler> and regular expressions, global, ranges, range shortcuts, and the 'language' of text manipulation have been around since the late 60s | |
04:44 < mozzarella> was it not written in portable C? | |
04:44 -!- Cakey [~miku@180.191.22.119] has joined #vim | |
04:44 < gfixler> QED -> ed -ex -vi -Vim | |
04:44 < gfixler> ProfOak_: glad you liked it | |
04:44 < gfixler> walt: agreed | |
04:44 < ProfOak_> are you batman? | |
04:44 < gfixler> haha | |
04:44 < gfixler> batman uses emacs :( | |
04:45 < ProfOak_> lol... | |
04:45 -!- ggVGc [~brzzm@unaffiliated/walt] has quit [Read error: Connection reset by peer] | |
04:45 < FernandoBasso> And he controls his bat vehicle from emacs. Vim is unable to do that. | |
04:45 -!- quaisi [~simon@host-92-21-45-26.as13285.net] has joined #vim | |
04:46 -!- ProfOak_ [~Oak@c-24-12-170-28.hsd1.il.comcast.net] has quit [Quit: WeeChat 0.4.3] | |
04:46 < walt> FernandoBasso: because it lacks real async operations :( | |
04:46 < walt> life is hard for batman | |
04:46 < sven^> hey guys.. I have a server where I cannot access /usr/share/vim, so I did a let $VIMRUNTIME='~/.vimshare/' on top of my .vimrc. It seemed to work at first but then I realized that the colurschemes just don't do anything anymore. How can I debug that? | |
04:46 < gfixler> he has very strong wrists - they can handle all the chords | |
04:46 -!- arup_r [~arup_r@122.167.100.202] has quit [Remote host closed the connection] | |
04:47 -!- jceb [~jceb@80.156.167.146] has joined #vim | |
04:47 < gfixler> sven^: put your color schemes in that directory? | |
04:48 -!- DaneoShiga [uid12466@gateway/web/irccloud.com/x-rcvwlcteyzqpfeep] has joined #vim | |
04:49 < Zeedox> M-bat-c solve-crime | |
04:49 < gfixler> I need a bat key |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment