diff --git a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java index 2479759d9..fe1273b68 100644 --- a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java +++ b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java @@ -3966,14 +3966,12 @@ private String matchPreviousCommand(String buffer) { } History history = getHistory(); StringBuilder sb = new StringBuilder(); - char prev = '0'; - for (char c: buffer.toCharArray()) { + for (char c: buffer.replace("\\", "\\\\").toCharArray()) { if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == '^' || c == '*' - || c == '$' || c == '.' || c == '?' || c == '+' || (c == '\\' && prev != '\\')) { + || c == '$' || c == '.' || c == '?' || c == '+') { sb.append('\\'); } sb.append(c); - prev = c; } Pattern pattern = Pattern.compile(sb.toString() + ".*", Pattern.DOTALL); Iterator iter = history.reverseIterator(history.last());