Proste polecenia Vima, które chciałbyś znać wcześniej [zamknięte]

378

Cały czas uczę się nowych poleceń w Vimie, ale jestem pewien, że każdy raz uczy się czegoś nowego. Niedawno dowiedziałem się o tym:

zz, zt, zb - ustaw kursor na środku, górze lub dole ekranu

Jakie są inne przydatne lub eleganckie polecenia, których nauczyłeś się przed wiekami?

Lin
źródło
46
technicznie, zz, zt, zb ustawiają ekran z kursorem na środku / górze / dole. aby ustawić kursor na środku / górze / dole, użyj M, H lub L. Oba zestawy poleceń są przydatne!
Peter,
1
Czytanie tego postu miesiąc lub rok temu pomogło mi codziennie. dap to coś, czego używam do przenoszenia akapitów wiele razy na godzinę, dzięki temu postowi.
Funkodebat
33
Nigdy nie wybrałem tylu sztuczek ze strony, która została oznaczona jako niekonstruktywna :) Dzięki wszystkim.
Tasos Bitsios

Odpowiedzi:

315

Naprawdę chciałbym wiedzieć, że możesz użyć CtrlCzamiast Escwyjść z trybu wstawiania. To dla mnie prawdziwy wzrost wydajności.

yalestar
źródło
93
Zmapowałem Caps-Locka na Esc. To jest zarówno łatwiejsze niż normalne Esc i Ctrl-C
Kasper
114
O kurczę. 15 lat vi i nigdy tego nie wiedziałem ...
Chris K,
31
Innym popularnym było użycie „jj” dla ESC. Do tej pory podoba mi się to podejście. :mapa! jj <ESC>
claytron
27
Możesz także użyć CTRL- [(co mi się podoba, ponieważ to oba małe palce ... tylko mały obrót obu rąk).
Jason Down,
42
użyj „jk” jako wariantu @ claytron's. jeśli nieświadomie jesteś już w trybie INSERT, jk zostawia cię tam, gdzie byłeś, więc możesz trafić go za każdym razem (kredyt: ktoś inny ... nie mój pomysł).
Kyle
197

Najnowszą sztuczką „wow”, której się nauczyłem, jest metoda wykonywania skomplikowanych operacji wyszukiwania i zamiany. Dość często w przeszłości miałem bardzo skomplikowane wyrażenie regularne, aby dokonać podstawień i nie działa. Jest lepszy sposób:

: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

„Sztuczka” tutaj (z braku lepszego słowa) polega na tym, że możesz użyć wyszukiwania do utworzenia wyrażenia regularnego (a „incsearch” podświetla go podczas wprowadzania znaków), a następnie użyć pustego wzorca w podstawieniu: pusta wzorzec domyślnie przyjmuje ostatni wzorzec wyszukiwania.

Przykład:

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

Równoważny:

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

Widzieć:

:help 'incsearch'
:help :substitute
DrAl
źródło
1
wow ... Szukałem czegoś takiego
figurassa
1
tak, chciałbym, abym wiedział o tym wcześniej. Ale z drugiej strony to, co mówię o wszystkim, czego się uczę, jest nowe w vim.
Robert Massaioli,
26
Dla każdego, kto naprawdę to lubi, spróbuj nacisnąć, <Ctrl-R>/aby wstawić ostatnie zapytanie wyszukiwania. (Zobacz :help i_CTRL-R) Naprawdę przydatne dla podobnych do powyższych, ale chcesz uchwycić część wyników wyszukiwania. (tak jak poniżej: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii
4
:%s//...działa również z *(wyszukiwanie słowa pod kursorem). Wtyczka o nazwie visual-star-search rozszerza funkcjonalność *dopasowywania całego tekstu zaznaczenia wizualnego, co ułatwia wyszukiwanie i zamianę zaznaczonego tekstu, np. v3e(Wizualnie wybierz 3 słowa) *(szukaj) i :%s//replacement/g(zamień wszystkie wystąpienia na „ zastąpienie"). Używam tego tak często, że mam mapowanie dla globalnego polecenia podstawienia: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity,
1
@idbrii, ponieważ ludzie czytający mogą być Vim noobs (ja), %s:powinno być :%s, a dla mojego systemu potrzebowałem \(\)zamiast\\(\\)
Charlie Gorichanaz
155

Utworzyłem odniesienie do mojego najczęściej używanego polecenia dla mojego znajomego:

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.
Brian Newman
źródło
Podajesz „~ X”, aby przejść do znaku o nazwie X. To nie działa dla mnie - zamiast tego używam „” X ”(pojedynczy cudzysłów).
Łał. Masz absolutną rację. Podczas pisania przewodnika moje oko widziało tylko tyldę i połyskiwało nad tyłem tyka. Zaktualizuję odpowiednio. Dzięki za heads-upy.
brian newman
5
ta lista jest fajna, ale naprawdę chcę wiedzieć, jak narysowałeś ten stół? z VIM? która wtyczka? Obecnie szukam jednego.
Kent
6
Użyłem VIM, ale nie mam wtyczki. Jednak; użycie funkcji wyboru bloku uczyniło to stosunkowo łatwym. Cieszę się, że lista była przydatna! ~ brian
brian newman
11
Ctrl-Q do zaznaczania bloków jest specyficzną cechą mswin.vim, która pozwala CTRL-V na wklejanie. Większość użytkowników vima uważa to za złe i wyłącza mswin.vim. „+ P lub Ctrl-R + nie jest tak trudne do wpisania, aby wstawić zawartość schowka.
Benoit
144

gi przechodzi do trybu wstawiania, ustawiając kursor w tym samym miejscu, w którym był wcześniej.

Cyber ​​Oliveira
źródło
29
Byłem bardzo szczęśliwy, gdy dowiedziałem się o g;tym , co teraz doprowadza mnie do łez :-)
Patrick Oscity,
@ Longdeqidao wcale. Powraca do ostatniego punktu wstawiania. Możesz więc przewijać zawartość swoich serc, a to pociągnie cię z powrotem do miejsca, w którym ostatnio wstawiałeś.
Cyber ​​Oliveira,
9
FYI, g; (do którego wspomniano @PatrickOscity) ustawia kursor w miejscu, w którym dokonano edycji. Możesz użyć go wiele razy, aby wrócić do historii. Zwracając na to uwagę, ponieważ moja pomoc vima nie wspomina o tym z jakiegoś dziwnego powodu.
PonyEars,
13
Intuicyjność Vima nigdy nie przestaje mnie imponować. Odkąd @PonyEars wspomniałem g;, próbowałem, czy „przeciwieństwo” byłoby g,i oto i oto możemy iść do przodu i do tyłu!
Cyber ​​Oliveira,
ajest krótszy. :) Ale gijest bardzo intuicyjny, gzwykle jest to operacja odwrotna.
Erwin Rooijakkers,
105
: q!

Chciałbym wiedzieć, że zanim zacząłem vi po raz pierwszy.

Peter Mortensen
źródło
23
jako facet emacsa, to najśmieszniejszy komentarz, jaki przeczytałem. nie jestem pewien, czy tak było. Uszczęśliwiłeś mnie dzisiaj.
pjammer
29
Pamiętam, jak po raz pierwszy spróbowałem vima i emacsa tego samego dnia, nie wiedząc, jak wyjść. Pomyślałem sobie, co do cholery jest nie tak z tymi ludźmi !?
physicsmichael
13
+1. Przy pierwszym uruchomieniu vima domyślnym komunikatem powinien być „write: q to quit”. Zaoszczędziłbym tyle czasu lol
José Ramón
2
@ JoséRamón Ale to nie pokazać go na ekranie domyślnie jeśli wpiszesz vim bez otwierania pliku. Czy zostało to dodane niedawno? Pamiętam, jak wiele lat temu próbowałem vima i już tam był. Mówi także, aby użyć, :q!jeśli spróbujesz wyjść bez zapisywania bufora.
mechalynx
5
@ivy_lynx tak, możesz mieć rację, ale tylko jeśli otworzysz vima bez plików. Zwykle po raz pierwszy otwierasz vima, ponieważ musisz edytować plik konfiguracyjny w Uniksie, więc piszesz „plik $ vim” i nie możesz znaleźć wyjścia. A może jestem jedyny?
José Ramón
56

