2007 Vim Tips

Wstęp

Jak czytać.

Większość instrukcji jest postaci

  1. klawisze - opis
  2. klawisze - opis

Co do klawiszy to czytamy je zgodnie ze sposobem zapisu VIM.
Instrukcje są wydawane w trybie komend do którego przechodzimy za pomocą <ESC> .

Opis zapisu klawiszy w Vim

zapis oznacza
^X "Ctrl-X" (czyli : 1.wcisnij Ctrl, 2.Wcisnij X, 3.puść oba).
<NAME> oznacza klawisz specjalny o znawie NAME
np. <ESC> - escape , <INS> - instert , etc
<strzałki> oznacza kurstory:
<LEFT> , <RIGHT> , <UP> , <DOWN>

Tips

metoda na Czeski błąd

Czeski błąd to taki jak dwie literki są zamienione.
Np. mamy "mian" zamiast main.
Radzimy sobie tak:

  1. <strzałki> - najeżdzamy w trybie poleceń na pierwszy ze znaków
  2. xp - wciskamy "xp".

Usuwanie początkowych znaków w wielu liniach (np. ">>>>" z maili)

Otóż aby usunąć początkowe bajty np. z maila mającego cytat z ">>>>>" na początku każdej lini robimy tak:

  1. zaznaczmy blok tekstu w trybie wizualnym
  2. <DEL> - usówamy

Zamienić litery "małe na DUŻE" oraz "DUŻE na małe"

Tryb wizualny

Wyrażenia regularne…

"małe na DUŻE"
(np gdy chcemy aby wyrazy w podwujnych nawiasach "" i "" w całym pliku byly zamionione na pisane dużymi literami)
:1,$s/{{[A-Za-z]*}}/\U&/g
źródło: vim.org : Tip 298.

"DUŻE na małe"
(np gdy chcemy aby wyrazy w podwujnych nawiasach "" i "" w całym pliku byly zamionione na pisane małymi literami)
:1,$s/{{[A-Za-z]*}}/\L&/g
źródło: vim.org : Tip 298.

Linie tekstu

guu : lowercase line
gUU : uppercase line

źródło: Tip #305 - Best of VIM Tips

Wcięcie w wielu liniach - zwiększenie/zmieniejszenie

Czasami chcemy zwiększyć/zmniejszyć wczięscie w wielu liniach na raz (np. kopiując i wklejając kod pythona).
Oto jak to robić w VIM:
Aby wciąć (głębiej):

  1. zaznaczmy blok tekstu w trybie wizualnym
  2. > - wystarczy teraz nacisnąć ">" by wciąć głębiej

Aby wyciąć (płycej):

  1. zaznaczmy blok tekstu w trybie wizualnym
  2. < - wystarczy teraz nacisnąć "<" by wyciąć płycej

Autoformatowanie kodu

Autoformatowanie fragmentu kodu:

  1. ^V - Zaznaczam blok za pomocą : ^V (t.j.Ctrl-V) i strzałek
  2. = - autoformatuje kod za pomocą : =

Autoformatowanie całego pliku

  1. ggVG - Zaznaczam cały plik za pomocą : ggVG (w graficznych t.j. gvim wybrać edycja->Zaznacz całość
  2. = - autoformatuje kod za pomocą : =

I kod się sam autoformatuje ! :D

Porada zaczerpnięta z :
Vim.org: Tip #1130: Format a code block: =i{

is the formatting command, which has a default behavior of using Vim's internal formatting/indentation features.

i{ is a text object selection which selects a code block: vi{

combine the two, and you can format a code block by typing =i{

learn more about text object selections by typing :h text-objects

more and more of these text objects keep getting added (by Vim7 I know there are some really useful ones: it (inner tag, for xml editing) and i" (inside quotes) and more)

Dopełnianie słów

<C-N> <C-P> : word completion in insert mode
<C-X><C-L> : Line complete SUPER USEFUL

źródło: Tip #305: Best of VIM Tips (VIM's best Features)

Słownik Spell (sprawdzanie pisowni - spell checker)

Więc włączamy sprawdzanie pisowni
po polsku: :set spl=pl spell
po angielsku : :set spl=en spell
wyłączamy: :set nospell

z= - wyświetla listę sugestii słów podobnych dla słowa będącego pod kursorem (niekoniecznie oznaczonego jako błędne)
[s , ]s , ]S , [S - poruszanie się pomiędzy błędnymi słowami (s - pomiędzy błędnymi lub rzadkimi, S - tylko błędnymi)

W pomocy polecają by w trybie wprowadzania wykonać <C-X> a potem przełączać sugestie za pomocą: <C-N> oraz <C-P>.

źródło: ":help spell" w Vim7

Polecam zmapować sobie skróty <C-S> <C-Z> w normalnym trybie by móc włączać szybko słownik i korekcje.
Robimy to dodając do konfiguracji (plik .vimrc) albo po prostu wpisując:
:nmap <C-S> :set spell spl=pl
co nam pozwala łatwo włączyć słowniki:

  • polski <C-S><CR> i już
  • angielski <C-S>przeprawiamy "spl=" na en<CR>
  • inny <C-S>przeprawiam "spl=" na co innego<CR>

:nmap <C-Z> z=
Jeżeli nie jesteś przywiązany do domyślnego działania <C-Z> to polecam… dzięki temu nie trzeba wklepywać z=<CR> za każdym razem gdy chcemy poprawiać słowo pod kursorem….
ew. jeszcze :imap <C-Z> <ESC>z= by mieć tę możliwość również w trybie edycjii (może się komuś to kłucić z m$"wytnij") a poza tym trzeba pamiętać o powrocie do trybu edycjii…

Filtring "Przefiltrowywanie" (np. sortowanie )

Jeżeli chcemy grupę wierszy przefiltrować, to nie ma problemu.
Dla posortowania robimy
:<range>!sort i mamy posortowane
(pod windowsami może być potrzebne :<range>!sort.exe z programem sort.exe dostępnym dla vim.)
Dla posortowania wierszy od 10 do 21 robisz:
:10,21!sort
dla posortowania całego pliku poza pierwszymi 10 wierszami robisz:
:11,$!sort

Można też użyć innych programów, np. aby zastąpić dany fragment np. od 10 do 15 wiersza ilością "znaków, słów, wierszy" robimy :
:10,15!wc
:).

Można też korzystać z tego w trybie wizualnym, odsyłam do źródeł:

Źródło:
Tip #1166 - Sort lines - easy use of existing vim capability

Refactoring

Vim.org: Tip #589: Vim as refactoring tool (with examples in C#)

Here is the vim-code:

vmap \em :call ExtractMethod()<cr>
function! ExtractMethod() range
let name = inputdialog("Name of new method:")
'<
exe "normal O\<bs>private " . name ."()\<cr>{\<esc>"
'>
exe "normal oreturn ;\<cr>}\<esc>k"
s/return/\/\/ return/ge
normal j%
normal kf(
exe "normal yyPi// = \<esc>wdwA;\<esc>"
normal ==
normal j0w
endfunction

refactor : C/C++ refactoring tool

description
This plugin contains some basic refactoring commands for C/C++.
For the complexity of C++, instead of really parse the source code, I used
regular expression matches. But it works well as I tested.

Fold Folding - Zwijanie i rozwijanie

Dla kodu w C/C++

Jak w dokumentacji Vim-a
http://www.vim.org/htmldoc/fold.html (patrz jeszcze Vim tips: Folding fun )
Robimy "set foldmethod=syntax" , a potem skróty : za, zo, zO, zc, zC, zM … itd.

Folding for Plain Text files based on indentation

Tip #1168: Folding for Plain Text files based on indentation

(…)
Unfolded text:
heading A
line 1
line 2
line 3
heading B
(…)
What I wanted when folded:
heading A
heading B
(…)

Addons

Articles

Linux.com : Vim Tips.

http://applications.linux.com/search.pl?query=vim

Using Tabs

linux.com: Vim tips: Using tabs

Using Vim mappings and abbreviations

Vim tips: Using Vim mappings and abbreviations

Using viewports

Vim tips: Using viewports

Working with external commands

linux.com: Vim tips: Working with external commands

Vim's newest features

lniux.com: Vim's newest features

Inne linki zwiazane

http://www.vim.org/tips/tip.php?tip_id=93

Combining Vim’s Syntax Definitions
http://www.linux-mag.com/id/1000
http://209.85.135.104/search?q=cache:DX8y1_jdd4AJ:www.linux-mag.com/id/1000/+Combining+Vim%E2%80%99s+Syntax+Definitions&hl=pl&strip=1

Wyrażenia regularne w VIM

linki:
Vim Regular Expressions
Vim Regular Expressions 101

Tips:
W wyrażeniach regularnych wim trzeba używać częściej znaku "\" niż w sed (np. przed metaznakiem "+").

Jak używać:
Przed (i po) wyrażeniem s/…/… trzeba napisać czego ma dotyczyć np.
:s/…/… pierszego wystąpienia w aktualnej lini
:s/…/…/g wszystkich wystapień w aktualnej lini
:1,$s/…/…/ dotyczy pierwszego wystąpienia w każdej lini od pierwszej do ostatniej
:%s/…/…/ dotyczy pierwszego wystąpienia w każdej lini od pierwszej do ostatniej
:5,12s/…/…/ dotyczy pierwszego wystąpienie w każdej lini od 5tej do 12stej
:1,$s/…/…/g dotyczy wszystkich wystąpień.
:%s/…/…/g dotyczy wszystkich wystąpień.

Użyteczne wyrażenia:

Użyteczne wyrażenia:
s/ \+/ / zamienia ciągi spacji na pojedyńcze spacje
s/<\([^>"']\)\+/\L&/ zamienie początki znaczników HTML na małe litery
(tzn. od znaku < do kończąc na jedenym z '>" )

Obsługa dodatkowych formatów plików

Tip #1474: VIM and PL/SQL programming
Tip #1475: VIM and PL/SQL programming

Tipsy … cytaty z innych

Szkoda żeby się zgubiło, więc najlepsze tipsy, cytowane

Umieszamy tutaj : 2007-vim-tips-cytaty

HowTo

Zaznaczanie obszaru w trybie wizualnym

direct link

  1. <strzałki> - Ustawiamy kurstor na skranym znaku obszaru (t.j. na którymś z "rogów" obszaru , np. lewym górnym)
  2. ^V - Przechodzimy w tryb blokowy za pomocą Ctrl-V
  3. <strzałki> - zaznaczamy blok.

Z takim zaznaczonym blokiem można zrobić wiele rzeczy (np. za pomocą <DEL> usunąć :P ).
Zaznaczanie bloku jest wykorzystawane w wielu poradach i tipsach.

Inne

Vim Color Scheme Test - galeria schematów kolorów dla Vim-a.
Vim.org: Tip #580: Switching back and forth between ViM and Visual Studio .NET
Vim Regular Expressions
Vim Regular Expressions 101
Fifrefox like VIM ! - How to control Firefox using Vim keybindings

vi survival guide
vi-vim-cheat-sheet.gif

Vim, UTF-8 i ISO-8859-2 - po polsku od automaciej

W tym do posegregowania:
http://www.rayninfo.co.uk/vimtips.html - Tipsy różne taki sheet
http://www.vim.org/tips/tip.php?tip_id=305 - Tip #305: Best of VIM Tips (VIM's best Features)
http://www.lagmonster.org/docs/vi2.html Vi Cheat Sheet
(vim tips were moved to wiki so following links needed to be updated)
http://www.vim.org/tips/tip.php?tip_id=883 Automatically maximizing gvim in KDE
http://www.vim.org/tips/tip.php?tip_id=1479
http://www.vim.org/tips/tip.php?tip_id=1477
http://www.vim.org/tips/tip.php?tip_id=1458
http://www.vim.org/tips/tip.php?tip_id=1463
http://www.vim.org/tips/tip.php?tip_id=1386
http://www.vim.org/tips/tip.php?tip_id=1228
http://www.vim.org/tips/tip.php?tip_id=1470
http://www.vim.org/tips/tip.php?tip_id=1465
http://www.faqs.org/docs/Linux-HOWTO/C-editing-with-VIM-HOWTO.html - C editing with VIM HOWTO

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License