pub fn get_commands() -> Vec<Vec<&'static str>> {
return vec![
vec!["h", "Moves left"],
vec!["j", "Moves down"],
vec!["k", "Moves up"],
vec!["l", "Moves right"],
vec!["H", "Moves to top of screen"],
vec!["M", "Moves to middle of screen"],
vec!["L", "Moves to bottom of screen"],
vec!["w", "Moves to the start of next word"],
vec!["W", "Moves to the start of next WORD (sequence of non-blank characters)"],
vec!["e", "Moves to the end of a word"],
vec!["E", "Moves to the end of a WORD (sequence of non-blank characters)"],
vec!["b", "Moves backwards to the start of a word"],
vec!["B", "Moves backwards to the start of a WORD (sequence of non-blank characters)"],
vec!["ge", "Moves backwards to the end of the previous word"],
vec!["gE", "Moves backwards to the end of the previous WORD (sequence of non-blank characters"],
vec!["%", "Move to matching character '()','{}','[]'"],
vec!["0", "Jump to the beginning of the line"],
vec!["^", "Jump to the first character of the line"],
vec!["$", "Jump to the end of the line"],
vec!["g_", "Jump to the last character of the line"],
vec!["gg", "Go to the first line of the file"],
vec!["G", "Go to the last line of the file"],
vec!["5gg", "Go to line 'x', in this case line 5"],
vec!["5G", "Go to line 'x', in this case line 5"],
vec!["gd", "Go to local declaration"],
vec!["gD", "Go to global declaration"],
vec!["gD", "Go to global declaration"],
vec!["fx", "Go to next occurence character, in this case 'x'"],
vec!["tx", "Go to before the next occurence of character, in this case 'x'"],
vec!["Fx", "Go to previous occurence of character, in this case 'x'"],
vec!["Tx", "Go to before the previous occurence of character, in this case 'x'"],
vec![";", "Repeat previous 'f', 't', 'F' or 'T' movement"],
vec![",", "Repeat previous 'f', 't', 'F' or 'T' movement backwards"],
vec!["}", "Jump to next function/block"],
vec!["{", "Jump to previous function/block"],
vec!["zz", "Center cursor on screen"],
vec!["zt", "Position cursor on top of screen"],
vec!["zb", "Position cursor on bottom of screen"],
vec!["Ctrl + e", "Move screen down one line"],
vec!["Ctrl + y", "Move screen up one line"],
vec!["Ctrl + f", "Move forward one full page"],
vec!["Ctrl + b", "Move back one full page"],
vec!["Ctrl + d", "Move forward half a page"],
vec!["Ctrl + u", "Move back half a page"],
vec!["i", "Enters insert mode before the cursor"],
vec!["I", "Enters insert mode before the first character of the line"],
vec!["a", "Enters insert mode after the cursor"],
vec!["A", "Enters insert mode at the end of the line"],
vec!["o", "Enters insert mode on a newline below the current line"],
vec!["O", "Enters insert mode on a newline above the current line"],
vec!["Ctrl + h", "While in insert mode, delete character before the cursor"],
vec!["Ctrl + w", "While in insert mode, delete the word before the cursor"],
vec!["Ctrl + j", "While in insert mode, begin newline"],
vec!["Ctrl + t", "While in insert mode, indent the current line"],
vec!["Ctrl + d", "While in insert mode, de-indent the current line"],
vec!["Ctrl + n", "Autocomplete next match before the cursor during insert mode"],
vec!["Ctrl + p", "Autocomplete previous match before the cursor during insert mode"],
vec!["r", "Replace the character under the cursor"],
vec!["R", "Replace more than one character until 'Esc' is pressed"],
vec!["J", "Join line below with the current line with one space in between"],
vec!["gJ", "Join line below with the current line keeping indentation"],
vec!["gwip", "Reflow paragraph"],
vec!["g~", "Switch case up to next motion"],
vec!["gu", "Switch to lowercase up to next motion"],
vec!["gU", "Switch to uppercase up to next motion"],
vec!["cc", "Change line"],
vec!["C", "Change to end of line"],
vec!["ciw", "Change entire word"],
vec!["s", "Delete character under cursor and enter insert mode"],
vec!["S", "Delete line and enter insert mode"],
vec!["u", "Undo"],
vec!["Ctrl + r", "Redo"],
vec![".", "Repeat last command"],
];
}