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.

77 lines
2.9 KiB

  1. /*
  2. Vi is stateful, so you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell)
  3. */
  4. #include QMK_KEYBOARD_H
  5. #ifdef USE_BABBLEPASTE
  6. # include "babblePaste.h"
  7. # ifdef BABL_VI
  8. bool babblePaste_vi(uint16_t keycode) {
  9. # ifdef BABL_MOVE
  10. BABLM(BABL_GO_LEFT_1C, "h");
  11. BABLM(BABL_GO_RIGHT_1C, "l");
  12. BABLM(BABL_GO_LEFT_WORD, "b");
  13. BABLM(BABL_GO_RIGHT_WORD, "w");
  14. BABLM(BABL_GO_START_LINE, IMSFT(X_6));
  15. BABLM(BABL_GO_END_LINE, IMSFT(X_4));
  16. BABLM(BABL_GO_START_DOC, "gg");
  17. BABLM(BABL_GO_END_DOC, IMSFT(X_G));
  18. BABLM(BABL_GO_NEXT_LINE, "j");
  19. BABLM(BABL_GO_PREV_LINE, "k");
  20. BABLM(BABL_GO_PARA_START, IMSFT(X_LBRACKET));
  21. BABLM(BABL_GO_PARA_END, IMSFT(X_RBRACKET));
  22. BABLM(BABL_PGDN, SS_LCTRL("f"));
  23. BABLM(BABL_PGUP, SS_LCTRL("b"));
  24. BABLM(BABL_DEL_RIGHT_1C, "x");
  25. BABLM(BABL_DEL_LEFT_WORD, "dge");
  26. BABLM(BABL_DEL_RIGHT_WORD, "dw");
  27. BABLM(BABL_DEL_TO_LINE_END, "d" IMSFT(X_4));
  28. BABLM(BABL_DEL_TO_LINE_START, "d" IMSFT(X_6));
  29. BABLM(BABL_MODE, "Vi ");
  30. # endif
  31. # ifdef BABL_OSKEYS
  32. BABLM(BABL_UNDO, "h");
  33. BABLM(BABL_REDO, SS_LCTRL("r"));
  34. BABLM(BABL_CUT, "x");
  35. BABLM(BABL_COPY, "y");
  36. BABLM(BABL_PASTE, "p");
  37. BABLM(BABL_SELECT_ALL, IMSFT(X_SCOLON) SS_TAP(X_5) "y"); // wrong but helpful?
  38. BABLM(BABL_FIND, SS_TAP(X_SLASH));
  39. BABLM(BABL_FIND_NEXT, "n");
  40. BABLM(BABL_FIND_PREV, IMSFT(X_N));
  41. BABLM(BABL_FIND_REPLACE, OMALT(IMSFT(X_5)));
  42. BABLM(BABL_RUNAPP, ":split"); // requires VIM, is vsplit better?
  43. BABLM(BABL_SWITCH_APP_NEXT, IMCTL(X_DOWN)); // Or Right?
  44. BABLM(BABL_SWITCH_APP_NEXT, IMCTL(X_UP)); // or Left?
  45. BABLM(BABL_CLOSE_APP, IMCTL(X_SCOLON) "q");
  46. BABLM(BABL_HELP, SS_LSFT(SS_TAP(X_SCOLON)) "h"); // start search in help
  47. // BABLM( BABL_LOCK, () ); Perhaps VI is not an OS?
  48. // BABLM( BABL_SCREENCAPTURE, () ); // capture a buffer?
  49. # endif
  50. # ifdef BABL_BROWSER
  51. /* what _is_ the VI browser now that vimpirator is dead?*/
  52. # endif
  53. # ifdef BABL_APP
  54. BABLM(BABL_APP_SAVE, SS_TAP(X_ESCAPE) ":w");
  55. BABLM(BABL_APP_SET_MARK, SS_TAP(X_ESCAPE) "ma"); // real vi people probably want multiple marks,not just a
  56. # ifdef BABL_APP_WINDOWSPLITTING
  57. BABLM(BABL_SPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":vsplit");
  58. BABLM(BABL_UNSPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":hide"); // debatable.
  59. BABLM(BABL_SPLIT_FRAME_HORIZONTAL, SS_TAP(X_ESCAPE) ":vsplit");
  60. BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, SS_TAP(X_ESCAPE) ":hide");
  61. BABLM(BABL_NEXT_FRAME, SS_LCTRL("w") "w");
  62. BABLM(BABL_PREV_FRAME, SS_LCTRL("w") SS_LSFT("w"));
  63. # endif
  64. # endif // app
  65. // Todo, ring bell, flash light, show user this isn't supported
  66. return false;
  67. }
  68. # endif // VI
  69. #endif // Babblepaste