15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
08.10.2024

Cum să Utilizați Editorul Vi/Vim pe Ubuntu: O Referință Tehnică Completă

Vi și Vim (Vi Improved) sunt editoare de text modale, bazate pe tastatură, care funcționează exclusiv în terminal, fiind indispensabile pentru administrarea serverelor, editarea configurațiilor de la distanță și fluxurile de lucru cu scripturi pe Ubuntu și alte distribuții Linux. Vim extinde Vi cu evidențierea sintaxei, anulare pe mai multe niveluri, ferestre divizate, suport pentru plugin-uri și un strat de configurare scriptabil — consumând în același timp resurse de sistem neglijabile.

Dacă administrați un mediu de VPS Hosting sau un server bare-metal, cunoașterea Vim nu este opțională — este o competență fundamentală. Sesiunile SSH nu au întotdeauna acces la interfață grafică, iar Vim este disponibil aproape universal pe orice sistem bazat pe Unix cu care veți lucra vreodată.

De ce Vim Domină în Continuare Mediile de Server

IDE-urile moderne sunt puternice, dar sunt irelevante atunci când ești conectat la un server Ubuntu headless prin SSH la ora 2 dimineața, depanând o configurație Nginx defectă. Designul modal al Vim înseamnă că fiecare apăsare de tastă este o comandă — nu există dependență de mouse, nicio suprasarcină de randare și nicio latență introdusă de un strat grafic.

Principalele motive pentru care administratorii de sistem se bazează pe Vim:

  • Zero dependențe externe: Funcționează prin orice conexiune SSH, inclusiv conexiuni cu lățime de bandă redusă sau latență ridicată
  • Disponibilitate constantă: Pre-instalat sau ușor de instalat pe Debian, Ubuntu, CentOS, Alpine și practic orice distribuție Linux
  • Viteză la scară: Editarea fișierelor de configurare, fișierelor de log sau scripturilor cu mii de linii este mai rapidă în Vim decât în orice editor GUI, odată ce memoria musculară este formată
  • Scriptabilitate: Limbajul de scripting integrat al Vim (Vimscript) și suportul Lua (în Neovim) permit automatizarea completă a sarcinilor de editare repetitive

Instalarea Vim pe Ubuntu

Ubuntu vine cu un pachet minimal `vim-tiny`, care nu are evidențierea sintaxei, suport pentru mai multe fișiere și multe funcții avansate. Pentru funcționalitate completă, instalați pachetul complet:

“`bash

sudo apt update

sudo apt install vim -y

“`

Pentru a verifica versiunea instalată și a confirma suportul complet al funcțiilor:

“`bash

vim –version

“`

Căutați `+syntax`, `+clipboard`, `+python3` și `+multi_byte` în indicatorii de funcții. Un prefix `-` înseamnă că acea funcție a fost eliminată din binar. Dacă aveți nevoie de acele funcții și lipsesc, instalați `vim-gtk3` sau `vim-nox` în schimb:

“`bash

sudo apt install vim-nox -y # Headless full-feature build

sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration

“`

Caz limită critic: Pe imaginile minime de server Ubuntu — cum ar fi cele utilizate în containere Docker sau pe Servere Dedicate bootstrap-ate cu cloud-init — chiar și `vi` poate lipsi. În acest caz, instalați explicit `vim` înainte de a încerca orice editare a fișierelor de configurare.

Deschiderea, Crearea și Recuperarea Fișierelor

“`bash

vim filename.txt # Open existing file or create new one

vim /etc/nginx/nginx.conf # Open a system configuration file (use sudo if needed)

sudo vim /etc/ssh/sshd_config # Edit privileged files

vim +42 filename.txt # Open file and jump directly to line 42

vim +/searchterm file.txt # Open file with cursor on first match of searchterm

“`

Recuperarea fișierului swap: Vim creează automat un fișier swap ascuns (`.filename.txt.swp`) în timpul editării. Dacă sesiunea se blochează sau conexiunea SSH se întrerupe, redeschideți același fișier și Vim vă va solicita să recuperați modificările nesalvate. Alegeți întotdeauna mai întâi `(R)ecover`, salvați conținutul recuperat, apoi ștergeți fișierul swap cu `:e` urmat de `:!rm ~/.filename.txt.swp` sau rulând `vim -r filename.txt`.

