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.
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.
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.
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.
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.
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.
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.
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>.
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.
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.
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.
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
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ś.
: 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.
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.
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ć.
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
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:
:cl zawiera listę błędów, ostrzeżeń i innych komunikatów.
:ccwyświetla bieżący komunikat o błędzie / ostrzeżenie u dołu ekranu i przeskakuje do linii obrażającej w kodzie.
:cc nprzeskakuje do wiadomości nth .
:cn przechodzi do następnej wiadomości.
:cp przeskakuje do poprzedniej wiadomości.
Jest więcej; jeśli jesteś zainteresowany, wpisz :help :ccz poziomu Vima.
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.
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).
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.
: 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.
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.
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:
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 .
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.
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.
: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.
Odpowiedzi:
Naprawdę chciałbym wiedzieć, że możesz użyć CtrlCzamiast Escwyjść z trybu wstawiania. To dla mnie prawdziwy wzrost wydajności.
źródło
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:
„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:
Równoważny:
Widzieć:
źródło
<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
):%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>
.%s:
powinno być:%s
, a dla mojego systemu potrzebowałem\(\)
zamiast\\(\\)
Utworzyłem odniesienie do mojego najczęściej używanego polecenia dla mojego znajomego:
źródło
gi przechodzi do trybu wstawiania, ustawiając kursor w tym samym miejscu, w którym był wcześniej.
źródło
g;
tym , co teraz doprowadza mnie do łez :-)g;
, próbowałem, czy „przeciwieństwo” byłobyg,
i oto i oto możemy iść do przodu i do tyłu!a
jest krótszy. :) Alegi
jest bardzo intuicyjny,g
zwykle jest to operacja odwrotna.Chciałbym wiedzieć, że zanim zacząłem vi po raz pierwszy.
źródło
:q!
jeśli spróbujesz wyjść bez zapisywania bufora.^ 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 scrollbind
w każdym. Teraz, gdy przewijasz w jednym, oba panele będą się przewijać razem. Idealny do porównywania plików.źródło
:set noscb
aby go wyłączyć i użyj,:set scb
aby go włączyć (nie:scrollbind
).:h scrollbind
:diffsplit file2
lub po prostu uruchamiając vimvim -d file1 file2
. Vim automatycznie przewija oba pliki.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', ct
zależności od rodzaju obiektu, który chcesz zmienić. Ica(, ca{, ...
warianty usunąć Wsporniki / cudzysłów, jak również.Łatwe do zapamiętania: zmień instrukcję w nawiasach / zmień instrukcję w nawiasach.
źródło
c
. Możesz to zrobić za pomocą,d
aby usunąć (np. Di (lub da (),y
szarpnąć,v
wybrać itp.):help
? Nigdzie nie mogę tego znaleźć. > _ <:help motion.txt
! Dzięki!cit
do zmiany zawartości bieżącego znacznika. Na przykład<span>Some text</span>
, jeśli kursor znajduje się nad „m”, możesz zrobić,dit
aby uzyskać<span></span>
.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.
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.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.
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.
źródło
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.)
źródło
[ + Tab
będzie działać zawsze, gdy rozszerzyszpath
wymagane foldery, takie jakset path+=path/to/files
ZZ
(działa jak:wq
)I o pozycji kursora: odkryłem, że kursor, który zawsze pozostaje na środku ekranu, jest fajny -
źródło
:x
robi to również:x
, który zapisuje plik tylko w przypadku zmian, a:wq
zawsze zapisuje plik.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.źródło
cib
jest super.ci}
&cit
- wow, to będzie bardzo przydatne.vi[m]
jest bardzo ekscytującym programem [s]!gv uruchamia tryb wizualny i automatycznie wybiera to, co wcześniej wybrałeś.
źródło
: 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.
źródło
:!sh
był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ć%
/%:h
dla bieżącej nazwy pliku / nazwy katalogu itp.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).:shell
rozpocznie nowy zagnieżdżony poziom powłoki. Podczasctrl-z
gdy nie.To zawsze mnie rozwesela:
źródło
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ć.
źródło
set cryptmethod=blowfish
(dostępny tylko w wersji 7.3+) użyje algorytmu o śmiesznej sile. Zobaczhelp encryption
więcej szczegółów.:set cm=blowfish2
„Twórz i debuguj swój kod z poziomu Vima!
Konfiguracja
Naprawdę niewiele. Potrzebujesz
Makefile
w bieżącym katalogu.Kompilować
W Vimie wpisz,
:make
aby 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:
:cl
zawiera listę błędów, ostrzeżeń i innych komunikatów.:cc
wyświetla bieżący komunikat o błędzie / ostrzeżenie u dołu ekranu i przeskakuje do linii obrażającej w kodzie.:cc n
przeskakuje do wiadomościn
th .:cn
przechodzi do następnej wiadomości.:cp
przeskakuje do poprzedniej wiadomości.Jest więcej; jeśli jesteś zainteresowany, wpisz
:help :cc
z poziomu Vima.źródło
^ 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 .
źródło
:help jump-motions
w odpowiedzi itp. Na wypadek, gdyby ktoś chciał uzyskać więcej informacji.Naciśnij,
%
gdy kursor znajduje się w cudzysłowie, nawiasie, nawiasie lub nawiasie klamrowym, aby znaleźć dopasowanie.źródło
Do [znak] (
t
). Jest przydatny dla każdego polecenia, które akceptuje zakres. Moim ulubionym jestct;
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ż
G
igg
są przydatne (przejdź do dołu i od góry odpowiednio).źródło
f
zamiastt
, co spowoduje [akcję] w górę przez tę postać; na przykład umieszczenie kursora na początku argumentu funkcjidf,
spowoduje jego usunięcie (oczywiście w odpowiednich językach).^r^w
aby wkleić słowo pod kursorem w trybie poleceń.Jest to bardzo przydatne podczas używania poleceń grep lub replace.
źródło
Wpisanie numeru linii, a następnie,
gg
spowoduje przejście do tej linii.źródło
<number>go
przechodzi do<number>
th znaku w pliku.Ż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 text
i naciśnij, Escaby wstawić tekst przed blokiem w każdym wierszu.Użyj
A
zamiast,I
aby 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.d
Oczywiście, po prostu usuwając kolumny .źródło
^ y skopiuje znak powyżej kursora.
źródło
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.
źródło
q
upraszcza sprawy, ale nie musisz tego używać: po prostu zapisz w nazwanym buforze polecenie bufora"
- na przykład używając buforaa
-"ad$
...q
rejestruje makro; makra mogą zawierać polecenia, a nie tylko tekst, więc"ad$
różnią się odqa
.qa
go nie uruchamia;qa
nagrywa i@a
uruchamia. Prawdą jest, że możesz napisać makro w postaci zwykłego tekstu, zapisać go w rejestrzea
z 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.Otwieranie wielu plików za pomocą kart
Nawigacja między otwartymi plikami
Zapisz otwartą sesję, aby móc później wrócić do listy otwartych plików
Otwórz utworzoną sesję
Zamknij wszystkie pliki na raz
Kolejne polecenie, którego nauczyłem się niedawno
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:
źródło
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 .
źródło
Chciałbym powiedzieć, że jednym z moich ulubionych jest umieszczenie okna pomocy w nowej karcie:
Otwiera to pomoc w nowej zakładce i, jak ktoś, kto kocha karty Vima, jest to absurdalnie przydatne.
źródło
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.
źródło
: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 wildmenu
jest 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.źródło
:% 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.źródło
sed
że to mam , ale nievim
. Im więcej wiesz ♒ ☆