Neovim 0.6.0 విడుదల చేయబడింది, Vim ఎడిటర్ యొక్క ఫోర్క్ ఎక్స్టెన్సిబిలిటీ మరియు ఫ్లెక్సిబిలిటీని పెంచడంపై దృష్టి పెట్టింది. ప్రాజెక్ట్ ఏడు సంవత్సరాలకు పైగా Vim కోడ్ బేస్ను పునర్నిర్మిస్తోంది, దీని ఫలితంగా కోడ్ నిర్వహణను సులభతరం చేసే మార్పులు చేయబడ్డాయి, అనేక మంది నిర్వహణదారుల మధ్య శ్రమను విభజించే సాధనాన్ని అందించడం, ఇంటర్ఫేస్ను బేస్ పార్ట్ నుండి వేరు చేయడం (ఇంటర్ఫేస్ కావచ్చు ఇంటర్నల్లను తాకకుండా మార్చబడింది) మరియు ప్లగిన్ల ఆధారంగా కొత్త ఎక్స్టెన్సిబుల్ ఆర్కిటెక్చర్ని అమలు చేయండి. ప్రాజెక్ట్ యొక్క అసలైన పరిణామాలు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడ్డాయి మరియు ప్రాథమిక భాగం Vim లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది. Linux (appimage), Windows మరియు macOS కోసం రెడీమేడ్ అసెంబ్లీలు సిద్ధం చేయబడ్డాయి.
నియోవిమ్ యొక్క సృష్టిని ప్రేరేపించిన 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 లోపల నుండి పిలువబడతాయి.
కొత్త వెర్షన్లో కొన్ని మార్పులు:
- స్థానిక వేరియబుల్స్కు మద్దతు vim స్క్రిప్ట్లకు జోడించబడింది, దీని పరిధి ప్రస్తుత స్క్రిప్ట్ ద్వారా మాత్రమే పరిమితం చేయబడింది.
- ప్లగిన్ డెవలప్మెంట్ మరియు కాన్ఫిగరేషన్ మేనేజ్మెంట్ కోసం లువా భాషా మద్దతు గణనీయంగా మెరుగుపడింది. vim స్క్రిప్ట్లలో, v:lua ఉపసర్గ (ఉదాహరణకు, “arg1->v:lua.somemod.func(arg2)”) పేర్కొనడం ద్వారా Lua ఫంక్షన్లను పద్ధతులుగా కాల్ చేసే సామర్థ్యం జోడించబడింది.
- అంతర్నిర్మిత LSP క్లయింట్ (లాంగ్వేజ్ సర్వర్ ప్రోటోకాల్) యొక్క సామర్థ్యాలు విస్తరించబడ్డాయి, ఇది విశ్లేషణ లాజిక్ మరియు కోడ్ పూర్తిని బాహ్య సర్వర్లకు బదిలీ చేయడానికి ఉపయోగించవచ్చు. విజువల్ స్టూడియో కోడ్ ఎడిటర్ కోసం సిద్ధం చేయబడిన వివిధ ప్రోగ్రామింగ్ భాషల కోసం 150 కంటే ఎక్కువ రెడీమేడ్ హ్యాండ్లర్లను ఉపయోగించడానికి LSPని ఉపయోగించడం మిమ్మల్ని అనుమతిస్తుంది.
- కోడ్లో సమస్యలను నిర్ధారించడానికి మెరుగైన సాధనాలు. అటువంటి సందేశాలతో అనుబంధించబడిన కోడ్తో విశ్లేషణ సందేశాలు మరియు ఫ్లోటింగ్ విండోల వచనాన్ని ప్రదర్శించే సామర్థ్యాన్ని జోడించారు. LSP సర్వర్ ద్వారా ప్రసారం చేయబడిన డయాగ్నస్టిక్ సందేశాల ప్రాసెసింగ్ అందించబడుతుంది.
- వర్చువల్ స్ట్రింగ్లకు మద్దతు జోడించబడింది, ఉదాహరణకు, సేవా సమాచారంతో బ్లాక్లను ప్రదర్శించడానికి ఉపయోగించవచ్చు.
- వివిధ పనితీరు అనుకూలీకరణలు చేయబడ్డాయి, ఉదాహరణకు, హైలైట్ చేయబడిన సమూహ పేర్ల కోసం హాష్ పట్టిక ప్రారంభించబడింది.
- Windows యొక్క Windows 7 మరియు 32-bit బిల్డ్లకు మద్దతు నిలిపివేయబడింది.
మూలం: opennet.ru