can3p: (Default)
2011-05-28 06:12 pm
Entry tags:

Поиск и замена в vim

При всем великолепии vim’а есть еще плюшки, которые не устают радовать глаз. Одна из них – это поиск и замена в файлах.

Искать можно как вперед ( / ), так и назад( ? ), сразу искать слово под курсором( * ), перемещаться по результатам поиска как туда ( n ), так и обратно( N )

С заменой все тоже очень богато. Можно заменять отсюда и до конца строки/параграфа/текста, так же и наоборот, между определенными строками, на определенное количество строк и т.д.(http://vim.wikia.com/wiki/Search_and_replace). Можно заменить в выделенном блоке текста( выделить и нажать v ).

Самое прекрасное – это то, что везде можно использовать регулярные выражения.
Например, в xml файле есть куча тегов <transition>blablabla</transition>, которые занимают несколько строк. Удалить можно одним махом:

:%s/<transition>\_.\{-}<\/transition>//g

Здесь \_ – это любой символ, включая символы новой строки, \{-} – это нежадный аналог оператора * в других диалектах.

Использованная литература:
Regular Expression matching more than a single line in Vim
Vim Regular Expressions


Оригинал: http://blog.dpetroff.ru/tech/vim_search_replace
can3p: (Default)
2011-03-04 02:12 am
Entry tags:

% и vim

Меня давно угнетало, что, в vim повторялся следующий шаблон:

находимся в папке ~/someproject
Начинаем работу: cd ~/someproject && gvim some/deep/file1.txt
Предположим, что в той же папке лежит файл file2.txt

Раньше я всегда набирал для file2 путь полность, т.к. до этого путь вводился через командную строку.

И вот, оказывается, что в vim есть спецрегистр %, который содержит имя текущего буфера. В итоге набор сократился до краких:

$ cd ~/someproject
$ gvim some/deep/file1.txt

А теперь делаем в редакторе: :e %C-W C-W C-W
И все, красота!


Оригинал: http://blog.dpetroff.ru/tech/vim_filename_buffer