diff --git a/readline/codes.go b/readline/codes.go index e524bc6..006b342 100644 --- a/readline/codes.go +++ b/readline/codes.go @@ -49,6 +49,7 @@ var ( seqEndSc = string([]byte{27, 91, 52, 126}) seqDelete = string([]byte{27, 91, 51, 126}) seqDelete2 = string([]byte{27, 91, 80}) + seqCtrlDelete = string([]byte{27, 91, 51, 59, 53, 126}) seqShiftTab = string([]byte{27, 91, 90}) seqAltQuote = string([]byte{27, 34}) // Added for showing registers ^[" seqAltR = string([]byte{27, 114}) // Used for alternative history diff --git a/readline/readline.go b/readline/readline.go index 7972086..b4ae201 100644 --- a/readline/readline.go +++ b/readline/readline.go @@ -777,6 +777,18 @@ func (rl *Instance) escapeSeq(r []rune) { rl.viDeleteByAdjust(rl.viJumpB(tokeniseLine)) rl.updateHelpers() + case seqCtrlDelete: + if rl.modeTabCompletion { + rl.resetVirtualComp(false) + } + // This is only available in Insert mode + if rl.modeViMode != VimInsert { + return + } + rl.saveToRegister(rl.viJumpW(tokeniseLine)) + rl.viDeleteByAdjust(rl.viJumpW(tokeniseLine)) + rl.updateHelpers() + default: if rl.modeTabFind { return