దాదాపు రెండు సంవత్సరాల అభివృద్ధి తర్వాత, Neovim 0.5 విడుదల చేయబడింది, Vim ఎడిటర్ యొక్క ఫోర్క్ విస్తరణ మరియు వశ్యతను పెంచడంపై దృష్టి సారించింది. ప్రాజెక్ట్ ఏడు సంవత్సరాలకు పైగా Vim కోడ్ బేస్ను పునర్నిర్మిస్తోంది, దీని ఫలితంగా కోడ్ నిర్వహణను సులభతరం చేసే మార్పులు చేయబడ్డాయి, అనేక మంది నిర్వహణదారుల మధ్య శ్రమను విభజించే సాధనాన్ని అందించడం, ఇంటర్ఫేస్ను బేస్ పార్ట్ నుండి వేరు చేయడం (ఇంటర్ఫేస్ కావచ్చు ఇంటర్నల్లను తాకకుండా మార్చబడింది) మరియు ప్లగిన్ల ఆధారంగా కొత్త ఎక్స్టెన్సిబుల్ ఆర్కిటెక్చర్ని అమలు చేయండి. ప్రాజెక్ట్ యొక్క అసలైన పరిణామాలు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడ్డాయి మరియు ప్రాథమిక భాగం Vim లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.
నియోవిమ్ యొక్క సృష్టిని ప్రేరేపించిన Vim తో ఉన్న సమస్యలలో ఒకటి దాని ఉబ్బిన, ఏకశిలా కోడ్ బేస్, ఇందులో 300 వేల కంటే ఎక్కువ లైన్ల C (C89) కోడ్ ఉంటుంది. కొంతమంది మాత్రమే Vim కోడ్బేస్ యొక్క అన్ని సూక్ష్మ నైపుణ్యాలను అర్థం చేసుకుంటారు మరియు అన్ని మార్పులు ఒక నిర్వహణదారుచే నియంత్రించబడతాయి, ఇది ఎడిటర్ను నిర్వహించడం మరియు మెరుగుపరచడం కష్టతరం చేస్తుంది. GUIకి మద్దతివ్వడానికి Vim కోర్లో అంతర్నిర్మిత కోడ్కు బదులుగా, Neovim యూనివర్సల్ లేయర్ని ఉపయోగించడాన్ని ప్రతిపాదిస్తుంది, ఇది వివిధ టూల్కిట్లను ఉపయోగించి ఇంటర్ఫేస్లను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది.
Neovim కోసం ప్లగిన్లు ప్రత్యేక ప్రక్రియలుగా ప్రారంభించబడ్డాయి, దీనితో MessagePack ఫార్మాట్ ఉపయోగించబడింది. ఎడిటర్ యొక్క ప్రాథమిక భాగాలను నిరోధించకుండా, ప్లగిన్లతో పరస్పర చర్య అసమకాలికంగా నిర్వహించబడుతుంది. ప్లగిన్ని యాక్సెస్ చేయడానికి, TCP సాకెట్ను ఉపయోగించవచ్చు, అనగా. ప్లగ్ఇన్ బాహ్య సిస్టమ్లో అమలు చేయబడుతుంది. అదే సమయంలో, Neovim Vimతో వెనుకకు అనుకూలంగా ఉంటుంది, Vimscriptకి మద్దతునిస్తుంది (Lua ప్రత్యామ్నాయంగా అందించబడుతుంది) మరియు చాలా ప్రామాణిక Vim ప్లగిన్ల కోసం కనెక్షన్లకు మద్దతు ఇస్తుంది. Neovim యొక్క అధునాతన లక్షణాలను Neovim-నిర్దిష్ట APIలను ఉపయోగించి నిర్మించబడిన ప్లగిన్లలో ఉపయోగించవచ్చు.
ప్రస్తుతం, సుమారు 130 నిర్దిష్ట ప్లగిన్లు ఇప్పటికే సిద్ధం చేయబడ్డాయి, వివిధ ప్రోగ్రామింగ్ భాషలను (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) మరియు ఫ్రేమ్వర్క్లను ఉపయోగించి ప్లగిన్లను సృష్టించడానికి మరియు ఇంటర్ఫేస్లను అమలు చేయడానికి బైండింగ్లు అందుబాటులో ఉన్నాయి (Qt, ncurses, నోడ్ .js, ఎలక్ట్రాన్, GTK). అనేక వినియోగదారు ఇంటర్ఫేస్ ఎంపికలు అభివృద్ధి చేయబడుతున్నాయి. GUI యాడ్-ఆన్లు చాలా ప్లగిన్ల వలె ఉంటాయి, అయితే ప్లగిన్ల వలె కాకుండా, అవి Neovim ఫంక్షన్లకు కాల్లను ప్రారంభిస్తాయి, అయితే ప్లగిన్లు Neovim లోపల నుండి పిలువబడతాయి.
కొత్త వెర్షన్లో కొన్ని మార్పులు:
- Luaలో అంతర్నిర్మిత LSP క్లయింట్ (లాంగ్వేజ్ సర్వర్ ప్రోటోకాల్) జోడించబడింది, ఇది విశ్లేషణ మరియు కోడ్ పూర్తి కోసం బాహ్య సేవలకు కనెక్ట్ చేయడానికి ఉపయోగించబడుతుంది.
- కేటాయింపు బఫర్ల రూపకల్పనను నియంత్రించడానికి API జోడించబడింది.
- బైట్ స్థాయిలో మార్పులను ట్రాక్ చేయడానికి పొడిగించిన ట్యాగ్లను ఉపయోగించడానికి API జోడించబడింది.
- ప్లగిన్ డెవలప్మెంట్ మరియు కాన్ఫిగరేషన్ మేనేజ్మెంట్ కోసం లువాకు భాషగా విస్తరించిన మద్దతు.
- ట్రీ-సిట్టర్ పార్సింగ్ ఇంజిన్కు ప్రయోగాత్మక మద్దతు జోడించబడింది.
మూలం: opennet.ru