^ XF kończy się przy użyciu nazw plików z bieżącego katalogu. Nigdy więcej kopiowania / wklejania z terminala lub bolesnego podwójnego sprawdzania.

^ XP kończy się przy użyciu słów w bieżącym pliku

: set scrollbind zmusza jeden bufor do przewijania obok drugiego. np. podziel okno na dwa pionowe panele. Załaduj jeden plik do każdego (być może różne wersje tego samego pliku). Zrób :set scrollbindw każdym. Teraz, gdy przewijasz w jednym, oba panele będą się przewijać razem. Idealny do porównywania plików.

Brian Agnew
źródło
Jak wyłączyć przewijanie po włączeniu?
Amjith,
2
jinxed_coder : :set noscbaby go wyłączyć i użyj, :set scbaby go włączyć (nie :scrollbind). :h scrollbind
jmdeldin
Ups Poprawiono dla „: set scrollbind”.
Brian Agnew
7
^ XP kończy się z pierwszeństwem poprzednich słów w pliku, ^ XN z pierwszeństwem następnych słów w pliku.
u0b34a0f6ae
Możesz także różnicować pliki, otwierając plik 1 i uruchamiając :diffsplit file2lub po prostu uruchamiając vim vim -d file1 file2. Vim automatycznie przewija oba pliki.
Brian McCutchon,
51