Acest mecanism de recuperare este deosebit de valoros la editarea fișierelor de configurare critice pe servere de producție — o conexiune întreruptă nu înseamnă pierderea lucrului.

Înțelegerea Arhitecturii Modale a Vim

Designul modal al Vim este cel mai important concept de internalizat. Spre deosebire de editorii standard unde fiecare apăsare de tastă inserează un caracter, Vim separă navigarea, editarea și execuția comenzilor în moduri distincte.

ModActivareScop Principal
**Normal**`Esc` (implicit la deschidere)Navigare, ștergere, copiere, lipire, execuție macro
**Insert**`i`, `a`, `o`, `O`, `I`, `A`Tastarea și inserarea textului
**Visual**`v` (caracter), `V` (linie), `Ctrl+v` (bloc)Selectarea intervalelor de text
**Visual Block**`Ctrl+v`Selecție și editare bazată pe coloane
**Command-Line**`:`Operații cu fișiere, căutare/înlocuire, setări, comenzi externe
**Replace**`R`Suprascrierea caracterelor existente
**Ex**`Q`Execuție de comenzi în lot (rar utilizat interactiv)

Cea mai frecventă greșeală a începătorilor este apăsarea tastelor în modul Normal așteptând să apară text, apoi panicarea când `dd` șterge o linie sau `gg` sare la începutul fișierului. Confirmați întotdeauna modul curent verificând colțul din stânga jos al ecranului — modul Insert afișează `– INSERT –`, modul Visual afișează `– VISUAL –`, iar modul Normal nu afișează nimic.

Comenzi de Navigare în Modul Normal

Navigarea eficientă este ceea ce separă un utilizator Vim care este doar funcțional de unul care este cu adevărat rapid. Învățați-le în ordinea priorității:

Mișcarea de Bază a Cursorului

TastăAcțiune
`h`Deplasare stânga cu un caracter
`l`Deplasare dreapta cu un caracter
`j`Deplasare în jos cu o linie
`k`Deplasare în sus cu o linie
`w`Salt la începutul cuvântului următor
`b`Salt la începutul cuvântului anterior
`e`Salt la sfârșitul cuvântului curent
`0`Salt la începutul liniei
`^`Salt la primul caracter non-spațiu al liniei
`$`Salt la sfârșitul liniei
TastăAcțiune
`gg`Salt la prima linie a fișierului
`G`Salt la ultima linie a fișierului
`:42`Salt la linia 42
`Ctrl+f`Derulare o pagină completă înainte
`Ctrl+b`Derulare o pagină completă înapoi
`Ctrl+d`Derulare jumătate de pagină în jos
`Ctrl+u`Derulare jumătate de pagină în sus
`%`Salt la paranteza, paranteза rotundă sau acolada corespunzătoare
`*`Salt la următoarea apariție a cuvântului de sub cursor
`#`Salt la apariția anterioară a cuvântului de sub cursor

Sfat pentru utilizatori avansați: Prefixați orice comandă de mișcare cu un număr pentru a o repeta. `5j` se deplasează în jos cu 5 linii. `3w` sare înainte cu 3 cuvinte. `10dd` șterge 10 linii. Acest multiplicator numeric se aplică practic oricărei comenzi din modul Normal și este cheia editării rapide.

Intrarea și Ieșirea din Modul Insert

TastăComportament
`i`Inserare înainte de cursor
`a`Adăugare după cursor
`I`Inserare la începutul liniei
`A`Adăugare la sfârșitul liniei
`o`Deschide o linie nouă dedesubt și intră în modul Insert
`O`Deschide o linie nouă deasupra și intră în modul Insert
`s`Șterge caracterul de sub cursor și intră în modul Insert
`S`Șterge întreaga linie și intră în modul Insert
`Esc` sau `Ctrl+[`Revenire la modul Normal

Obicei critic: Dezvoltați reflexul de a apăsa `Esc` imediat după finalizarea unei inserări de text. Rămânerea în modul Insert când intenționați să navigați este sursa majorității editărilor accidentale.

Salvare, Ieșire și Gestionarea Fișierelor

Aceste comenzi se execută din modul Command-Line (apăsați mai întâi `:`):

ComandăAcțiune
`:w`Salvează (scrie) fișierul curent
`:w filename.txt`Salvează cu un nume de fișier nou
`:q`Ieșire (doar dacă nu există modificări nesalvate)
`:q!`Ieșire forțată, renunțând la toate modificările nesalvate
`:wq` sau `:x`Salvează și ieși
`ZZ`Salvează și ieși (scurtătură în modul Normal)
`ZQ`Ieșire fără salvare (scurtătură în modul Normal)
`:w !sudo tee %`Salvează un fișier deschis fără privilegii sudo

Trucul `:w !sudo tee %` este o cunoștință esențială pentru administratorii de server. Când deschideți un fișier de sistem precum `/etc/fstab` fără sudo și faceți modificări, nu puteți salva cu `:w`. Această comandă trimite conținutul buffer-ului prin `sudo tee` pentru a scrie fișierul cu privilegii ridicate — fără a fi nevoie să închideți și să redeschideți Vim.

Operații de Editare: Ștergere, Copiere, Lipire și Anulare

Modelul de editare al Vim este construit pe operatori + mișcări. Un operator (precum `d` pentru ștergere sau `y` pentru yank/copiere) combinat cu o mișcare (precum `w` pentru cuvânt sau `$` pentru sfârșitul liniei) creează o acțiune de editare precisă.

Comenzi de Editare de Bază

ComandăAcțiune
`x`Șterge caracterul de sub cursor
`X`Șterge caracterul dinaintea cursorului
`dd`Șterge (taie) întreaga linie curentă
`D`Șterge de la cursor până la sfârșitul liniei
`dw`Șterge de la cursor până la sfârșitul cuvântului
`d$`Șterge de la cursor până la sfârșitul liniei
`d0`Șterge de la cursor până la începutul liniei
`yy` sau `Y`Yank (copiază) întreaga linie curentă
`yw`Yank de la cursor până la sfârșitul cuvântului
`p`Lipire după cursor (sau sub linia curentă pentru yank-uri linie cu linie)
`P`Lipire înainte de cursor (sau deasupra liniei curente)
`u`Anulează ultima modificare
`Ctrl+r`Reface ultima modificare anulată
`.`Repetă ultima modificare (una dintre cele mai puternice comenzi din Vim)
`~`Comută majuscula/minuscula caracterului de sub cursor
`>>`Indentează linia curentă cu un nivel
`<<`Dezindentează linia curentă cu un nivel

Comanda `.` (punct) este probabil cea mai subutilizată funcție Vim în rândul începătorilor. Repetă ultima acțiune compusă — dacă ați șters un cuvânt cu `dw`, apăsând `.` șterge cuvântul următor. Dacă ați schimbat un cuvânt cu `cw` și ați tastat un înlocuitor, `.` aplică același înlocuitor la următoarea apariție. Aceasta elimină editările manuale repetitive în fișiere mari.

Modul Visual: Selecție Precisă a Textului

Modul Visual oferă trei granularități de selecție:

  • `v` — Selecție vizuală caracter cu caracter
  • `V` — Selecție vizuală linie cu linie (selectează linii întregi)
  • `Ctrl+v` — Selecție vizuală bloc (editare pe coloane)

După efectuarea unei selecții, aplicați operatori:

TastăAcțiune asupra Selecției
`d`Șterge textul selectat
`y`Yank (copiază) textul selectat
`c`Modifică (șterge și intră în modul Insert)
`>`Indentează selecția
`<`Dezindentează selecția
`~`Comută majuscula/minuscula selecției
`:`Intră în modul Command-Line cu intervalul pre-completat

Caz de utilizare real pentru modul visual bloc (`Ctrl+v`): Aveți un fișier de configurare unde trebuie să comentați 15 linii consecutive prin adăugarea `#` la început. Selectați prima coloană a acelor linii cu `Ctrl+v`, navigați în jos cu `j`, apăsați `I` (I majusculă), tastați `#`, apoi apăsați `Esc`. Vim aplică inserarea pe fiecare linie selectată simultan. Aceasta este o sarcină care ar necesita un regex sau repetare manuală în majoritatea celorlalte editoare.

Căutare și Înlocuire

Căutare

“`

/pattern Search forward for pattern (regex supported)

?pattern Search backward for pattern

n Jump to next match

N Jump to previous match

  • Search forward for word under cursor

Search backward for word under cursor

:noh Clear search highlighting

“`

Sintaxa Căutare și Înlocuire

“`

:%s/old/new/g Replace all occurrences in entire file

:%s/old/new/gc Replace all with confirmation prompt for each

:%s/old/new/gi Case-insensitive replace across entire file

:10,20s/old/new/g Replace only within lines 10 through 20

:'<,'>s/old/new/g Replace within visually selected range

:%s/bwordb/new/g Replace whole word only (word boundary anchors)

“`

Suport regex: Vim folosește propriul dialect regex. Limita de cuvânt `b`, `d` pentru cifre, `s` pentru spații albe și `+` (unul sau mai multe) sunt disponibile. Pentru sintaxa regex extinsă, prefixați cu `v`: `:%s/v(foo|bar)/baz/g` potrivește fie „foo” fie „bar” și înlocuiește cu „baz”.

Lucrul cu Mai Multe Fișiere, Buffer-e și Ferestre Divizate

Aici puterea Vim devine cel mai evidentă pentru sesiunile de editare complexe.

Buffer-e

Un buffer este o reprezentare în memorie a unui fișier. Vim poate menține multe buffer-e deschise simultan.

“`

:e filename Open a file into a new buffer

:ls or :buffers List all open buffers

:b2 Switch to buffer number 2

:bnext or :bn Switch to next buffer

:bprev or :bp Switch to previous buffer

:bd Delete (close) current buffer

“`

Ferestre Divizate

“`

:split filename Horizontal split, open file in upper pane

:vsplit filename Vertical split, open file in right pane

Ctrl+w h/j/k/l Navigate between split panes

Ctrl+w = Equalize split pane sizes

Ctrl+w q Close current pane

“`

Tab-uri

“`

:tabnew filename Open file in a new tab

:tabnext or gt Switch to next tab

:tabprev or gT Switch to previous tab

:tabclose Close current tab

“`

Scenariu practic: La editarea configurației unui server web pe un VPS cu cPanel, poate fi necesar să consultați fișierul principal `nginx.conf` în timp ce editați un fișier virtual host. Deschideți ambele într-o divizare verticală cu `:vsplit /etc/nginx/nginx.conf` și navigați între panouri cu `Ctrl+w l` și `Ctrl+w h` — fără a fi nevoie să închideți un fișier pentru a-l consulta pe celălalt.

Configurarea Vim cu .vimrc

Fișierul `.vimrc` din directorul dvs. home este configurația persistentă a Vim. Este executat ca Vimscript de fiecare dată când pornește Vim.

“`bash

vim ~/.vimrc

“`

Configurație Recomandată pentru Serverul de Producție

“`vim

" Display settings

set number " Show absolute line numbers

set relativenumber " Show relative line numbers (great for jump commands)

set cursorline " Highlight the current line

set scrolloff=8 " Keep 8 lines visible above/below cursor when scrolling

" Indentation

set autoindent " Copy indent from current line on new line

set smartindent " Context-aware indentation for code

set expandtab " Convert tabs to spaces

set tabstop=4 " Tab width = 4 spaces

set shiftwidth=4 " Indentation width for >> and <<

" Search behavior

set hlsearch " Highlight all search matches

set incsearch " Show matches as you type

set ignorecase " Case-insensitive search

set smartcase " Override ignorecase if search contains uppercase

" Usability

set mouse=a " Enable mouse in all modes

syntax on " Enable syntax highlighting

set encoding=utf-8 " Default encoding

set clipboard=unnamedplus " Use system clipboard for yank/paste

set undofile " Persist undo history across sessions

set undodir=~/.vim/undo " Directory for persistent undo files

" Visual

set showmatch " Briefly jump to matching bracket

set laststatus=2 " Always show status line

set wildmenu " Enhanced command-line completion

“`

Important: Directiva `set undofile` creează un istoric de anulare persistent stocat pe disc. Aceasta înseamnă că puteți închide un fișier, îl puteți redeschide zile mai târziu și puteți în continuare anula modificările din sesiunea anterioară. Creați directorul de anulare înainte de a activa această funcție:

“`bash

mkdir -p ~/.vim/undo

“`

Aceasta este deosebit de valoroasă la efectuarea modificărilor incrementale ale fișierelor de configurare pe sisteme de producție — de exemplu, la ajustarea setărilor PHP-FPM sau modificarea parametrilor SSL pe un server care rulează Certificate SSL pentru mai multe domenii.

