You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
claude-code/src/main/java/com/claudecode/command/impl/KeybindingsCommand.java

60 lines
3.0 KiB

package com.claudecode.command.impl;
import com.claudecode.command.CommandContext;
import com.claudecode.command.BaseSlashCommand;
import com.claudecode.console.AnsiStyle;
import java.util.List;
/**
* /keybindings 命令 —— 显示和配置快捷键。
*/
public class KeybindingsCommand extends BaseSlashCommand {
@Override
public String name() { return "keybindings"; }
@Override
public String description() { return "Show keyboard shortcuts"; }
@Override
public List<String> aliases() {
return List.of("keys", "shortcuts");
}
@Override
public String execute(String args, CommandContext context) {
StringBuilder sb = new StringBuilder();
sb.append("\n").append(AnsiStyle.bold(" ⌨ Keyboard Shortcuts\n"));
sb.append(" ").append("─".repeat(50)).append("\n\n");
sb.append(AnsiStyle.bold(" Input\n"));
sb.append(" ").append(AnsiStyle.cyan("Enter ")).append(" Submit message\n");
sb.append(" ").append(AnsiStyle.cyan("Shift+Enter ")).append(" New line\n");
sb.append(" ").append(AnsiStyle.cyan("Tab ")).append(" Command completion\n");
sb.append(" ").append(AnsiStyle.cyan("↑/↓ ")).append(" History navigation\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+A ")).append(" Move to line start\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+E ")).append(" Move to line end\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+W ")).append(" Delete word backward\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+U ")).append(" Delete to line start\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+K ")).append(" Delete to line end\n\n");
sb.append(AnsiStyle.bold(" Control\n"));
sb.append(" ").append(AnsiStyle.cyan("Ctrl+C ")).append(" Interrupt current operation\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+D ")).append(" Exit (when input is empty)\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+L ")).append(" Clear screen\n");
sb.append(" ").append(AnsiStyle.cyan("Ctrl+R ")).append(" Reverse history search\n\n");
sb.append(AnsiStyle.bold(" Vim Mode (/vim to enable)\n"));
sb.append(" ").append(AnsiStyle.cyan("Esc ")).append(" Normal mode\n");
sb.append(" ").append(AnsiStyle.cyan("i ")).append(" Insert mode\n");
sb.append(" ").append(AnsiStyle.cyan("a ")).append(" Append after cursor\n");
sb.append(" ").append(AnsiStyle.cyan("dd ")).append(" Delete line\n");
sb.append(" ").append(AnsiStyle.cyan("yy ")).append(" Yank line\n");
sb.append(" ").append(AnsiStyle.cyan("p ")).append(" Paste\n");
sb.append(" ").append(AnsiStyle.cyan("w/b ")).append(" Word forward/backward\n");
sb.append(" ").append(AnsiStyle.cyan("0/$ ")).append(" Line start/end\n");
return sb.toString();
}
}