message: add gUU and guu, they don't work right though because gU and gu trigger first
diff: @@ -2094,6 +2094,27 @@ export class UpperCaseWithMotion extends UpperCaseOperator {
  public modes = [ModeName.Normal];
  }
  +@RegisterAction
  +export class UpperCaseWholeLine extends BaseCommand {
  + public keys = ["g", "U", "U"];
  + public modes = [ModeName.Normal];
  +
  + public async exec(position: Position, vimState: VimState): Promise<VimState> {
  + const count = vimState.recordedState.count;
  + const fromPos = position.getLineBegin();
  + const toPos = position.getDownByCount(count).getLineEnd();
  + const range = new vscode.Range(fromPos, toPos);
  + let text = vscode.window.activeTextEditor.document.getText(range);
  +
  + await TextEditor.replace(range, text.toUpperCase());
  +
  + vimState.currentMode = ModeName.Normal;
  + vimState.cursorPosition = position;
  +
  + return vimState;
  + }
  +}
  +
  @RegisterAction
  export class LowerCaseOperator extends BaseOperator {
  public keys = ["u"];
  @@ -2118,6 +2139,27 @@ export class LowerCaseWithMotion extends LowerCaseOperator {
  public modes = [ModeName.Normal];
  }
  +@RegisterAction
  +export class LowerCaseWholeLine extends BaseCommand {
  + public keys = ["g", "u", "u"];
  + public modes = [ModeName.Normal];
  +
  + public async exec(position: Position, vimState: VimState): Promise<VimState> {
  + const count = vimState.recordedState.count;
  + const fromPos = position.getLineBegin();
  + const toPos = position.getDownByCount(count).getLineEnd();
  + const range = new vscode.Range(fromPos, toPos);
  + let text = vscode.window.activeTextEditor.document.getText(range);
  +
  + await TextEditor.replace(range, text.toLowerCase());
  +
  + vimState.currentMode = ModeName.Normal;
  + vimState.cursorPosition = position;
  +
  + return vimState;
  + }
  +}
  +
  @RegisterAction
  export class MarkCommand extends BaseCommand {
  keys = ["m", "<character>"];
  