Ammettilo: ogni volta che vedi una persona che usa Vim, consideri la possibilità che sappiano qualcosa che tu non hai. Perché altrimenti userebbero un editor che, nella tua mente, è datato, spazzatura open source? Pensa a ciò che desideri, ma c'è un motivo per cui i migliori sviluppatori giurano su Vim.
Tutorial ripubblicatoOgni poche settimane, rivisitiamo alcuni dei post preferiti del nostro lettore da tutta la cronologia del sito. Questo tutorial è stato pubblicato per la prima volta nel febbraio 2011.
Finché hai passato almeno un mese a lavorare ogni giorno con l'editor, sicuramente lo odierai! Questo è precisamente il motivo per cui la maggior parte dei nuovi arrivati giocherà con Vim per un giorno, si sentirà disgustata e non la toccherà mai più. La cosa sfortunata è che, se questi sviluppatori riuscissero a superare le insidie, verrebbero introdotti a un'incredibile velocità e flessibilità.
È vero: Vim non è il tuo editor di codice standard (è meglio). La transizione da, ad esempio, da TextMate a Vim sarà un processo completamente diverso rispetto al passaggio da TextMate a Espresso. Tienilo sempre a mente quando ti ritrovi a strapparti i capelli perché Vim apparentemente rifiuta di inserire il testo quando digiti.
Sebbene ci siano più modalità in Vim, ci concentreremo sui tre più importanti. Ma prima di continuare, nota che ogni tasto serve una funzione diversa, a seconda della modalità in cui ti trovi attualmente. Ancora più confusa: all'inizio, una lettera maiuscola genera un'azione diversa da una minuscola.
In modalità comando, premendo "i" in minuscolo si attiverà "Insert Mode". Tuttavia, un "I" maiuscolo sposta il cursore all'inizio della riga. Questo potrebbe sembrare confuso, ma ti darà un potere incredibile!
V
per passare alla modalità visiva e quindi digitare 5j
a selezionare cinque righe in basso. Alla fine, dovresti premere d
, per eliminare. So che all'inizio suona incredibilmente confuso. Potresti pensare a te stesso, "Tutto ciò che funziona solo per eliminare cinque righe?" La verità è, tuttavia, questo metodo è significativamente più veloce.
Perché dovresti alzare il naso a oltre tre decenni di sviluppo?
Potresti sentire i tuoi amici dire "Vim non è un vecchio editor di codice?" Beh, potresti dirlo; è in circolazione da oltre trent'anni. Anche se onestamente, perché dovresti alzare il naso da oltre tre decenni di sviluppo? È più lungo di quanto fossi vivo! Meglio ancora, fino ad oggi, Vim è in fase di sviluppo attivo. La versione più recente, 7.3, è stata resa disponibile nell'agosto 2010.
In secondo luogo, è importante ricordare che Vim non è Vi. Se la tua unica esperienza è con quest'ultimo, prenditi del tempo per scaricare l'ultima versione e divertiti con le nuove funzionalità. Sarai piacevolmente sorpreso!
Se Vim non può farlo in modo nativo, puoi scommettere che c'è un plugin disponibile da qualche parte!
Scoprirai che, se Vim non è in grado di eseguire una determinata attività, è probabile che sia stato sviluppato un plug-in per fornire tale funzionalità. Ad esempio, considera la caratteristica eccellente dei frammenti di TextMate. Anche se Vim non supporta questo in modo nativo, puoi scaricare il plugin snipMate, che dovrebbe rendere l'esperienza praticamente identica a quello a cui sei abituato.
Meno movimento, meglio è.
In primo luogo, questo non è vero. Potrebbe essere stato il caso di Vi, ma sei libero di usare Vim nel modo che ti sembra più comodo. Quindi usa i tasti freccia per il contenuto del tuo cuore, anche se tieni presente che c'è un motivo per cui la maggior parte degli utenti di Vim non lo fa.
Il h, j, k, l
i tasti che mappano rispettivamente a sinistra, in basso, in alto ea destra hanno due scopi:
Quando tutto è detto e fatto, tu sono la persona che usa l'editor. Se, all'inizio, ti senti più a tuo agio nell'usare i tasti freccia, allora fallo con tutti i mezzi!
Va bene! Vim non è per tutti. Come persona che almeno tenta di fare progetti di design di volta in volta, posso attestare pienamente che Vim potrebbe non essere la soluzione migliore per i designer.
Gli sviluppatori non sono designer; è naturale che questo fatto si rifletta nella scelta dei redattori.
Se scopri che la maggior parte delle tue giornate è impiegata per lavorare con HTML e CSS, allora forse Vim non fa per te. Ora, questo non vuol dire che non dovresti dargli una possibilità; ma è certamente comprensibile, nel caso dovessi decidere di affidarti a un editor di design più amichevole, come Coda.
Semplice e semplice, è spazzatura. Certamente, ogni editor ha i suoi punti di forza, ma scoprirai che Vim è incredibilmente potente e, soprattutto, flessibile. Sono disponibili centinaia o centinaia di plug-in (gratuiti) che forniranno supporto per praticamente qualsiasi tipo di funzionalità richiesta.
Molti nuovi arrivati citano spesso il comando "Cambia interno" incorporato come un enorme punto vendita. Certamente era per me! Diciamo che hai il seguente codice:
var joe = 'plumber';
Supponendo che il cursore si trovi all'inizio di quella linea e si desideri cambiare il valore "idraulico" in "nero", tradizionalmente, è possibile utilizzare i tasti freccia o il mouse per selezionare e modificare il testo. Con Vim, il processo è estremamente semplificato. Basta digitare: ci'
. Questo significa "Cambia virgolette interne", oppure trova il prossimo insieme di virgolette singole e cambia il valore all'interno.
ul> li Il mio testo per la voce dell'elenco.
. Questa è stata una lamentela iniziale che ho avuto anche con Vim. Al primo avvio, ad esempio, MacVim, sei gettato nel branco di lupi! Nessuna evidenziazione del codice, nessuna formattazione, nessun rientro intelligente ... niente di niente! In particolare se stai usando un editor Vim personalizzato, dovrebbe esserci almeno un file vimrc di base per iniziare. Può essere un'esperienza intimidatoria cercare di capire come applicare le tue preferenze personalizzate.
Per chi non ha familiarità con un file vimrc, è essenzialmente un file che ti permette di specificare le preferenze del tuo editor.
Usalo come antipasto (fai clic sul pulsante Espandi in basso):
".vimrc File" Gestito da: Jeffrey Way "[email protected]" http://net.tutsplus.com "" Dimentica la compatibilità con Vi. Che importa. set nocompatible "Abilita il tipo di file filetype sul plugin di tipo file sul rientro del tipo di file sulla sintassi su" Scrivi il vecchio file quando passi da un file all'altro. imposta autowrite "Mostra la posizione corrente del cursore nell'angolo in basso a destra. imposta il righello" Vuoi un leader della mappa diverso da \ "imposta mapleader =", ";" Hai mai notato un leggero ritardo dopo aver digitato il tasto della direttrice + il comando? Si abbassa "il timeout. Set timeoutlen = 500" Passa tra i buffer senza salvare il set nascosto "Imposta lo schema dei colori." Cambia questo in base alle tue preferenze. "Ecco 100 tra cui scegliere: http://www.vim.org/scripts/script .php? script_id = 625 colorscheme twilight "Imposta il tipo e la dimensione del font .Dipendente dalla risoluzione. Schermate più grandi, preferisci h20 set guifont = Menlo: h14" Tab stuff set tabstop = 3 set shiftwidth = 3 set softtabstop = 3 set expandtab "Mostra comando nella parte in basso a destra dello schermo setcmd "Mostra numeri di linee imposta numero" Preferisce la numerazione relativa delle righe? "imposta il relativenumber" "Rientra roba imposta smartindent set autoindent" Mostra sempre la riga di stato set laststatus = 2 "Preferisci un'altezza di linea leggermente più alta set linespace = 3 "Migliore line wrapping set wrap set textwidth = 79 set formatoptions = qrn1" Imposta ricerca incrementale "set incsearch" Ricerca highlight set hlsearch "ricerca insensibile alle maiuscole set ignorecase set smartcase" Nascondi barra degli strumenti MacVim per impostazione predefinita go- = T " Paragrafi rigidi di testo nnem apq gqip "Abilita la piegatura del codice set foldenable" Nasconde il mouse quando si digita set mousehide "Collegamento per piegare i tag con il leader (solitamente \) + ft nnoremap ft Vatzf "Crea dizionario per espansioni personalizzate imposta dizionario + = / Users / jeff_way / .vim / dict.txt" Apre una divisione verticale e passa a (\ v) nnoremap v v l "Dividi le finestre sotto la finestra corrente imposta set di spicco" impostazioni della sessione impostate sessionoptions = ridimensiona, winpos, winsize, buffer, tabpage, pieghe, curdir, aiuto "Configura un modello HTML5 per tutti i nuovi file .html" autocmd BufNewFile * silent! 0r $ VIMHOME / templates /%: e.tpl "Carica il buffer corrente in Firefox - Mac specifico. Abbrev ff:! Open -a firefox.app%: p "Mappare una directory di modifiche sul desktop: nmap specifica per Mac d: cd ~ / Desktop : e. "Collegamento per la modifica di file vimrc in una nuova scheda nmap ev: tabedit $ MYVIMRC "Cambia il tasto di espansione del plug-in di codifica zen per spostare + e lascia g: user_zen_expandabbr_key = ' '"Scorciatoia più veloce per commentare. Richiede la mappa dei plug-in T-Comment c "Risparmia tempo; esegue il mapping della barra spaziatrice su colon nmap : "Cambia automaticamente la directory corrente in quella del file nel buffer autocmd BufEnter * cd%: p: h" Completamento codice mappa su, + scheda imap "Completamento della riga di comando più utile set wildmenu" Menu di completamento automatico set wildmode = elenco: più lungo "http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE set completeopt = longest, menuone inoremap pumvisible ()? "\ ":" \ u \ "inoremap pumvisible ()? ' ': \' = pumvisible ()? "\ Giù> ":" " 'inoremap pumvisible ()? ' ': \' = pumvisible ()? "\ Giù> ":" " '"Mappa chiave di escape su jj - molto più veloce imap jj Msgstr "Elimina tutti i buffer (tramite Derek Wyatt) nmap ,da: exec "1,". bufnr ('$'). "Bd" "Bubble single lines (kick kick)" http://vimcasts.org/episodes/bubbling-text/ nmap ddkP nmap ddp "Bubble multiple lines vmap xkP '[V'] vmap xp '[V'] "Dai il file vimrc dopo averlo salvato, in questo modo non devi ricaricare Vim per vedere le modifiche: if has (" autocmd ") augroup myvimrchooks au! autocmd bufwritepost .vimrc source ~ /. vimrc augroup END endif "navigazione delle finestre più semplice nmap h nmap j nmap k nmap l "------------------------" "NERDTREE PLUGIN SETTINGS" ------------------ ------ "" Collegamento per NERDTreeToggle nmap nt: NERDTreeToggle "Mostra file nascosti in NerdTree lascia NERDTreeShowHidden = 1" autopen NERDTree e cursore di messa a fuoco nel nuovo documento autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p "Abbreviazioni utili iab lorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed fa eiusmod tempor incididunt ut labore iam llorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed fa eiusmod tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "Spelling corregge. Solo per esempio. Aggiungi il tuo sotto. iab teh the iab Teh Il "Dirtare a casa più facile" hm è più facile da scrivere rispetto a: cd ~ nmap hm: cd ~ / "Ordinare alfabeticamente le proprietà CSS nel file con: SortCSS: comando! SortCSS: g # \ (\ n \) \ @<=#.,//sort " Shortcut to opening a virtual split to right of current pane " Makes more sense than opening to the left nmap bv: bel vsp "Salva il file quando la finestra Vim perde la messa a fuoco FocusLost *: wa" Backup set backupdir = ~ / .vim / tmp / backup // "backup set directory = ~ / .vim / tmp / swap //" file di scambio imposta backup "abilita backup" Non più stretching per la navigazione di file "noremap h;" noremap jh "noremap k gj" noremap l gk "noremap; l imposta showmatch" mostra parentesi corrispondenti "stampa vuoto tag map! ; h 5HI
Nemmeno io - almeno non più di me - ci sono una varietà di editor Vim dedicati che offrono un'esperienza simile a quella di Windows / Mac con interfaccia GUI.
Questi editor forniranno supporto per i tipi di tasti che sono radicati nel tuo corpo, come ad esempio "Comando + F
"per cercare, o"Comando + W
"per chiudere la finestra corrente.
Ricorda come, a scuola, a volte, lo studente seduto accanto a te era in grado di spiegare e aiutarti a capire qualche concetto difficile più che l'insegnante? Il motivo è perché, una volta che hai imparato un mestiere, è difficile ricordare cosa ti ha dato più problemi. Da settembre a ottobre, ho intrapreso una sfida di quattro settimane, che io chiamo "Venturing into Vim." Dopo aver ascoltato innumerevoli sviluppatori di grande talento elogiare questo editor di codice apparentemente decennale, ho deciso che valeva un mese del mio tempo per capire perché così tante persone considerano Vim il miglior editor del pianeta.
Ovviamente si può, tuttavia, ammettere che non è altrettanto user-friendly come, ad esempio, la funzionalità del server remoto Coda. Parlando di panico, se sei un utente di trasmissione, potresti prendere in considerazione l'installazione del plug-in FTP di trasmissione.
"Questo script ti permette di caricare il file corrente tramite Transmit direttamente da Vim. Perché funzioni, devi lavorare su un file che è legato ad una connessione di trasmissione, e questa connessione deve avere" DockSend "abilitato."
Con questo plugin, quando si modifica un file che ha una connessione di trasmissione (file aperto tramite Transmit), è sufficiente premere Controllo + U
per spingere quegli aggiornamenti al tuo server remoto. È un gioco da ragazzi!
Sinceramente, però, dovresti provare ad adottare un processo di build / deployment migliore. In questo modo, invece di usare FTP, puoi semplicemente spingere
.
Certo, ci sono una serie di motivi per non usare Vim. Ha una curva di apprendimento ripida e richiede un ripensamento completo di come dovrebbe funzionare un editor di codice. Detto questo, ci sono centinaia di motivi per cui tu dovrebbero usa Vim. L'unica domanda è: perché non sei tu?