{"id":21986,"date":"2024-05-16T02:04:17","date_gmt":"2024-05-16T00:04:17","guid":{"rendered":"https:\/\/tuxproject.de\/blog\/2024\/05\/wie-ich-einmal-dem-historischen-vi-nachforschte-und-alle-davon-profitierten\/"},"modified":"2024-05-17T22:31:34","modified_gmt":"2024-05-17T20:31:34","slug":"wie-ich-einmal-dem-historischen-vi-nachforschte-und-alle-davon-profitierten","status":"publish","type":"post","link":"https:\/\/tuxproject.de\/blog\/2024\/05\/wie-ich-einmal-dem-historischen-vi-nachforschte-und-alle-davon-profitierten\/","title":{"rendered":"Wie ich ein\u00admal dem histo\u00adri\u00adschen vi nach\u00adforsch\u00adte (und alle davon pro\u00adfi\u00adtier\u00adten)"},"content":{"rendered":"\n<p>Vim \u2013 der die\u00adser Tage meist\u00adver\u00adwen\u00adde\u00adte Nach\u00adbau des BSD-Text\u00adedi\u00adtors vi \u2013 ist bekannt\u00adlich ein Text\u00adedi\u00adtor mit reich\u00adhal\u00adti\u00adgem histo\u00adri\u00adschem <em>Bal\u00adlast<\/em>; immer\u00adhin gehen sei\u00adne Urspr\u00fcn\u00adge auf die Arbeit von Bill Joy, F\u00fch\u00adrungs\u00adfi\u00adgur der fr\u00fc\u00adhen BSD-Ver\u00adsio\u00adnen, zur\u00fcck. Ich bin nicht v\u00f6l\u00adlig unzu\u00adfrie\u00adden damit, das Erbe des ver\u00adstor\u00adbe\u00adnen Bram Moo\u00adlen\u00adaar fort\u00adzu\u00adf\u00fch\u00adren, indem ich eine <a href=\"https:\/\/groups.google.com\/g\/vim_dev\/c\/e2v2bO2ssAE\/m\/fE7ubEL9YVcJ\">auf sei\u00adnen Wunsch hin<\/a> ent\u00adstan\u00adde\u00adne Win\u00addows\u00adver\u00adsi\u00adon <a href=\"https:\/\/tuxproject.de\/projects\/vim\/\">bis heu\u00adte<\/a> pfle\u00adge.<\/p>\n\n\n\n\n<p>Nun hat Vim den histo\u00adri\u00adschen <em>Bal\u00adlast<\/em> von vi nie\u00admals v\u00f6l\u00adlig abge\u00adwor\u00adfen, und so ist es immer noch zumin\u00addest theo\u00adre\u00adtisch m\u00f6g\u00adlich, eine Kon\u00adfi\u00adgu\u00adra\u00adti\u00adons\u00adda\u00adtei aus vi in Vim zu nut\u00adzen. Dabei ist es neue\u00adren Ent\u00adwick\u00adlun\u00adgen (und bis\u00adwei\u00adlen bewuss\u00adten Ent\u00adschei\u00addun\u00adgen) geschul\u00addet, dass man\u00adche Optio\u00adnen schlicht ent\u00adfal\u00adlen sind. Der <em>alte<\/em> vi lief auf Hard\u00adware, die heu\u00adte kaum mehr exi\u00adstiert, ent\u00adspre\u00adchend war er in man\u00adcher Hin\u00adsicht <em>anders<\/em> kon\u00adfi\u00adgu\u00adriert als das heu\u00adti\u00adge Vim. In Vim gibt es daher bis heu\u00adte \u2013 <code>:help vi-differences<\/code> \u2013 eine <a href=\"https:\/\/github.com\/vim\/vim\/blob\/b4ddc6c11e95cef4b372e239871fae1c8d4f72b6\/runtime\/doc\/vi_diff.txt\">infor\u00adma\u00adti\u00adve Hilf\u00ade\u00adsei\u00adte<\/a>, die \u00fcber die Unter\u00adschie\u00adde infor\u00admiert.<\/p>\n\n\n\n\n<p>Zu die\u00adsen Unter\u00adschie\u00adden z\u00e4h\u00adlen auch Optio\u00adnen, die mitt\u00adler\u00adwei\u00adle nicht mehr vor\u00adhan\u00adden sind (und deren Vor\u00adhan\u00adden\u00adsein inso\u00adfern fol\u00adgen\u00adlos bleibt). <code>beautify<\/code> zum Bei\u00adspiel \u2013 Stan\u00addard: aus. <code>open<\/code> \u2013 Stan\u00addard: an. Und <code>flash<\/code> \u2013 Stan\u00addard: unbe\u00adkannt. <em>Moooooo\u00adment.<\/em> <!--more-->So etwas f\u00fct\u00adtert immer mei\u00adnen nat\u00fcr\u00adli\u00adchen Jagd\u00adtrieb. Ande\u00adre M\u00e4n\u00adner gehen tan\u00adzen und bag\u00adgern, ich gehe alten Quell\u00adcode lesen. Es galt her\u00adaus\u00adzu\u00adfin\u00adden, wie die Stan\u00addard\u00adein\u00adstel\u00adlung der <code>flash<\/code>-Opti\u00adon lau\u00adte\u00adte. Wegen der Doku\u00admen\u00adta\u00adti\u00adon. Ist wich\u00adtig.<\/p>\n\n\n\n\n<p>Man soll\u00adte dazu wis\u00adsen, dass vi als Erwei\u00adte\u00adrung des nicht gra\u00adfi\u00adschen Text\u00adedi\u00adtors ex von Bill Joy, den ich ja bereits erw\u00e4hnt habe, als Teil von des\u00adsen Pro\u00adgramm\u00adsamm\u00adlung f\u00fcr Unix, der \u201eBer\u00adke\u00adley Soft\u00adware Dis\u00adtri\u00adbu\u00adti\u00adon\u201c (BSD), ent\u00adwickelt wor\u00adden war. Die fr\u00fc\u00adhen Unix- und BSD-Ver\u00adsio\u00adnen sind <a href=\"https:\/\/www.tuhs.org\/cgi-bin\/utree.pl\">erfreu\u00adlich voll\u00adst\u00e4n\u00addig<\/a> doku\u00admen\u00adtiert, doch eine Opti\u00adon f\u00fcr <code>flash<\/code> ist nicht zu fin\u00adden; selbst in <a href=\"https:\/\/www.tuhs.org\/cgi-bin\/utree.pl?file=V10\/cmd\/ex\/ex_data.c\">V10 UNIX<\/a>, der letz\u00adten Ver\u00adsi\u00adon von Unix, bevor des\u00adsen Sch\u00f6p\u00adfer mit Plan 9 ein grund\u00adle\u00adgend neu\u00ades System zu ent\u00adwickeln begon\u00adnen hat\u00adten, ist die Opti\u00adon nicht zu fin\u00adden, wohl aber in den bis\u00adher letz\u00adten <a href=\"https:\/\/ex-vi.sourceforge.net\">Ver\u00adsio\u00adnen von ex\/vi<\/a>, deren Ursprung auf ver\u00adschie\u00adde\u00adne Vari\u00adan\u00adten von vi zur\u00fcck\u00adgeht. F\u00fcn\u00addig wur\u00adde ich schlie\u00df\u00adlich im <a href=\"https:\/\/github.com\/ryanwoodsmall\/oldsysv\/blob\/master\/sysvr2-vax\/src\/cmd\/vi\/vax\/ex_data.c\">Quell\u00adcode von SVR2<\/a> (\u201eSystem V Release 2\u201c), das 1984 von AT&amp;T f\u00fcr den Super\u00admi\u00adni\u00adcom\u00adpu\u00adter VAX-11\/780 ver\u00ad\u00f6f\u00adfent\u00adlicht wor\u00adden war; dort \u2013 anders als in der ersten Ver\u00adsi\u00adon von System V \u2013 tauch\u00adte die Opti\u00adon <code>flash<\/code>, stan\u00addard\u00adm\u00e4\u00ad\u00dfig \u201ean\u201c (also \u201e1\u201c), <em>anschei\u00adnend<\/em> erst\u00admals auf. Das ergibt durch\u00adaus Sinn, weil gra\u00adfi\u00adsche Anzei\u00adgen damals noch eine recht neue Erschei\u00adnung waren und das <a href=\"https:\/\/github.com\/ryanwoodsmall\/oldsysv\/blob\/master\/sysvr2-vax\/src\/cmd\/vi\/vax\/ex_vget.c#L375\">Auf\u00adblit\u00adzen des Bild\u00adschirms<\/a> inso\u00adfern nicht als tech\u00adnisch m\u00f6g\u00adlich vor\u00adaus\u00adge\u00adsetzt wer\u00adden konn\u00adte.<\/p>\n\n\n\n\n<p>In Vim 9.1.0413 ist die\u00adse L\u00fccke in der Vim\u00addo\u00adku\u00admen\u00adta\u00adti\u00adon inso\u00adfern beho\u00adben wor\u00adden. Die \u00c4nde\u00adrung <a href=\"https:\/\/github.com\/vim\/vim\/commit\/93e0d2e815178dc6e396388eb85eef1b8b1f2ef0\">ist recht klein<\/a>, und ich gehe davon aus, dass kaum jemand sie \u00fcber\u00adhaupt bemer\u00adken wird. Um sie anzu\u00adre\u00adgen, hat der Autor die\u00adser Zei\u00adlen aller\u00addings meh\u00adre\u00adre Stun\u00adden Arbeit inve\u00adstiert und dabei viel \u00fcber die Unter\u00adschie\u00adde zwi\u00adschen den ver\u00adschie\u00adde\u00adnen Ent\u00adwick\u00adlungs\u00adzwei\u00adgen von Unix gelernt.<\/p>\n\n\n\n\n<p>Bit\u00adte\u00adsch\u00f6n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vim \u2013 der die\u00adser Tage meist\u00adver\u00adwen\u00adde\u00adte Nach\u00adbau des BSD-Tex\u00adt\u00ade\u00addi\u00adtors vi \u2013 ist bekannt\u00adlich ein Text\u00adedi\u00adtor mit reich\u00adhal\u00adti\u00adgem histo\u00adri\u00adschem Bal\u00adlast; immer\u00adhin gehen sei\u00adne Urspr\u00fcn\u00adge auf die Arbeit von Bill Joy, F\u00fch\u00adrungs\u00adfi\u00adgur der fr\u00fc\u00adhen BSD-Ver\u00ad\u00ad\u00adsio\u00ad\u00adnen, zur\u00fcck. Ich bin nicht v\u00f6l\u00adlig unzu\u00adfrie\u00adden damit, das Erbe des ver\u00adstor\u00adbe\u00adnen Bram Moo\u00adlen\u00adaar fort\u00adzu\u00adf\u00fch\u00adren, indem ich eine auf sei\u00adnen Wunsch hin ent\u00adstan\u00adde\u00adne \u2026<\/p>\n<p><a href=\"https:\/\/tuxproject.de\/blog\/2024\/05\/wie-ich-einmal-dem-historischen-vi-nachforschte-und-alle-davon-profitierten\/\" class=\"more-link\">\u2018Wie ich ein\u00admal dem histo\u00adri\u00adschen vi nach\u00adforsch\u00adte (und alle davon pro\u00adfi\u00adtier\u00adten)\u2019 wei\u00adter\u00adle\u00adsen \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[19],"tags":[],"series":[],"class_list":["post-21986","post","type-post","status-publish","format-standard","hentry","category-nerdkrams"],"share_on_mastodon":{"url":"https:\/\/social.tchncs.de\/@hirnfick_20\/112447842935305445","error":""},"wp-worthy-pixel":{"ignored":false,"public":"d0069eb5e34d47da888822e85ee45d21","server":"vg02.met.vgwort.de","url":"https:\/\/vg02.met.vgwort.de\/na\/d0069eb5e34d47da888822e85ee45d21"},"wp-worthy-type":"normal","_links":{"self":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts\/21986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/comments?post=21986"}],"version-history":[{"count":0,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts\/21986\/revisions"}],"wp:attachment":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/media?parent=21986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/categories?post=21986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/tags?post=21986"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/series?post=21986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}