Macro-uri: Automatizarea Editărilor Repetitive

Macro-urile sunt una dintre cele mai puternice și mai puțin utilizate funcții ale Vim. Un macro înregistrează o secvență de apăsări de taste și le redă.

“`

qa Start recording macro into register 'a'

[actions] Perform any sequence of Normal/Insert mode commands

q Stop recording

@a Replay macro stored in register 'a'

@@ Replay the last executed macro

10@a Replay macro 'a' ten times

“`

Exemplu din lumea reală: Aveți un fișier CSV cu 200 de linii și trebuie să încadrați al doilea câmp al fiecărei linii în ghilimele duble. Înregistrați macro-ul pe prima linie, redați-l de 199 de ori cu `199@a` și transformarea este completă în mai puțin de o secundă. Nu este necesară nicio scriptare.

Marcaje și Salturi

Marcajele vă permit să marcați poziții într-un fișier și să reveniți la ele instantaneu.

“`

ma Set mark 'a' at current cursor position

'a Jump to the line of mark 'a'

`a Jump to the exact position of mark 'a'

'' Jump back to position before last jump

Ctrl+o Jump to previous position in jump list

Ctrl+i Jump to next position in jump list

:marks List all current marks

“`

Vim vs. Nano vs. Emacs: Alegerea Editorului de Terminal Potrivit

FuncțieVimNanoEmacs
**Curbă de învățare**Abruptă (sistem modal)MinimăFoarte abruptă
**Timp de pornire**Aproape instantAproape instantMai lent
**Utilizare memorie**Foarte redusăFoarte redusăModerată până la ridicată
**Evidențiere sintaxă**CompletăDe bazăCompletă
**Ecosistem plugin-uri**ExtinsMinimalExtins
**Suport macro-uri**Nativ, puternicInexistentNativ
**Ferestre divizate**DaNuDa
**Editare de la distanță**Prin SSH nativPrin SSH nativProtocol TRAMP
**Complexitate configurare**Moderată (.vimrc)MinimăRidicată (Elisp)
**Cel mai bun pentru**Utilizatori avansați, sysadminiEditări rapide, începătoriDezvoltatori, utilizatori Lisp

Pentru sarcinile de administrare a serverelor — editarea fișierelor de configurare, scrierea scripturilor shell, revizuirea log-urilor — Vim oferă cel mai bun echilibru între putere, disponibilitate și viteză. Nano este acceptabil pentru editări ocazionale când nu vă puteți permite suprasarcina cognitivă. Emacs este o alegere legitimă pentru dezvoltatorii care trăiesc în terminal, dar amprenta sa de resurse și timpul de pornire îl fac mai puțin practic în mediile de server cu resurse limitate.

Capcane Frecvente și Cum să le Evitați

1. Editarea fișierelor de producție fără o copie de rezervă

Creați întotdeauna o copie de rezervă înainte de a edita fișierele critice de sistem:

“`bash

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

sudo vim /etc/nginx/nginx.conf

“`

2. Uitarea utilizării sudo

Dacă deschideți un fișier privilegiat fără sudo și faceți modificări, utilizați `:w !sudo tee %` pentru a salva fără a pierde editările.

3. Confundarea registrelor

Când ștergeți text cu `dd`, acesta intră în registrul implicit `"`. Dacă apoi copiați ceva cu `yy`, textul șters este suprascris. Pentru a păstra un yank înainte de ștergere, utilizați registre cu nume: `"ayy` copiază în registrul `a`, iar `"ap` lipește din acesta.

4. Lăsarea fișierelor swap pe sisteme partajate

Fișierele swap Vim din `/tmp` sau directorul de lucru pot deruta alți utilizatori sau procese automate. Configurați un director dedicat pentru swap în `.vimrc`:

“`vim

set directory=~/.vim/swap//

“`

Dubla bară oblică finală determină Vim să codifice calea completă a fișierului în numele fișierului swap, prevenind coliziunile.

5. Probleme cu terminatoarele de linie pe fișiere cross-platform

Dacă editați un fișier care a provenit pe Windows, acesta poate avea terminatoare de linie CRLF (`rn`). Vim va afișa `^M` la sfârșitul fiecărei linii. Remediați aceasta cu:

