Поиск символа обратной косой черты в vim

Вот пример из стандартной библиотеки Python, inspect.py. Это в настоящее время читает

def strseq(object, convert, join=joinseq):
    """Recursively walk a sequence, stringifying each element."""
    if type(object) in (list, tuple):
        return join(map(lambda o, c=convert, j=join: strseq(o, c, j), object))
    else:
        return convert(object)

, Это имеет, как параметры, функция преобразования и функция соединения, и рекурсивно идет по спискам и кортежам. Рекурсия реализована с помощью карты (), где первый параметр является функцией. Код предшествует поддержке закрытий в Python, так нуждается в двух дополнительных параметрах по умолчанию, для передачи преобразовывают и присоединяются в рекурсивный вызов. С закрытиями это читает

def strseq(object, convert, join=joinseq):
    """Recursively walk a sequence, stringifying each element."""
    if type(object) in (list, tuple):
        return join(map(lambda o: strseq(o, convert, join), object))
    else:
        return convert(object)

На языках OO, Вы обычно не используете закрытия слишком часто, как можно использовать объекты передать состояние - и связанные методы, когда язык имеет их. Когда Python не имел закрытий, люди сказали, что Python эмулирует закрытия с объектами, тогда как Lisp эмулирует объекты с закрытиями. Как пример от НЕАКТИВНОГО (ClassBrowser.py):

class ClassBrowser: # shortened
    def close(self, event=None):
        self.top.destroy()
        self.node.destroy()
    def init(self, flist):
        top.bind("<Escape>", self.close)

Здесь, self.close является обратным вызовом без параметров, вызванным, когда Escape нажимается. Однако для близкой реализации действительно нужны параметры - а именно, сам, и затем self.top, self.node. Если бы Python не имел связанных методов, Вы могли бы записать

class ClassBrowser:
    def close(self, event=None):
        self.top.destroy()
        self.node.destroy()
    def init(self, flist):
        top.bind("<Escape>", lambda:self.close())

Здесь, лямбда добралась бы "сам" не от параметра, а от контекста.

8
задан joe 13 July 2009 в 07:49
поделиться

4 ответа

Try:

/\\word

in command mode.

16
ответ дан 3 November 2019 в 14:38
поделиться

You can search for most anything in your document using regular expressions. From normal mode, type '/' and then start typing your regular expression, and then press enter. '\<' would match the beginning of a word, so

/\<foo

would match the string 'foo' but only where it is at the beginning of a word (preceded by whitespace in most cases).

You can search for the backslash character by escaping it with a backslash, so:

/\<\\foo

Would find the pattern '\foo' at the beginning of a word.

4
ответ дан 3 November 2019 в 14:38
поделиться

Причина, по которой поиск чего-то, включающего "\", отличается, потому что "\" является специальным символом, и его нужно экранировать (с добавлением обратной косой черты)

Аналогично, для поиска " $ 100 », который включает специальный символ« $ »:

Press /
Type \$100
Press return

Для поиска« abc », который не включает специальный символ:

Press /
Type abc
Press return
3
ответ дан 3 November 2019 в 14:38
поделиться

Не имеет прямого отношения ( / \\ word - правильное решение, и здесь ничего не меняет), но для вашей информации:

: h magic

Если вы используете шаблон со многими символами, имеющими особое значение для регулярных выражений, вы можете найти полезными режимы «номагический» и «очень номагический».

/\V^.$

вместо этого будет искать буквальную строку ^. $ из «строк ровно одного символа» ( \ v «очень волшебный» и по умолчанию \ m «волшебный» режимы) или «строк ровно одной точки» ( \ M "номагический" режим).

3
ответ дан 3 November 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: