code: @Override
  	public boolean execute(final LineReader reader, final String[] parts, final SqlConfig sqlConfig,
  			final Properties props) {
  		PrintWriter writer = reader.getTerminal().writer();
  		writer.println("HISTORY:");
  		writer.flush();
  
  		List<String> keywords = new ArrayList<>();
  		if (parts.length > 1) {
  			keywords.addAll(Arrays.asList(Arrays.copyOfRange(parts, 1, parts.length)));
  		}
  
  		int sizeLen = String.valueOf(reader.getHistory().size()).length();
  		reader.getHistory().forEach(entry -> {
  			try {
  				String value = entry.line();
  				if (keywords.isEmpty() || keywords.stream().anyMatch(s -> value.contains(s))) {
  					writer.println(String.format("%" + sizeLen + "d : %s", entry.index() + 1, value));
  				}
  			} catch (Exception e) {
  				// do nothing
  			}
  		});
  		writer.flush();
  		return true;
  	}
docs: {@inheritDoc}
  
  @see jp.co.future.uroborosql.client.command.ReplCommand#execute(org.jline.reader.LineReader, java.lang.String[], jp.co.future.uroborosql.config.SqlConfig, java.util.Properties)