Możesz użyć całego zestawu poleceń do zmiany tekstu w nawiasach / nawiasach / cudzysłowach / znacznikach. Bardzo przydatne jest unikanie konieczności rozpoczynania i kończenia grupy. Spróbuj w ci(, ci{, ci<, ci", ci', ctzależności od rodzaju obiektu, który chcesz zmienić. I ca(, ca{, ...warianty usunąć Wsporniki / cudzysłów, jak również.

Łatwe do zapamiętania: zmień instrukcję w nawiasach / zmień instrukcję w nawiasach.

Peter
źródło
16
to nie tylko dla c. Możesz to zrobić za pomocą, daby usunąć (np. Di (lub da (), yszarpnąć, vwybrać itp.)
Nathan Fellman
Dzień dobry! Chciałbym wiedzieć, że używa tego dokumentacja :help? Nigdzie nie mogę tego znaleźć. > _ <
Matej,
1
@ Peter Sprawdziłem je wcześniej, ale nie mogłem znaleźć wzmianki o osobliwym zachowaniu „wewnętrznego + ogranicznika”. Okazuje się, że jest w :help motion.txt! Dzięki!
Matej
2
ta wskazówka jest jedynym powodem, dla którego przestawiłem się na vi :)
Justin L.
1
Jeśli edytujesz HTML lub XML, możesz użyć citdo zmiany zawartości bieżącego znacznika. Na przykład <span>Some text</span>, jeśli kursor znajduje się nad „m”, możesz zrobić, ditaby uzyskać <span></span>.
Jonathan Potter
47
  1. Nigdy nie naciskaj Esc. Zobacz tę odpowiedź, aby dowiedzieć się, dlaczego . Jak wspomniano powyżej, Ctrl+ Cjest lepszą alternatywą. Zdecydowanie sugeruję zmapowanie Caps Lockklucza do ucieczki.

  2. Jeśli edytujesz Ctags języka zgodnego, za pomocą pliku tagi i :ta, Ctrl+ ], itp to świetny sposób, aby poruszać się kod, nawet na wielu plikach. Ponadto uzupełnianie Ctrl+ Ni Ctrl+ Pza pomocą pliku znaczników to świetny sposób na ograniczenie liczby naciśnięć klawiszy.

  3. Jeśli edytujesz owinięty wiersz, ponieważ jest on szerszy niż bufor, możesz poruszać się w górę / w dół za pomocą gk i gj.

  4. Postaraj się skupić na efektywnym użyciu poleceń ruchu, zanim nauczysz się złych nawyków. Rzeczy takie jak używanie „dt” lub „d3w” zamiast naciskania xa razy. Zasadniczo, za każdym razem, gdy wielokrotnie naciskasz ten sam klawisz, prawdopodobnie jest lepszy / szybszy / bardziej zwięzły sposób na osiągnięcie tego samego.

antoni
źródło
11
Nie używasz Escape? To jest herezja. Escape jest twoim najlepszym przyjacielem, zarówno w pracy, jak i poza nią.
xcramps
28
jeśli to taki dobry przyjaciel, dlaczego jest tak daleko na klawiaturze?
Anthony
ponieważ 99% ludzi nigdy go nie używa.
Stefano Borini,
5
Klawisz Escape jest oddzielony od innych klawiszy o kilka cali. Nie możesz tego przegapić.
Brian Carper,
15
# 3 jest niesamowity! Wciąż uczę się nowych rzeczy ...
brian newman
45

Klawisz gwiazdki,, *wyszuka słowo pod kursorem.

[+ Tabprzeniesie Cię do definicji funkcji C, która znajduje się pod twoim kursorem. (Ale to nie zawsze działa.)

smcameron
źródło
1
Wypróbuj „man ctags”, jeśli używasz * nix, aby dowiedzieć się, jak wygenerować plik „tagów”, który mówi vimowi, jak znaleźć definicję dowolnej funkcji lub zmiennej w wielu językach oprócz C. Użyj ctrl +], aby znaleźć definicję tokena pod kursorem lub użyj: tag tokenToFind, aby znaleźć dowolny token, o którym wie. Możesz nawet uruchomić vim za pomocą „vim -t tokenToFind”, aby otworzyć odpowiedni plik i ustawić kursor na funkcji, którą chcesz edytować.
Adam Liss,
23
klawisz # wyszuka słowo pod kursorem w odwrotnym kierunku
Funkodebat
github.com/bronson/vim-visual-star-search umożliwia wyszukiwanie gwiazd dla selekcji wizualnych. Nie chcę już tego przegapić.
Patrick Oscity,
[ + Tab będzie działać zawsze, gdy rozszerzysz pathwymagane foldery, takie jakset path+=path/to/files
dlmeetei
43

ZZ(działa jak :wq)

I o pozycji kursora: odkryłem, że kursor, który zawsze pozostaje na środku ekranu, jest fajny -

set scrolloff=9999
maykeye
źródło
2
Nie wiedziałem tego. :xrobi to również
sa125
18
Nie do końca dokładne. Działa jak :x, który zapisuje plik tylko w przypadku zmian, a :wqzawsze zapisuje plik.
Erik B
ZQ (działa jak: q!)
Xialu
42

Niektóre z moich najnowszych dodatków do sklepu z mózgami Vima:

  • ^wi: Przejdź do znacznika pod kursorem, dzieląc okno.
  • cib/ciB: Zmień tekst odpowiednio w bieżącym zestawie nawiasów () lub nawiasów klamrowych {}.
  • :set listchars=tab:>-,trail:_ list: Pokaż tabulatory / końcowe spacje wizualnie różne od innych spacji. Bardzo pomaga w kodowaniu w języku Python.
Walter
źródło
4
To wymaga więcej głosów! cibjest super.
Matt Parker,
też: ciw, aby zmienić bieżące słowo (lub caw, ta sama, ale tylko lewa ręka) ciW, aby zmienić bieżące W = o. (rd) Sames z v zamiast c wybiorą wizualnie zamiast zastępować
lajarre
5
cib jest równoważne wpisaniu „ci (”. Możesz także zrobić „ci [”, „ci {” lub (jeśli twój vimrc jest poprawnie skonfigurowany) „ci <”, dla innych typów nawiasów.
Tom Lord
2
Również „cit”, aby zmienić tekst wewnątrz tagu. Bardzo przydatne podczas pracy z XML / HTML.
Walter
warto również wspomnieć, że zamiast tego można dodać przyrostek w nawiasie zamykającym. też właśnie dowiedziałem się o ci}& cit- wow, to będzie bardzo przydatne. vi[m]jest bardzo ekscytującym programem [s]!
underscore_d
37

gv uruchamia tryb wizualny i automatycznie wybiera to, co wcześniej wybrałeś.

za dużo php
źródło
34

: shell, aby uruchomić konsolę powłoki z Vima. Przydatne, gdy na przykład chcesz przetestować skrypt bez wychodzenia z Vima. Po prostu naciśnij ^ d, kiedy skończysz z konsolą powłoki, a następnie wrócisz do Vima i edytowanego pliku.

peroumal1
źródło
Myślę, że :!shbyło to zbyt trudne. Wolę to, ponieważ łatwiej jest komponować wiersze poleceń przy użyciu rejestrów / uzupełnień z bieżącego bufora lub np. Użyć %/ %:hdla bieżącej nazwy pliku / nazwy katalogu itp.
patrz
1
Ten jest bardzo fajny. Używam go codziennie .. Wcześniej było: wq, rób cli, ponownie otwieraj vima z tym samym plikiem .. Świetna optymalizacja
Flashin
7
Ctrl-Z, aby przejść do powłoki i fg <ENTER>, aby wrócić do vima.
Mario G.
Umieścić map <Esc>! :shell<CR>w twojej .vimrc, i można uruchomić powłokę tylko z Alt + !, lub Alt + Shift + 1. (Mnemonic: :!{cmd}wykonuje się {cmd}za pomocą powłoki).
musiphil
:shellrozpocznie nowy zagnieżdżony poziom powłoki. Podczas ctrl-zgdy nie.
wisbucky
32

To zawsze mnie rozwesela:

:help 42
dogbane
źródło
31

vimcryption

vim -x nazwa_pliku.txt

Zostaniesz poproszony o hasło, edytuj i zapisz. Teraz za każdym razem, gdy ponownie otworzysz plik w vi, będziesz musiał wprowadzić hasło, aby wyświetlić.

anteatersa
źródło
Zsynchronizuj to ze swoim dropboxem, a otrzymasz naprawdę fajnego menedżera haseł ;-)
Luis Nell,
15
Ale pamiętaj, że chyba, że ​​ty set cryptmethod=blowfish(dostępny tylko w wersji 7.3+) użyje algorytmu o śmiesznej sile. Zobacz help encryptionwięcej szczegółów.
AB
3
Proszę nie używać szyfrowania vim, nie jest to dobre szyfrowanie, a złe bezpieczeństwo jest gorsze niż żadne. Więcej informacji: github.com/neovim/neovim/issues/694
rodrigoq
2
dgl.cx/2014/10/vim-blowfish meta-tldr: „naprawiono w Vimie 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , ze względu na kompatybilność wsteczną potrzebuje aby być nową metodą kryptograficzną, więc użyj :set cm=blowfish2
podkreślenie_d.
28

Twórz i debuguj swój kod z poziomu Vima!

Konfiguracja

Naprawdę niewiele. Potrzebujesz Makefilew bieżącym katalogu.

Kompilować

W Vimie wpisz, :makeaby wywołać powłokę i zbudować program. Nie martw się, gdy wynik przewija się; po Enterzakończeniu naciśnij przycisk , aby powrócić do Vima.

Magia

W Vimie masz do dyspozycji następujące polecenia:

  1. :cl zawiera listę błędów, ostrzeżeń i innych komunikatów.
  2. :ccwyświetla bieżący komunikat o błędzie / ostrzeżenie u dołu ekranu i przeskakuje do linii obrażającej w kodzie.
  3. :cc nprzeskakuje do wiadomości nth .
  4. :cn przechodzi do następnej wiadomości.
  5. :cp przeskakuje do poprzedniej wiadomości.

Jest więcej; jeśli jesteś zainteresowany, wpisz :help :ccz poziomu Vima.

Adam Liss
źródło
1
działa z więcej niż tylko kompilacją kodu. Mianowicie każde zadanie zapisane w pliku makefile jest do tego przydatne.
Dwight Spencer
25

^ P i ^ N

Uzupełnij poprzedni (^ P) lub następny (^ N) tekst.

^ O i ^ I

Przejdź do poprzedniej (^ O - „O” dla starej) lokalizacji lub do następnej (^ I - „I” tuż przy „O”).

Podczas wyszukiwania, edycji plików itp. Możesz poruszać się po tych „skokach” do przodu i do tyłu.

Znaki

Naciśnij ma (znak m, a - nazwa znaku). Później, aby wrócić do pozycji, wpisz „a .

dimba
źródło
1
Wow, nie wiedziałem o ^ O i ^ I: to jest niesamowite. Być może warto podać :help jump-motionsw odpowiedzi itp. Na wypadek, gdyby ktoś chciał uzyskać więcej informacji.
DrAl
sprawdź ShowMarks vim.org/scripts/script.php?script_id=152 . Pomoże ci zapamiętać, gdzie i co wszystkie twoje znaki są w buforze. możesz włączać i wyłączać wizualizację za pomocą \ mt
testera
Nie dostaję różnicy między ^ P i ^ N ...
lajarre
@lajarre przeglądają listę dostępnych prac w przeciwnym kierunku
Patrick Oscity,
2
Często używam ^ O ^ O podczas otwierania Vima po tym, jak zauważyłem, że chcę ponownie edytować ostatnio edytowany plik. Ogromna oszczędność czasu!
Patrick Oscity,
24

Naciśnij, %gdy kursor znajduje się w cudzysłowie, nawiasie, nawiasie lub nawiasie klamrowym, aby znaleźć dopasowanie.

Adam Liss
źródło
20
Jeśli kursor nie znajduje się nad żadnym z nich, przesuwa się w prawo, aż uderzy w jeden z nich.
Cyber ​​Oliveira,
@ Léo: Dzięki za poradę bonusową!
Adam Liss,
22

Do [znak] ( t). Jest przydatny dla każdego polecenia, które akceptuje zakres. Moim ulubionym jest ct;lub, ct)który usuwa wszystko aż do końcowego średnika / nawiasów zamykających, a następnie umieszcza cię w trybie wstawiania.

Również Gi ggsą przydatne (przejdź do dołu i od góry odpowiednio).

MighMoS
źródło
najlepszy tutaj, choć niektóre inne też są przydatne, po prostu wiedziałem o nich wszystkich
Funkodebat 24.04.2013
1
Również fzamiast t, co spowoduje [akcję] w górę przez tę postać; na przykład umieszczenie kursora na początku argumentu funkcji df,spowoduje jego usunięcie (oczywiście w odpowiednich językach).
Actorclavilis
t i f świetnie nadają się do edycji części zmiennej camelCase. Na przykład, jeśli po prostu skopiowałeś linię i chcesz zmienić firstVariable na secondVariable, ustaw kursor na początku firstVariable, a następnie ctV
Greg
1
T i F również działają, ale w przeciwnym kierunku.
Fede
20

^r^w aby wkleić słowo pod kursorem w trybie poleceń.

Jest to bardzo przydatne podczas używania poleceń grep lub replace.

Peter Mortensen
źródło
Jeśli jest to jedyne potrzebne słowo, * w trybie normalnym wyszuka słowo pod kursorem.
idbrii
17

Wpisanie numeru linii, a następnie, ggspowoduje przejście do tej linii.

Xastor
źródło
31
: następuje numer wiersza robi to samo: 42 przechodzi do wiersza 42
Anti Veeranna
12
Wpisanie numeru linii, a następnie G, ma taki sam efekt.
Cyber ​​Oliveira,
3
<number>goprzechodzi do <number>th znaku w pliku.
Actorclavilis
17

Żałuję, że nie znałem wcześniej podstawowych elementów trybu wizualnego. Nawet jeśli nie używasz Vima do niczego innego, otwarcie pliku w Vimie dla niektórych operacji blokowania może być znacznie oszczędniejsze. Jestem pewien, że zmarnowałem mnóstwo czasu, robiąc takie rzeczy ręcznie.

Przykłady, które uważam za szczególnie przydatne, gdy, powiedzmy, refaktoryzacja list stałych symbolicznych w sposób konsekwentny:

Wejdź w tryb Visual Block ( Ctrl+ Qdla mnie w systemie Windows zamiastCtrl + V)

Przesuń kursor, aby podświetlić żądany blok.

Następnie I whatever texti naciśnij, Escaby wstawić tekst przed blokiem w każdym wierszu.

Użyj Azamiast, Iaby wstawić tekst po bloku w każdej linii.

Również - zwykłe przełączanie przypadku wizualnego wyboru za pomocą ~może znacznie zaoszczędzić czas.

dOczywiście, po prostu usuwając kolumny .

Anon
źródło
15

^ y skopiuje znak powyżej kursora.

innaM
źródło
6
... i ^ E wstawi znak pod kursorem
za dużo php
nie działa dla mnie, po prostu przesuwa kursor na początek tekstu
Alex
14

q <letter> - rejestruje makro.

i

@ <same-letter> - odtwarza.

Są to zdecydowanie najbardziej przydatne polecenia w Vimie, ponieważ możesz sprawić, że komputer wykona za ciebie całą pracę, a nawet nie będziesz musiał pisać programu ani nic.

leeand00
źródło
Zastosowanie qupraszcza sprawy, ale nie musisz tego używać: po prostu zapisz w nazwanym buforze polecenie bufora "- na przykład używając bufora a- "ad$...
Mei
@Mei qrejestruje makro; makra mogą zawierać polecenia, a nie tylko tekst, więc "ad$różnią się od qa.
Brian McCutchon,
@Sortofabeginner Nie ma tu znaczenia. Polecenie „ad $ umieszcza tekst w buforze a i qa go uruchamia.
Mei
2
@Mei qago nie uruchamia; qanagrywa i @auruchamia. Prawdą jest, że możesz napisać makro w postaci zwykłego tekstu, zapisać go w rejestrze az czymś podobnym "ad$, a następnie wykonać za pomocą @a, ale jest to o wiele więcej pracy. Istnieje zasadnicza różnica między wycinaniem i wklejaniem oraz nagrywaniem i uruchamianiem.
Brian McCutchon
Doh! Wiedziałem to. Dzięki za korektę
Mei
13

Otwieranie wielu plików za pomocą kart

:tabe filepath

Nawigacja między otwartymi plikami

gt and gT or :tabn and :tabp

Zapisz otwartą sesję, aby móc później wrócić do listy otwartych plików

:mksession session_file_name.vim

Otwórz utworzoną sesję

vim -S session_file_name.vim

Zamknij wszystkie pliki na raz

:qa

Kolejne polecenie, którego nauczyłem się niedawno

autocmd

Pozwala na uruchomienie polecenia na zdarzeniu, dzięki czemu możesz na przykład uruchomić polecenie make podczas zapisywania pliku przy użyciu czegoś takiego:

:autocmd BufWritePost *.cpp :make
Mansuro
źródło
12

qx rozpocznie rejestrowanie naciśnięć klawiszy. Możesz wykonać prawie każde zadanie edycyjne i Vim je pamięta. Hit q ponownie po zakończeniu, a następnie naciśnij @x odtworzyć naciśnięcia klawiszy. Jest to świetne w przypadku powtarzających się edycji, które są zbyt skomplikowane, aby napisać mapowanie. Możesz mieć wiele nagrań, używając znaku innego niż x .

za dużo php
źródło
5
Również ten sam znak „x” jest współdzielony między poleceniem makra rekordu „q” a nazwanymi schowkami („x ...). Możesz zostawić fragmenty makr siedzące wokół pliku i skopiować je do nazwanego schowka (np.„ Xyy ), a następnie je odtworzyć (@x).
Cyber ​​Oliveira,
A jeśli kiedykolwiek utworzysz makro awesomisty, możesz wkleić ten schowek do swojego _vimrc za pomocą 'let @x = ""' (wstawiając makro do "") i zapisać go na zawsze!
Kearns
11

Chciałbym powiedzieć, że jednym z moich ulubionych jest umieszczenie okna pomocy w nowej karcie:

:tab help <help_topic>

Otwiera to pomoc w nowej zakładce i, jak ktoś, kto kocha karty Vima, jest to absurdalnie przydatne.

Robert Massaioli
źródło
2
Bufory są zakładkami vima. Są lepiej obsługiwane przez przepływ pracy vim. Podejrzewam, że tabulatory zostały dodane tylko do vima, ponieważ zbyt wiele osób nie rozumiało buforów.
still_dreaming_1
Ok, więc wkrótce po powiedzeniu tego, znalazłem zastosowanie dla kart w vimie. Prawdą jest, że jeśli używasz jednego bufora na kartę, musisz dowiedzieć się o buforach. Nie tak tabulatory miały być używane w vimie. Najbardziej zaawansowani użytkownicy vima używają buforów tak, jak tabulatory są używane w większości programów. Wiele osób uważa, że ​​tabulatory powinny mieć nazwy vim. Są one głównie przeznaczone do otwierania różnych kolekcji okien w różnych zakładkach. Możesz również mieć konkretny bufor, do którego często wracasz, otwarty w jednej karcie i używać drugiej karty do przeglądania wszystkich innych buforów.
still_dreaming_1
9

cw

Zmień słowo - usuwa słowo pod kursorem i wprowadza cię w tryb wstawiania, aby wpisać nowe. Oczywiście działa to z innymi klawiszami ruchu, więc możesz robić rzeczy takie jak c $, aby zmienić na koniec linii.

znak f +

Znajduje kolejne wystąpienie znaku w bieżącej linii. Możesz więc wykonać vft, aby zaznaczyć cały tekst do następnego „t” w bieżącym wierszu. To kolejny klawisz ruchu, więc działa również z innymi poleceniami.

Adam Neal
źródło
9

:b [any portion of a buffer name]przełączać bufory. Więc jeśli masz dwa bufory: „somefile1.txt” i „someotherfile2.txt”, możesz przełączyć się na drugi za pomocą ":b 2.t<enter>". Obsługuje również uzupełnianie tabulatorów, chociaż nie jest to wymagane.

Mówiąc o zakończeniu tabulacji, ustawienie :set wildmode=full wildmenujest również bardzo pomocne. Umożliwia pełne uzupełnianie tabulatorów w trybie poleceń, a także bardzo pomocne menu w stylu ncurses wszystkich możliwych dopasowań podczas jego używania.

Michael
źródło
9

:% s, / search, / replace,

Możesz użyć znaków innych niż /(ukośnik), aby oddzielić wzorce do zamiany. W ten sposób nie musisz uciekać przed ukośnikami ścieżek plików.

hfs
źródło
2
o cholera tak. Wiedziałem, sedże to mam , ale nie vim. Im więcej wiesz ♒ ☆
beerbajay