Comandi Vim semplici che avresti voluto sapere prima [chiuso]


378

Sto imparando sempre nuovi comandi in Vim, ma sono sicuro che tutti imparano qualcosa di nuovo una volta ogni tanto. Di recente ho imparato questo:

zz, zt, zb - posiziona il cursore nella parte centrale, superiore o inferiore dello schermo

Quali sono alcuni altri comandi utili o eleganti che vorresti aver imparato anni fa?


46
tecnicamente, zz, zt, zb stanno posizionando lo schermo con il cursore al centro / in alto / in basso. per posizionare il cursore al centro / in alto / in basso usare M, H o L. Entrambi i set di comandi sono utili!
Peter,

1
Leggere questo post mesi o un anno fa mi ha aiutato ogni giorno. dap è qualcosa che uso per spostare i paragrafi più volte all'ora, grazie a questo post.
Funkodebat

33
Non ho mai raccolto così tanti trucchi da una pagina che è stata contrassegnata come non costruttiva :) Grazie a tutti.
Tasos Bitsios,

Risposte:


315

Vorrei davvero sapere che puoi usare CtrlCinvece di Escuscire dalla modalità di inserimento. È stata una vera spinta alla produttività per me.


93
Ho rimappato il mio Caps-Lock su una Esc. È sia più semplice della normale Esc che Ctrl-C
Kasper,

114
Merda santa. 15 anni di vi e non l'ho mai saputo ...
Chris K,

31
un altro popolare era usare 'jj' per ESC. Mi piace questo approccio finora. :carta geografica! jj <ESC>
claytron,

27
Puoi anche usare CTRL- [(che mi piace perché sono entrambi i mignoli ... solo una piccola rotazione di entrambe le mani).
Jason Down,

42
usa 'jk' come variante su @ claytron. se inconsapevolmente sei già in modalità INSERT, jk ti lascia dov'eri, quindi puoi colpirlo ogni volta (credito: qualcun altro ... non la mia idea).
Kyle,

197

Il trucco "wow" più recente che ho imparato è un metodo per eseguire complicate operazioni di ricerca e sostituzione. Molto spesso in passato, ho avuto una regexp davvero complicata su cui fare le sostituzioni e non ha funzionato. C'è un modo migliore:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

Il "trucco" qui (per mancanza di una parola migliore) è il modo in cui puoi usare la ricerca per creare la regexp (e 'incsearch' la evidenzia mentre inserisci i caratteri) e quindi usare un modello vuoto nella sostituzione: il vuoto il modello si imposta automaticamente sull'ultimo modello di ricerca.

Esempio:

/blue\(\d\+\)
:%s//red\1/

Equivalente a:

:%s/blue\(\d\+\)/red\1/

Vedere:

:help 'incsearch'
:help :substitute

1
wow ... stavo cercando qualcosa del genere
figurassa

1
Sì, vorrei sapere questo prima. Ma poi di nuovo, questo è quello che dico di tutto ciò che apprendo che è nuovo in vim.
Robert Massaioli,

26
Per chiunque ami davvero questo, prova a premere <Ctrl-R>/per inserire l'ultima query di ricerca. (Vedi :help i_CTRL-R) Davvero utile per simili a quelli sopra, ma vuoi catturare parte dei risultati della ricerca. (in questo modo: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...funziona anche con *(cerca la parola sotto il cursore). Un plug-in chiamato visual-star-search estende la funzionalità di *abbinare l'intero testo di una selezione visiva che semplifica la ricerca e la sostituzione del testo selezionato, ad esempio v3e(seleziona visivamente 3 parole) *(ricerca) e :%s//replacement/g(sostituisci tutte le occorrenze con " sostituzione"). Io uso questo così spesso che ho una mappatura per il comando globale di sostituzione: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity,

1
@idbrii poiché le persone che leggono potrebbero essere Vim noobs (me), %s:dovrebbe essere :%s, e per il mio sistema, avevo bisogno \(\)invece di\\(\\)
Charlie Gorichanaz,

155

Ho creato questo riferimento del mio comando più usato per un mio amico:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

Elencate "~ X" per andare al segno con il nome X. Per me non funziona, invece uso "X" (virgoletta singola).

Wow. Hai assolutamente ragione. Quando stavo scrivendo la guida, immagino che il mio occhio abbia visto solo la tilde e sia passato sopra il segno di spunta. Aggiornerò di conseguenza. Grazie per il testa a testa.
Brian Newman,

5
questa lista è carina, ma voglio davvero sapere come hai disegnato questo tavolo? con VIM? quale plugin? Ne sto cercando uno al momento.
Kent,

6
Ho usato VIM, ma nessun plugin. Però; l'utilizzo della funzione di selezione del blocco lo ha reso relativamente semplice. Sono contento che hai trovato utile l'elenco! ~ brian
brian newman

11
Ctrl-Q per la selezione dei blocchi è una specificità di mswin.vim che consente di incollare CTRL-V. La maggior parte degli utenti di VIM considererebbe questo male e disabiliterebbe mswin.vim. "+ P o Ctrl-R + non è così difficile da digitare per inserire il contenuto degli appunti.
Benoit

144

gi passa alla modalità di inserimento, posizionando il cursore nella stessa posizione in cui si trovava in precedenza.


29
Ero così felice quando ho scoperto che g;questo mi fa piangere :-)
Patrick Oscity,

