vim
Wskazówki i porady, jak zwiększyć produktywność
Szukaj…
Składnia
- : ustaw relativenumber
- :Ustaw numer
- : set nonumber /: set nonu
- : pwd
Uwagi
To automatyczne przeładowanie nastąpi tylko wtedy, gdy edytujesz vimrc
w pełnej wersji vim, która obsługuje autocmd
.
Szybkie makra „wyrzucane”
Dodaj to do swojego vimrc:
nnoremap Q @q
Aby rozpocząć rejestrowanie makra „wyrzucanego”, użyj qq
. Aby zakończyć nagrywanie, naciśnij q
(w trybie normalnym dla obu).
Aby wykonać zarejestrowane makro, użyj Q
Jest to przydatne w przypadku makr, które należy powtarzać wiele razy z rzędu, ale później nie będzie można ich ponownie użyć.
Korzystanie z funkcji uzupełniania ścieżki w Vimie
Jest to bardzo częste, zapamiętujesz ścieżkę do pliku lub folderu, otwierasz Vima i próbujesz napisać to, co właśnie zapamiętałeś, ale nie masz 100% pewności, że jest poprawne, więc zamknij edytor i zacznij od nowa.
Jeśli chcesz skorzystać z funkcji uzupełniania ścieżki i masz plik /home/ubuntu/my_folder/my_file
i edytujesz inny plik odwołujący się do ścieżki poprzedniego:
Wejdź w tryb wstawiania: wstaw lub zrób to tak, jak chcesz. Następnie napisz /h
. Gdy kursor znajduje się pod h
, naciśnij Ctrl x, a następnie Ctrl f, aby edytor dokończył go do /home/
ponieważ wzorzec /h
jest unikalny
Załóżmy teraz, że masz dwa foldery w katalogu /home/ubuntu/
nazwie my_folder_1
my_folder_2
i chcesz ścieżkę /home/ubuntu/my_folder_2
jak zwykle:
Wejdź w tryb wstawiania
wpisz /h
i naciśnij Ctrl x, a następnie Ctrl f . Teraz masz /home/
Next dodaj u po / home / i naciśnij Ctrl x, a następnie Ctrl f . Teraz masz /home/ubuntu/
ponieważ ta ścieżka jest unikalna. Teraz napisz my
po /home/ubuntu/
i naciśnij Ctrl x, a następnie Ctrl f . Edytor dokończy twoje słowo, aż my_folder_
zobaczysz drzewo katalogów, więc użyj klawiszy strzałek, aby wybrać to, które chcesz.
Włącz względne numery linii
Aby usunąć niektóre wiersze tekstu, gdy nie znasz dokładnej liczby wierszy do usunięcia, próbuj 10dd
, 5dd
, 3dd
dopóki nie usuniesz wszystkich wierszy.
Względne numery wierszy rozwiązują ten problem, załóżmy, że mamy plik zawierający:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
Wejdź w tryb NORMALNY: Esc
Teraz wykonaj :set relativenumber
. Po zakończeniu plik zostanie wyświetlony jako:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
gdzie 0
jest numerem linii dla bieżącej linii, a także pokazuje rzeczywistą liczbę linii przed liczbą względną, więc teraz nie musisz szacować liczby linii z bieżącej linii, aby wyciąć lub usunąć lub gorzej policzyć je jeden po jednym.
Możesz teraz wykonać zwykłe polecenie, takie jak 6dd
i masz pewność co do liczby linii.
Możesz także użyć krótkiej formy tego samego polecenia :set rnu
aby włączyć liczby względne i :set nornu
aby wyłączyć to samo.
Jeśli również :set number
lub masz :set number
już włączony, otrzymasz numer linii, w której znajduje się kursor.
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Wyświetlanie numerów linii
Aby wyświetlić numery linii z widoku domyślnego, wprowadź
:set number
Aby ukryć numery linii
:set nonumber
Istnieje także skrót do powyższego. nu
jest takie samo jak number
.
:set nonu
Aby ukryć numery linii, możemy również użyć
:set nu!
Mapowania dotyczące wychodzenia z trybu wstawiania
Wielu użytkowników Vima uważa Esc za trudny do osiągnięcia i w końcu znajduje inne mapowanie, które jest łatwo dostępne z rzędu domu. Pamiętaj, że Ctrl - [ może być odpowiednikiem Esc na angielskiej klawiaturze i jest znacznie łatwiejszy do osiągnięcia.
j k
inoremap jk <ESC>
Ten jest naprawdę łatwy do uruchomienia; po prostu rozbij dwa pierwsze palce w głównym rzędzie w tym samym czasie. Trudno również uruchomić przypadkowo, ponieważ „jk” nigdy nie pojawia się w żadnym angielskim słowie, a jeśli jesteś w trybie normalnym, nic nie robi. Jeśli nie wpiszesz zbytnio „blackjacka”, zastanów się również nad dodaniem inoremap kj <ESC>
, abyś nie musiał martwić się czasem dwóch klawiszy.
Duże litery
Linux
W systemie Linux możesz użyć xmodmap
aby Caps Lock działał tak samo jak Esc . Umieść to w pliku:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
Następnie uruchom xmodmap file
. Spowoduje to ponowne mapowanie Caps Lock na Esc .
Windows
W systemie Windows można użyć SharpKey lub AutoHotkey .
System operacyjny Mac
Jeśli masz system macOS 10.12.1 lub nowszy, możesz ponownie przypisać Caps Lock do Escape za pomocą Preferencji systemowych. Wybierz Klawiatura, przejdź do karty Klawiatura i kliknij Klawisze modyfikujące.
Jak poznać katalog i / lub ścieżkę edytowanego pliku
Aby poznać ścieżkę do katalogu, w którym znajduje się plik, możesz użyć:
Esc, aby przejść do trybu poleceń
:pwd
Spowoduje to wydrukowanie ścieżki do katalogu na dole edytora, w ten sposób
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Teraz, jeśli chcesz poznać nazwę edytowanego pliku w stosunku do katalogu roboczego vim, możesz użyć:
Esc, aby przejść do trybu poleceń CTRL G.
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Wreszcie, aby uzyskać bezwzględną ścieżkę do edytowanego pliku, użyj
Esc, aby przejść do trybu poleceń,
1, a następnie CTRL G.
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Szukaj w bloku funkcyjnym
Aby wyszukać tekst foo
w bloku {}
otaczającym kursor, użyj następującego polecenia ( <ESC>
- klawisz Escape, <CR>
- klawisz Enter):
vi{<ESC>/\%Vfoo<CR>
Teraz można przejść między meczami w bloku naciskając n
i p
. Jeśli masz hlsearch
opcję hlsearch
, podświetli to wszystkie dopasowania. \%V
jest specjalną częścią wzorca wyszukiwania, która mówi vimowi, aby szukał tylko w wizualnie wybranym obszarze. Możesz także wykonać takie mapowanie:
:vnoremap g/ <ESC>/\%V
Następnie powyższe polecenie zostaje skrócone do następującego:
vi{g/foo<CR>
Kolejną przydatną sztuczką jest wydrukowanie wszystkich linii zawierających wzór:
vi{
:'<,'>g/foo/#
Zakres '<,'>
jest wstawiany automatycznie.
Zobacz :help range
i :help :g
.
Skopiuj, przenieś lub usuń znalezioną linię
Wielu użytkowników znajduje się w sytuacji, w której chcą po prostu szybko skopiować, przenieść lub usunąć linię i powrócić do miejsca, w którym byli.
Zwykle, jeśli chcesz przenieść linię, która zawiera słowo lot
poniżej bieżącego wiersza, wpisz coś takiego:
/lot<Esc>dd<C-o>p
Aby zwiększyć wydajność, możesz użyć tego skrótu w następujących przypadkach:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
Więc takie wyszukiwanie:
/lot$m
przesunąłby linię, która zawiera lot
poniżej linii, na której znajdował się kursor podczas rozpoczynania wyszukiwania.
Napisz plik, jeśli zapomnisz `sudo` przed uruchomieniem vima
To polecenie zapisze otwarty plik z prawami sudo
:w !sudo tee % >/dev/null
Możesz także zmapować w!!
zapisać plik jako root
:cnoremap w!! w !sudo tee % >/dev/null
Automatycznie przeładuj vimrc po zapisaniu
Aby automatycznie ponownie załadować vimrc
po zapisaniu, dodaj do vimrc
:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
a następnie po raz ostatni wpisz:
:so $MYVIMRC
Następnym razem, gdy zapiszesz vimrc
, zostanie on automatycznie ponownie załadowany.
nested
jest przydatne, jeśli korzystasz z vim-Airlines. Proces ładowania linii lotniczej uruchamia niektóre polecenia automatyczne, ale ponieważ jesteś w trakcie wykonywania polecenia automatycznego, są one pomijane. nested
umożliwia uruchamianie zagnieżdżonych poleceń automatycznych i umożliwia prawidłowe ładowanie linii lotniczej.
Uzupełnienie linii poleceń
ustaw wildmenu
aby włączyć sugestie zakończenia dla wiersza poleceń.
Wykonaj następujące czynności
set wildmenu
set wildmode=list:longest,full
Teraz, jeśli powiesz :color
karta :color
,
Dostaniesz
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark