Вы можете передать параметр :scope
в ваш валидатор следующим образом:
validates_uniqueness_of :medium, scope: :country
Для этого можно использовать макрос. Выполните следующие действия.
gg
. qq
. dd
после. q
. 10000 @ q
PS: Чтобы перейти в командный режим, просто нажмите Escape несколько раз .
У вас должна быть возможность использовать макрос:
http://www.oreillynet.com/mac/blog/2006/07/more_vim_save_time_with_macros_1.html
Вызовите sed:
:% !sed -e '2~2 d'
^^^^ pipe file through a shell command
^^^^^^ the command is sed, and -e describes an expression as parameter
^^^^^ starting with the second line, delete every second line
из почтового архива vim :
:let i=1 | while i <= line('$') | if (i % 2) | exe i . "delete" | endif | let i += 1 | endwhile
(При вводе в одну строку в командной строке vim удаляются строки 1,3,5,7, .. .)
Вы всегда можете передать команду оболочки по конвейеру, что означает, что вы можете использовать любой язык сценариев, который вам нравится:
:%!perl -nle 'print if $. % 2'
(или использовать «если» вместо «если», в зависимости от того, какие строки вы хочу)
:%!awk -- '++c\%2'
или
:%!awk -- 'c++\%2'
в зависимости от того, какую половину вы хотите отсеять.
Вы можете использовать собственные возможности поиска и замены Vim следующим образом: Поместите курсор в первую строку и введите в обычном режиме:
:.,/fff/s/\n.*\(\n.*\)/\1/g
., / Fff /
- это диапазон для замены. Это означает «от этой строки до строки, которая соответствует регулярному выражению fff
(в данном случае последняя строка). s ///
- это команда замены. Она ищет регулярное выражение и заменяет каждое его вхождение строкой. g
в конце означает повторение подстановки до тех пор, пока регулярное выражение будет найдено. \ n. * \ (\ n. * \)
соответствует новой строке, затем целая строка (. *
соответствует любому количеству символов, кроме новой строки), затем еще одна новая строка и еще одна строка. Круглые скобки \ (
и \)
вызывают запись выражения внутри них, поэтому мы можем использовать его позже, используя \ 1
. :map ^o ddj^o
^o
Здесь ^ означает CTRL. Рекурсивный макрос для удаления строки каждые две строки. Хорошо выберите первую строку и все готово.