@longdeqidao per niente. Ritorna all'ultimo punto di inserimento. Quindi puoi scorrere il contenuto del tuo cuore e ti riporterà al punto in cui hai inserito l'ultima volta.
Cyber ​​Oliveira,

9
Cordiali saluti, g; (a cui @PatrickOscity di cui sopra) posiziona il cursore nel punto in cui è stata effettuata una modifica. Puoi usarlo più volte per tornare indietro nella storia. Notandolo qui perché il mio aiuto con Vim non lo menziona per qualche strana ragione.
PonyEars,

13
L'intuitività di Vim non smette mai di impressionarmi. Dato che @PonyEars ha menzionato che g;ho provato se il "contrario" di esso sarebbe g,ed ecco, possiamo andare avanti e indietro!
Cyber ​​Oliveira,

aè più corto. :) Ma giè davvero molto intuitivo, con di gsolito un'operazione contraria.
Erwin Rooijakkers,

105
: Q!

Vorrei saperlo prima di iniziare vi per la prima volta.


23
come un ragazzo di emacs, questo è il commento più divertente che abbia letto. non sono sicuro di volerlo dire però. Mi hai reso felice oggi.
Pjammer,

29
Ricordo di aver provato Vim ed Emacs per la prima volta lo stesso giorno, senza sapere nemmeno come uscire. Ho pensato a me stesso che diamine c'è di sbagliato in queste persone !?
Physicsmichael,

13
+1. Al primo avvio di vim, il messaggio predefinito dovrebbe essere "write: q to quit". Avrei risparmiato così tanto tempo lol
José Ramón,

2
@ JoséRamón Ma non mostrare sullo schermo di default se si inserisce vim senza aprire un file. È stato aggiunto di recente? Ricordo chiaramente di aver provato VIM anni fa ed era già lì. Ti dice anche di usare :q!se provi ad uscire senza salvare il buffer.
mechalynx,

5
@ivy_lynx sì, potresti avere ragione, ma solo se apri vim senza file. Di solito, la prima volta che apri vim è perché devi modificare un file di configurazione in Unix, quindi scrivi "$ vim file" e non riesci a trovare la via d'uscita. O sono l'unico?
José Ramón,

56

^ XF completa usando i nomi di file dalla directory corrente. Niente più copia / incolla dal terminale o doppio controllo doloroso.

^ XP completa usando le parole nel file corrente

: set scrollbind forza un buffer a scorrere accanto a un altro. ad es. dividere la finestra in due riquadri verticali. Carica un file in ciascuno (forse versioni diverse dello stesso file). Fare :set scrollbindin ciascuno. Ora quando si scorre in uno, entrambi i riquadri scorreranno insieme. Ideale per confrontare i file.


Come disabilitare lo scrollbind dopo averlo abilitato?
Amjith,

2
jinxed_coder : :set noscbper disattivarlo e utilizzare :set scbper attivarlo (non :scrollbind). :h scrollbind
jmdeldin,

Ops. Corretto per ': set scrollbind'.
Brian Agnew,

7
^ XP viene completato con preferenza per le parole precedenti nel file, ^ XN con preferenza per le parole successive nel file.
u0b34a0f6ae,

Puoi anche diff file aprendo file1 ed eseguendo :diffsplit file2o semplicemente avviando vim con vim -d file1 file2. Vim scorre automaticamente i due file.
Brian McCutchon,

51