“`bash

:%s/r//g

“`

Listă de Verificare Practică a Punctelor Cheie

Utilizați aceasta ca matrice de decizie rapidă înainte și în timpul sesiunilor Vim:

  • Înainte de a edita orice fișier de producție: Creați o copie de rezervă cu marcaj temporal cu `cp file file.$(date +%Y%m%d%H%M%S).bak`
  • Conștientizarea modului: Dacă apăsările de taste nu inserează text, apăsați `Esc` și confirmați modul
  • Obiceiul de salvare rapidă: Apăsați `Esc` apoi `:w` după fiecare modificare semnificativă — nu așteptați până la sfârșit
  • Utilizați `:set number` temporar dacă trebuie să navigați la o linie specifică și nu o aveți în `.vimrc`
  • Pentru căutare/înlocuire globală: Testați întotdeauna cu `:%s/old/new/gc` (cu confirmare) înainte de a rula `:%s/old/new/g` orb
  • Solicitare fișier swap la deschidere: Alegeți întotdeauna `(R)ecover`, salvați conținutul, apoi ștergeți fișierul swap
  • Pentru editări pe coloane: Utilizați modul visual bloc `Ctrl+v` în loc de repetare manuală
  • Anulare persistentă: Configurați `set undofile` în `.vimrc` pe orice server pe care îl administrați regulat
  • Integrare clipboard: Dacă `p` lipește conținut neașteptat, verificați că `set clipboard=unnamedplus` este setat și că `xclip` sau `xsel` este instalat
  • Când aveți îndoieli: `:help keyword` deschide documentația integrată pentru orice comandă sau opțiune

Indiferent dacă gestionați fișiere de configurare pe medii de Găzduire Web Partajată sau mențineți infrastructuri complexe pe Servere Dedicate, eficiența Vim se acumulează în timp — fiecare comandă pe care o internalizați elimină permanent fricțiunea din fluxul dvs. de lucru.

Întrebări Frecvente

Î: Care este diferența dintre Vi și Vim pe Ubuntu?

`vi` pe sistemele Ubuntu moderne este de obicei un symlink către `vim` în modul de compatibilitate redusă, sau către `vim-tiny`. Vi adevărat este editorul original din 1976 fără evidențiere de sintaxă, fără anulare pe mai multe niveluri și fără suport pentru plugin-uri. Vim adaugă peste 100 de funcții peste Vi, rămânând în același timp pe deplin compatibil cu comenzile Vi.

Î: Cum ies din Vim dacă sunt complet blocat?

Apăsați `Esc` de mai multe ori pentru a vă asigura că sunteți în modul Normal, apoi tastați `:q!` și apăsați Enter. Aceasta forțează ieșirea fără salvare. Dacă nici aceasta nu funcționează (rar, dar posibil în stări de comandă recursive), apăsați mai întâi `Ctrl+c`, apoi `:q!`.

Î: Poate Vim edita fișiere prin SSH fără a le copia local?

Da. Utilizați `vim scp://user@hostname//path/to/file` pentru a edita fișiere de la distanță direct prin SCP. Vim gestionează transferul în mod transparent. Alternativ, utilizați `rsync` pentru a prelua fișierul, editați local și trimiteți înapoi — aceasta este mai rapidă pentru fișierele mari.

Î: Cum activez evidențierea sintaxei pentru un tip de fișier specific pe care Vim nu îl recunoaște?

Rulați `:set filetype=nginx` (sau `python`, `yaml`, `bash`, etc.) pentru a atribui manual un tip de fișier pentru sesiunea curentă. Pentru a-l face permanent pentru o extensie de fișier specifică, adăugați `autocmd BufRead,BufNewFile *.conf set filetype=nginx` în `.vimrc`.

Î: Este Neovim o alegere mai bună decât Vim pentru utilizarea pe server?

Pentru sarcinile pure de administrare a serverelor, Vim standard este suficient și mai universal disponibil. Neovim oferă configurare bazată pe Lua, suport mai bun pentru plugin-uri asincrone și un client LSP integrat — avantaje care contează în principal pentru fluxurile de lucru de dezvoltare. Pe serverele de producție unde instalați doar ceea ce este necesar, Vim rămâne alegerea pragmatică.

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți