Neovim 0.7.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 లోపల నుండి పిలువబడతాయి.
కొత్త సంస్కరణ రిమోట్ పని కోసం ప్రారంభ మద్దతును అందిస్తుంది, ఇది సర్వర్లో Neovimని అమలు చేయడానికి మరియు ప్రత్యేక ui_clientని ఉపయోగించి క్లయింట్ సిస్టమ్ నుండి దానికి కనెక్ట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇతర మార్పులు: Python 2కి మద్దతు నిలిపివేయబడింది, కీమ్యాప్లో Lua ఫంక్షన్ల ఉపయోగం అనుమతించబడింది, APIకి కొత్త ఆదేశాలు జోడించబడ్డాయి, ప్లగిన్లను అభివృద్ధి చేయడానికి మరియు కాన్ఫిగరేషన్ నిర్వహణ కోసం Lua భాషను ఉపయోగించే సామర్థ్యం గణనీయంగా విస్తరించబడింది, కోడ్లో సమస్యలను నిర్ధారించే సాధనాలు మెరుగుపరచబడ్డాయి, గ్లోబల్ స్టేటస్ బార్కు మద్దతు జోడించబడింది, పనితీరు అనుకూలీకరణలు నిర్వహించబడ్డాయి. అంతర్నిర్మిత LSP క్లయింట్ (లాంగ్వేజ్ సర్వర్ ప్రోటోకాల్) యొక్క సామర్థ్యాలు విస్తరించబడ్డాయి, ఇది విశ్లేషణ లాజిక్ మరియు కోడ్ పూర్తిని బాహ్య సర్వర్లకు బదిలీ చేయడానికి ఉపయోగించవచ్చు.
మూలం: opennet.ru