È possibile utilizzare un intero set di comandi per modificare il testo tra parentesi / parentesi / virgolette / tag. È super utile evitare di dover trovare l'inizio e la fine del gruppo. Prova a ci(, ci{, ci<, ci", ci', ctseconda del tipo di oggetto che desideri modificare. E ilca(, ca{, ... varianti eliminano anche le parentesi / virgolette.

Facile da ricordare: cambia all'interno di un'istruzione tra parentesi / cambia un'istruzione tra parentesi.


16
questo non è solo per c. Puoi farlo con dper eliminare (ad es. Di (o da (), yper strappare, vper selezionare ecc.
Nathan Fellman,

Ciao! Mi piacerebbe sapere che la documentazione utilizza per questo :help? Non riesco a trovarlo da nessuna parte. > _ <
Matej

1
@Peter Ho controllato quelli prima, ma non sono riuscito a trovare menzione del peculiare comportamento "interno + delimitatore". Si scopre di essere dentro :help motion.txt! Grazie!
Matej,

2
questo suggerimento è l'unico motivo per cui sono passato a vi in ​​primo luogo :)
Justin L.

1
Se stai modificando HTML o XML, puoi utilizzare citper modificare il contenuto del tag corrente. Ad esempio <span>Some text</span>, se il cursore si trova sopra la "m", puoi farlo ditper ottenere <span></span>.
Jonathan Potter,

47
  1. Non premere Escmai. Vedi questa risposta per sapere perché . Come accennato in precedenza, Ctrl+ Cè un'alternativa migliore. Consiglio vivamente di mappare la Caps Lockchiave per fuggire.

  2. Se stai modificando un linguaggio compatibile con Ctags , usare un file tag e :ta, Ctrl+ ], ecc. È un ottimo modo per navigare nel codice, anche attraverso più file. Inoltre, il completamento Ctrl+ Ne Ctrl+ Putilizzando il file tag è un ottimo modo per ridurre le sequenze di tasti.

  3. Se stai modificando una linea che è racchiusa perché è più larga del buffer, puoi spostarti su / giù usando gk e gj.

  4. Prova a concentrarti sull'uso efficace dei comandi di movimento prima di imparare cattive abitudini. Cose come usare 'dt' o 'd3w' invece di premere x un sacco di volte. Fondamentalmente, ogni volta che ti ritrovi a premere ripetutamente lo stesso tasto, c'è probabilmente un modo migliore / più veloce / più conciso per ottenere la stessa cosa.


11
Non usare Escape? Questa è eresia. Escape è il tuo migliore amico, sia dentro che fuori dal lavoro.
xcramps

28
se è un buon amico, perché è così lontano sulla tastiera?
Anthony

perché il 99% delle persone non lo usa mai.
Stefano Borini,

5
La fuga è separata dagli altri tasti da pochi pollici sulla mia tastiera. Non puoi perderlo.
Brian Carper,

15
# 3 è fantastico! Sto ancora imparando cose nuove ...
Brian Newman il

45

Il tasto asterisco *, cercherà la parola sotto il cursore.

[+ Tabti porterà alla definizione di una funzione C che si trova sotto il cursore. (Non sempre funziona, però.)


1
Prova 'man ctags' se stai usando * nix per imparare a generare un file "tags" che dice a vim come trovare la definizione di qualsiasi funzione o variabile in molte lingue oltre a C. Usa ctrl +] per trovare la definizione del token sotto il cursore oppure utilizzare: tag tokenToFind per trovare qualsiasi token di cui sia a conoscenza. Puoi anche avviare vim con "vim -t tokenToFind" per aprire il file appropriato e posizionare il cursore sulla funzione che devi modificare.
Adam Liss,

23
il tasto # cercherà in senso inverso la parola sotto il cursore
Funkodebat

github.com/bronson/vim-visual-star-search consente la ricerca a stella di selezioni visive. Non voglio più perderlo.
Patrick Oscity,

[ + Tab funzionerà sempre quando estendi le pathcartelle richieste comeset path+=path/to/files
dlmeetei,

43

ZZ(funziona come :wq)

E riguardo alla posizione del cursore: ho scoperto che un cursore che rimane sempre al centro dello schermo è bello -

set scrolloff=9999

2
Non lo sapevo. :xfa anche questo
sa125,

18
Non del tutto esatto. Funziona come :x, che salva il file solo se ci sono modifiche, mentre :wqsalva sempre il file.
Erik B

ZQ (funziona come: q!)
xialu

42

Alcune delle mie ultime aggiunte al mio brainstore Vim:

  • ^wi: Passa al tag sotto il cursore suddividendo la finestra.
  • cib/ciB: Modifica il testo all'interno dell'attuale set di parentesi () o parentesi graffe {}, rispettivamente.
  • :set listchars=tab:>-,trail:_ list: Mostra schede / spazi finali visivamente diversi dagli altri spazi. Aiuta molto con la codifica Python.

4
Questo ha bisogno di più voti! cibè grande.
Matt Parker,

anche: ciw per cambiare la parola corrente (o caw, solo la stessa ma sinistra) ciW per cambiare la W = o. corrente (rd) Le same con v invece di c selezioneranno in visual invece di sostituire
lajarre

5
cib equivale a digitare "ci (". Puoi anche fare "ci [", "ci {" o (se il tuo vimrc è impostato correttamente) "ci <", per altri tipi di parentesi.
Tom Lord

2
Inoltre, "cit" per modificare il testo all'interno di un tag. Molto utile quando si lavora con XML / HTML.
Walter

vale anche la pena ricordare che puoi preferire il suffisso con la parentesi graffa di chiusura, se preferisci. Inoltre, ho appena imparato a conoscere ci}& cit- wow, questo sarà molto utile. vi[m]sta dimostrando un programma molto eccitante!
underscore_d

37

gv avvia la modalità visiva e seleziona automaticamente ciò che in precedenza era stato selezionato.


34

: shell per avviare una console di shell da Vim. Utile quando, ad esempio, vuoi testare uno script senza uscire da Vim. Basta premere ^ d quando hai finito con la console della shell, e poi torni a Vim e al tuo file modificato.


Immagino :!shfosse troppo difficile. Preferisco questo perché è più facile comporre le righe di comando usando i registri / i completamenti del buffer corrente o ad esempio utilizzare %/ %:hper il nome file / dirname corrente ecc.
vedere il

1
Questo è molto bello. Lo uso ogni giorno .. Prima di allora era: wq, fai cose roba, riapri vim con lo stesso file .. Grande ottimizzazione
Flashin

7
Ctrl-Z per passare alla shell e fg <ENTER> per tornare a VIM.
Mario G.

Inserisci il map <Esc>! :shell<CR>tuo .vimrce puoi lanciare la shell solo con Alt +! Oppure Alt + Maiusc + 1. (Mnemonico: :!{cmd}esegue {cmd}con la shell.)
musiphil

:shellinizierà comunque un nuovo livello di shell nidificato. Invece ctrl-zno.
wisbucky,


31

vimcryption

vim -x nomefile.txt

Ti verrà chiesto un passphrase, modifica e salva. Ora ogni volta che aprirai di nuovo il file in vi dovrai inserire la password per visualizzarla.


Sincronizzalo con il tuo dropbox e otterrai un ottimo gestore di password ;-)
Luis Nell,

15
Ma nota che a meno che tu set cryptmethod=blowfish(disponibile solo in 7.3+) userà un algoritmo con forza risibile. Vedi help encryptionper maggiori dettagli.
AB

3
Si prega di non utilizzare la crittografia VIM, non è una buona crittografia e una cattiva sicurezza è la peggiore di nessuna. Maggiori informazioni: github.com/neovim/neovim/issues/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish meta-tldr: "risolto in Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , per motivi di compatibilità con le versioni precedenti è necessario per essere un nuovo metodo di crittografia, quindi usa :set cm=blowfish2"
underscore_d

28

Costruisci ed esegui il debug del tuo codice da Vim!

Configurazione

Non molto, davvero. È necessario un Makefilenella directory corrente.

Compilare

Mentre sei in Vim, digita :makeper invocare una shell e creare il tuo programma. Non preoccuparti quando l'output scorre; basta premere Enterquando è finito per tornare a Vim.

La magia

Di ritorno in Vim, hai a disposizione i seguenti comandi:

  1. :cl elenca errori, avvisi e altri messaggi.
  2. :ccvisualizza l'attuale messaggio di errore / avviso nella parte inferiore dello schermo e passa alla riga offensiva nel codice.
  3. :cc npassa al messaggio nth .
  4. :cn passa al messaggio successivo.
  5. :cp passa al messaggio precedente.

Ci sono più; se sei interessato, digita :help :ccda Vim.


1
funziona con più di un semplice codice di compilazione. Vale a dire qualsiasi attività scritta in un makefile è di grande utilità per questo.
Dwight Spencer,

25

^ P e ^ N

Completa il testo precedente (^ P) o successivo (^ N).

^ O e ^ I

Vai alla posizione precedente (^ O - "O" per vecchia) o alla successiva (^ I - "I" proprio vicino a "O").

Quando esegui ricerche, modifichi file, ecc., Puoi navigare attraverso questi "salti" avanti e indietro.

votazione

Premere ma (segno m, a - nome del segno). Successivamente per tornare alla posizione, digitare `a .


1
Wow, non sapevo di ^ O e ^ I: è fantastico. Potrebbe valere la pena includere :help jump-motionsecc. Nella tua risposta nel caso in cui qualcuno desideri ulteriori informazioni.
DrAl,

controlla ShowMarks vim.org/scripts/script.php?script_id=152 . Ti aiuterà a ricordare dove e quali sono tutti i tuoi segni in un buffer. puoi attivare e disattivare la visualizzazione con \ mt
tester

Non capisco la differenza tra ^ P e ^ N ...
lajarre il

@lajarre fanno scorrere l'elenco dei completamenti disponibili nella direzione opposta
Patrick Oscity,

2
Uso spesso ^ O ^ O quando apro Vim dopo aver notato che voglio modificare di nuovo l'ultimo file modificato. Enorme risparmio di tempo!
Patrick Oscity,

24

Premere %quando il cursore si trova su una virgoletta, parentesi, parentesi o parentesi graffa per trovare la corrispondenza.


20
Se il cursore non si trova su nessuno di questi, si sposta a destra fino a quando non colpisce uno di essi.
Cyber ​​Oliveira,

@ Léo: grazie per il suggerimento bonus!
Adam Liss,

22

Fino a [carattere] ( t). È utile per qualsiasi comando che accetta un intervallo. Il mio preferito è ct;o ct)che elimina tutto fino al punto e virgola finale / parentesi chiusa e quindi ti mette in modalità inserimento.

Inoltre, Ge ggsono utili (vai in fondo e in alto rispettivamente).


il migliore qui, anche se alcuni degli altri sono utili, ne sapevo già tutti
Funkodebat

1
Inoltre finvece di t, che [azione] aumenterà attraverso quel personaggio; per esempio, avendo il cursore all'inizio di un argomento di funzione, df,lo eliminerà (in lingue appropriate, ovviamente).
Actorclavilis,

t e f sono ottimi per la modifica di parte di una variabile camelCase. Ad esempio, se hai appena duplicato una riga e devi cambiare prima variabile in seconda variabile, posiziona il cursore all'inizio di prima variabile, quindi ctV
Greg

1
Anche T e F funzionano, ma nella direzione opposta.
Fede il

20

^r^w per incollare la parola sotto il cursore in modalità comando.

È molto utile quando si usano i comandi grep o sostituisci.


Se è l'unica parola che desideri, allora * in modalità normale cercherà la parola sotto il cursore.
idbrii,


17

Vorrei aver saputo prima cose di base in modalità blocco visivo. Anche se non usi Vim per nient'altro, può essere un grande risparmio di tempo aprire un file in Vim solo per alcune operazioni di blocco. Sono abbastanza sicuro di aver perso un sacco di tempo facendo questo tipo di cose manualmente.

Esempi che ho trovato particolarmente utili quando, diciamo, refactoring di elenchi di nomi di costanti simbolici in modo coerente:

Entra in modalità Visual Block ( Ctrl+ Qper me su Windows invece di Ctrl+V )

Spostare il cursore per evidenziare il blocco desiderato.

Quindi, I whatever texte premereEsc per inserire il testo davanti al blocco su ogni riga.

Utilizzare Ainvece di Iavere il testo inserito dopo il blocco su ogni riga.

Inoltre, semplicemente cambiare il caso di una selezione visiva con ~può essere un grande risparmio di tempo.

E anche semplicemente eliminare le colonne, dovviamente.


15

^ y copierà il carattere sopra il cursore.


6
... e ^ E inserirà il carattere sotto il cursore
troppo php il

non funziona per me, sposta solo un cursore all'inizio del testo
Alex,

14

q <letter> - registra una macro.

e

@ <same-letter> - la riproduce.

Questi sono di gran lunga i comandi più utili in Vim poiché puoi fare in modo che il computer faccia un sacco di lavoro per te e non devi nemmeno scrivere un programma o altro.


L'uso di qsemplifica le cose, ma non è necessario utilizzarlo: basta salvare in un buffer denominato il comando buffer "- ad esempio, usando buffer a- "ad$...
Mei

@Mei qregistra una macro; le macro possono contenere comandi, non solo testo, quindi "ad$sono diverse da qa.
Brian McCutchon,

@Sortofabeginner Questo è irrilevante qui. Il comando "ad $ inserisce il testo nel buffer a e qa lo esegue.
Mei

2
@Mei qanon lo esegue; qalo registra e lo @aesegue. È vero che puoi scrivere una macro in testo semplice, salvarla nel registro acon qualcosa di simile "ad$e quindi eseguirla con @a, ma questo è un po 'più di lavoro. C'è una differenza fondamentale tra taglia e incolla e record-and-run.
Brian McCutchon,

Doh! Sapevo che. Grazie per la correzione
Mei

13

Apertura di più file utilizzando le schede

:tabe filepath

Navigazione tra i file aperti

gt and gT or :tabn and :tabp

Salvare la sessione aperta in modo da poter tornare all'elenco dei file aperti in un secondo momento

:mksession session_file_name.vim

Apri una sessione creata

vim -S session_file_name.vim

Chiudi tutti i file contemporaneamente

:qa

Un altro comando che ho imparato di recente

autocmd

Ti consente di eseguire un comando su un evento, ad esempio puoi eseguire il comando make quando salvi un file usando qualcosa come:

:autocmd BufWritePost *.cpp :make

12

qx inizierà a registrare i tasti premuti. Puoi fare praticamente qualsiasi attività di modifica e Vim lo ricorda. Premi q di nuovo quando hai finito e premi @x per ripetere i tasti. Questo è ottimo per le modifiche ripetitive che sono troppo complesse per scrivere una mappatura. Puoi avere molte registrazioni usando un carattere diverso da x .


5
Inoltre, lo stesso carattere 'x' è condiviso tra il comando macro 'q' e gli Appunti con nome ("x ...). Puoi lasciare frammenti di macro attorno al tuo file e copiarli negli Appunti con nome (ad es." Xyy ) e quindi riprodurli (@x).
Cyber ​​Oliveira,

E se crei la macro awesomist di sempre, puoi incollare quegli appunti nel tuo _vimrc con un 'let @x = ""' (mettendo la macro nel "") e salvarla per sempre!
Kearns,

11

Devo dire che uno dei miei preferiti sta inserendo la finestra di aiuto in una nuova scheda:

:tab help <help_topic>

Questo apre aiuto in una nuova scheda e, come qualcuno che ama le schede Vim, è ridicolmente utile.


2
I buffer sono le schede di Vim. Sono meglio supportati dal flusso di lavoro di vim. Sospetto che le schede siano state aggiunte a Vim solo perché troppe persone non capivano i buffer.
still_dreaming_1

Ok, molto presto dopo averlo detto, ho trovato un uso per le schede in vim. È vero che se si utilizza un buffer per scheda, è necessario conoscere i buffer. Non è così che le schede dovevano essere usate in vim. Gli utenti vim più avanzati usano i buffer come vengono usate le schede nella maggior parte dei programmi. Molte persone pensano che le schede avrebbero dovuto essere chiamate layout in vim. Sono principalmente per avere diverse raccolte di finestre aperte in diverse schede. Potresti anche avere un buffer specifico che torni molto aperto in una scheda e utilizzare l'altra scheda per visualizzare tutti gli altri buffer.
still_dreaming_1

9

cw

Cambia parola: elimina la parola sotto il cursore e ti mette in modalità inserimento per digitarne una nuova. Naturalmente questo funziona con altri tasti di spostamento, quindi puoi fare cose come c $ per cambiare alla fine della riga.

carattere f +

Trova la ricorrenza successiva del personaggio sulla riga corrente. Quindi puoi fare vft per selezionare tutto il testo fino alla successiva "t" sulla riga corrente. È un altro tasto di spostamento, quindi funziona anche con altri comandi.


9

:b [any portion of a buffer name]per cambiare buffer. Quindi se hai due buffer, "somefile1.txt" e "someotherfile2.txt", puoi passare al secondo semplicemente ":b 2.t<enter>". Supporta anche il completamento della scheda, anche se non è richiesto.

Parlando del completamento della scheda, l'impostazione :set wildmode=full wildmenuè anche molto utile. Consente il completamento completo della scheda per la modalità di comando, nonché un menu in stile ncurses molto utile di tutte le possibili corrispondenze durante l'utilizzo.


9

:% S, / search, / sostituzione,

È possibile utilizzare caratteri diversi da /(barra) per separare i motivi per la sostituzione. In questo modo non è necessario sfuggire alle barre dei percorsi dei file.


2
oh diavolo si. Sapevo che sedaveva questo, ma no vim. Più ne sai ♒ ☆
beerbajay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.