1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
---
category: tool
tool: vim
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["Adam Bobowski", "https://github.com/Bobowski"]
lang: pl-pl
filename: LearnVim-pl.txt
---
[Vim](http://www.vim.org)
(Vi IMproved) jest klonem popularnego edytora vi dla systemów Unix.
Zaprojektowany z myślą o prędkości edycji i zwiększeniu produktywności jest
wszechobecny na systemach UNIXopodobnych. Posiada wiele skrótów klawiszowych
do szybkiej nawigacji do wybranych miejsc w plikach oraz szybkiej edycji
danych fragmentów.
## Podstawy nawigacji w Vim
```
vim <nazwapliku> # Otwórz <nazwapliku> w vim
:q # Zamknij vim
:w # Zapisz aktualny plik
:wq # Zapisz i wyjdź z vim
:q! # Wyjdź bez zapisywania
# ! *wymusza* wykonanie :q, dlatego nie wykonuje zapisu
:x # Zapisz i wyjdź, krótszy odpowiednik :wq
u # Cofnij operację
CTRL+R # Powtórz operację
h # Przesuń kursor w lewo
j # Przesuń kursor w dół
k # Przesuń kursor w górę
l # Przesuń kursor w prawo
# Poruszanie w obrębie jednej lini
0 # Skocz do początku linii
$ # Skocz do końca linii
^ # Skocz do pierwszego niebiałego znaku
# Wyszukiwanie w tekście
/slowo # Zaznacza wszystkie wystąpienia słowa za kursorem
?slowo # Zaznacza wszystkie wystąpienia słowa przed kursorem
n # Przemieszcza kursor do następnego wystąpienia słowa
N # Przemieszcza kursor do poprzedniego wystąpenia słowa
:%s/foo/bar/g # Zamień 'foo' na 'bar' w każdej linii tekstu
:s/foo/bar/g # Zamień 'foo' na 'bar' w aktualnej linii
# Skoki do znaków
f<znak> # Skocz do przodu i zatrzymaj się na <znak>
t<znak> # Skocz do przodu i zatrzymaj się przed <znak>
# Na przykład,
f< # Skocz do przodu i zatrzymaj się na <
t< # Skocz do przodu i zatrzymaj się przed <
# Moving by word
w # Przesuń kursor do przodu o jedno słowo
b # Przesuń kursor do tyłu o jedno słowo
e # Przesuń kursor do końca aktualnego słowa
# Inne znaki do przemieszczania się
gg # Skocz na początek pliku
G # Skocz na koniec pliku
:NUM # Skocz do linii o numerze NUM
H # Skocz na górę ekranu
M # Skocz na środek ekranu
L # Skocz na dół ekranu
```
## Tryby
Vim oparty jest na koncepcji **trybów**.
Command Mode - (Tryb komend) vim zaczyna w tym trybie, używany do nawigacji i wpisywania komend
Insert Mode - (Tryb wprowadzania) używany do wprowadzania zmian w pliku
Visual Mode - (Tryb wizualny) używany do zaznaczania tekstu i wykonywania komend na nim
Ex Mode - (Tryb Ex)
```
i # Przechodzi to trybu wprowadzania, przed pozycją kursora
a # Przechodzi do trybu wprowadzania, za pozycją kursora
v # Przechodzi do trybu wizualnego
: # Przechodzi do trybu ex
<esc> # Wychodzi z dowolnego aktywnego trybu do trybu komend
# Kopiowanie i wklejanie tekstu
y # Skopiuj zaznaczony tekst
yy # Skopiuj aktualną linię
d # Usuń zaznaczony tekst
dd # Usuń aktualną linię
p # Wklej skopiowany tekst za kursorem
P # Wklej skopiowany tekst przed kursorem
x # Usuń znak pod kursorem
```
## 'Gramatyka' vim'a
Vim można traktować jako zbiór komend w formacie 'Akcja-Modyfikator-Obiekt', gdzie:
Akcja - jedna z dostępnych akcji
Modyfikator - w jaki sposób wykonywana jest akcja
Obiekt - obiekt na którym wykonywana jest akcja
Kilka ważnych przykładów Akcji, Modyfikatorów i Obiektów:
```
# 'Akcje'
d # Usuń
c # Zmień
y # Skopiuj
v # Zaznacz
# 'Modyfikatory'
i # W środku
a # Dookoła
NUM # Liczba
f # Szuka czegoś i zatrzymuje się na tym
t # Szuka czegoś i zatrzymuje się przed tym
/ # Znajduje napis od kursora naprzód
? # Znajduje napis przed kursorem
# 'Obiekty'
w # Słowo
s # Zdanie
p # Paragraf
b # Blok
# Przykładowe 'zdania'
d2w # Usuń 2 słowa
cis # Zmień w zdaniu
yip # Skopiuj paragraf w którym jest kursor
ct< # Zamień na <
d$ # Usuń tekst do końca linii
```
## Pewne skróty i triki
<!--TODO: Dodać więcej!-->
```
> # Zrób wcięcie zaznaczonego bloku
< # Usuń wcięcie zaznaczonego bloku
:earlier 15m # Przywróć dokument do stanu z przed 15 minut
:later 15m # Odwróć efekt poprzedniej komendy
ddp # Zamień kolejnością kolejne linie, dd potem p
. # Powtórz poprzednią komendę
```
## Makra
Makra są właściwie nagrywanymi akcjami. Gdy zaczynasz nagrywać makro, nagrywa ono
**każdą** akcję i komendę jaką wykonasz do momentu przerwania nagrywania.
Wywołanie makra wykonuje dokładnie te same operacje w tej samej kolejności.
```
qa # Zacznij nagrywać makro 'a'
q # Przerwij nagrywanie
@a # Odtwórz makro 'a'
```
### Konfiguracja ~/.vimrc
Plik .vimrc może być użyty do skonfigurowania Vim'a przy jego starcie
Poniżej zamieszczono przykładowy plik ~/.vimrc:
```vim
" Przykładowy ~/.vimrc
" 2016.10
" Wymagane aby korzystać z opcji iMproved
set nocompatible
" Na podstawie typu pliku włącza inteligentne wcięcia i inne.
filetype indent plugin on
" Włącz podkreślanie składni
syntax on
" Lepsze uzupełnianie składni komend
set wildmenu
" Wyszukiwanie będzie ignorować wielkość liter poza przypadkami gdy użyjemy wielkich liter
set ignorecase
set smartcase
" Po otwarciu pliku gdzie nie jest zdefiniowane zachowanie wcięć
" zostanie zachowane wcięcie takie samo jak w aktualnej linii
set autoindent
" Wyświetlaj numer lini
set number
" Opcje wcięć, zmień w zależności od osobistych upodobań
" Szerokość TAB w spacjach
set tabstop=4
" Liczba spacji w TAB podczas edycji
set softtabstop=4
" Liczba spacji gdy wykonywane są operacje wcięcia (>> i <<)
set shiftwidth=4
" Zamieniaj tabulatory na spacje
set expandtab
" Aktywuj inteligentne tabulatory i spacje do wcięć i wyrównań
set smarttab
```
### Odniesienia [ENG]
[Vim | Home](http://www.vim.org/index.php)
`$ vimtutor`
[A vim Tutorial and Primer](https://danielmiessler.com/study/vim/)
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about)
[Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim)
|