Как стать автором
Обновить
3
0
kiba @kiba

IT инженер

Отправить сообщение
А как вы пишете в vim по-русски?

у меня вот такой вот сниппет в .vimrc с давних времён, хотя думаю что уже должны быть более универсальные и элегантные решения…

set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl\\;'zxcvbnm\\,.~QWERTYUIOP{}ASDFGHJKL:\\"ZXCVBNM<>

nmap Ж :
" yank
nmap Н Y
nmap з p
nmap ф a
nmap щ o
nmap г u
nmap З P
ну тут нужно соблюдать баланс читаемости и краткости, или вносить расшифровку в комментарии при объявлении переменной. и ваш пример не совсем коррелирует с шоткатами vim, где любую непонятную комманду можно изучить в справке.
Со вторым ясно удаляет внутри (), а что делает первый?

не удаляет, а заменяет. cit — тоже самое, только «заменить текст внутри тэга» (html или xml), очень удобно. а удалить будет соответственно dib/dit (delete in brackets / tag).

И почему-то не работает: c% — Вырезание выражения в скобках. (% этоShift+5)

% — это не внутри скобок, это до следующий / предыдущей скобки (и других парных символов) под курсором (или ближейшей к курсору). подробней про этот оператор можно прочитать в справке :help %
не мог пройти мимо такого невежества:
в vim применяется какая-то шаманская клавиатурная магия

это лишь кажется на первый взгляд и для людей без знания английского языка (такие ещё встречаются среди IT-специалистов?). для всех остальных большинство клавиатурных сокращений понятны и являются именно сокращениями, в отличии от менее понятных ctrl+c, ctrl+v и т.п.:
dwdelete word
gtgo to tab
cit/cibchange in tag / brackets
yyank
vvisual
ppaste
И множество других…
отсутствие автоформатирования xml из коробки.
но, по правде признаться, код выше я как раз и выдрал из своего .vimrc, в котором и исправляется этот досадный недостаток =)

au FileType xml exe ":silent 1,$!xmllint --format --recover - 2>/dev/null"
~$ xmllint --format --recover ogromenny.xml 2>/dev/null | head -n20
случайный совет, альтернативная реализация через xmllint и html2text (у меня с xmlstarlet не работало — были проблемы с кодировкой):

function taocl() {
        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-ru.md |
        pandoc -f markdown -t html -s |
        xmllint --format --recover --dropdtd --html --xpath "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" - 2>/dev/null |
        html2text -utf8 |
        fmt -80
}
спасибо, опробую.
А уже готовых темплейтов для заббикс нету под это дело? Чтоб руками не добавлять все элементы данных и т.п.
немного оффтопа…
вот эту вот конструкцию:
(tmux has-session -t remote && tmux attach-session -t remote) || (tmux new-session -s remote)

можно заменить на:
tmux new-session -As remote

The -A flag makes new-session behave like attach-session if session-name already exists;
так в squeeze версия bash 4.1-3, до сих пор уязвима. по-крайней мере отсюда все эксплоиты подтвердили уязвимость. надо из wheezy пакет ставить, версия >=4.2.37(1).
ещё можно использовать Esc, Dot (.), для подстановки последнего аргумента последней команды, иногда удобней чем !!:
$ ls -al /path/to/directory
$ cd <ESC> <.> # преобразуется в cd /path/to/directory
наверно уже не актуально, но отвечу для тех кто придёт сюда из гугла: сравнить чексуммы таблиц можно с помощью утилиты pt-table-checksum, которая входит в состав набора percona-toolkit.
лучшая кибер-спортивная дисциплина всех времен и народов.
тоже этот вопрос интересует, написано «Нет в наличии», но в корзину добавить можно…
По результатам этих бесчеловечных опытов будет принято решение по использованию reCaptcha для других задач.

image
понятно. просто сама идея проверки не понравилась: наличие в langPair русского языка, (а вдруг впоследствии яндекс научится переводить не только с ru / на ru, или разучится как в примере с итальянским). в любом случае спасибо за статью.

кстати, а может имеет смысл поместить полученние массива langPairs в конструктор класса, и впоследствие уже сверять с имеющимся значением, или тоже лишняя нагрузка на переводчик?
в исходном коде смутила проверка на возможность перевода, например не проверяется возможность перевода с русского на итальянский (ru-it), которой нет в возвращаемом json. поэтому не лучше ли было заменить эту конструкцию:

public function yandexTranslate($fromLang, $toLang, $text) {
        //один из языков должен быть ru - проверяем, хотя переводчик и так вернет текст - сообщение об ошибке

        if ($fromLang != 'ru' AND $toLang != 'ru'){
            return 'Sorry, translation directly from '.$fromLang.' to '.$toLang.' is impossible';
        }


следующей:

public function yandexTranslate($fromLang, $toLang, $text) {
        $langPair = $fromLang."-".$toLang;

        // проверяем возможность перевода с $fromLang на $toLang
        if (!in_array($langPair, $this->yandexGetLangsPairs())){
            return 'Sorry, translation directly from '.$fromLang.' to '.$toLang.' is impossible';
        }
о нет, киберпанк это «high tech, low life», а тут скорее «high tech — new life»

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность