{"id":19420365,"url":"https://github.com/frontend-labs/vim-combinations","last_synced_at":"2025-07-27T09:04:55.075Z","repository":{"id":77929099,"uuid":"42596823","full_name":"frontend-labs/vim-combinations","owner":"frontend-labs","description":"A repository to store key combinations useful for vim :punch: :godmode: :punch:","archived":false,"fork":false,"pushed_at":"2016-01-18T22:20:03.000Z","size":16,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-03T06:41:43.690Z","etag":null,"topics":["howto","tutorial-exercises","vim"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frontend-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-16T15:43:38.000Z","updated_at":"2023-09-08T17:01:44.000Z","dependencies_parsed_at":"2023-03-10T12:45:26.135Z","dependency_job_id":null,"html_url":"https://github.com/frontend-labs/vim-combinations","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontend-labs%2Fvim-combinations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontend-labs%2Fvim-combinations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontend-labs%2Fvim-combinations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontend-labs%2Fvim-combinations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frontend-labs","download_url":"https://codeload.github.com/frontend-labs/vim-combinations/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250643514,"owners_count":21464191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["howto","tutorial-exercises","vim"],"created_at":"2024-11-10T13:22:53.768Z","updated_at":"2025-04-24T14:32:10.528Z","avatar_url":"https://github.com/frontend-labs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vim key combinations\n\nOne of the most pleasant aspects of **Vim** is how **keyboard shortcuts** can be **combined**. In this\nrepository we will describe some of those combinations.\n\nUno de los aspectos más agradables de **Vim** es como sus **atajos de teclado** se pueden **combinar**. En\neste repositorio describiremos algunas de esas combinaciones.\n\n\u003e **Note:**\n\u003e If you know any other **key combination**, please do not hesitate to make a **pull-request**.\n\n\u003e **Nota:**\n\u003e Si conoces alguna otra **combinación**, por favor no dudes en hacer un **pull-request**.\n\n----------\n\n## Movimiento del cursor (Desplazamiento)\n\n### Saltar hacia el inicio de una línea\n\n**Tecla:** \u003ckbd\u003e0\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código y tenemos el cursor en cualquier posición:\n\n```js\nvar order = 'ASC';\n```\n\nY luego presionamos la tecla \u003ckbd\u003e0\u003c/kbd\u003e el cursor se desplazará hacía el inicio de la línea, osea el cursor se pondrá delante de la letra \u003ckbd\u003evar\u003c/kbd\u003e.\n\n\n### Modo Normal o Modo Navegación\n\nEste modo de vim es el que te permitirá navegar por todo el documento de una forma increíble. A este modo se accede presionando la tecla \u003ckbd\u003eEsc\u003c/kbd\u003e.\n\nEn la siguente tabla mostramos la navegacion básica en vim:\n\n| Tecla     | Acción                                    |\n| :-------- | :-----------------------------------      |\n| k         | mueve el cursor hacia una línea superior. |\n| j         | mueve el cursor hacia una línea inferior. |\n| h         | mueve el cursor hacia un caracter a la izquierda |\n| l         |  mueve el cursor hacia un caracter a la derecha |\n\n\n\n\n### Modo Insertar\n\n**Tecla:** \u003ckbd\u003ei\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código y posicionamos el cursor delante del caracter \u003ckbd\u003eS\u003c/kbd\u003e:\n\n```js\nvar order = 'SC';\n```\n\nY luego presionamos la tecla \u003ckbd\u003ei\u003c/kbd\u003e pasamos a modo inserción, luego escribimos por ejemplo la letra A, tendríamos:\n\n```js\nvar order = 'ASC';\n```\n\n**Tecla:** \u003ckbd\u003ea\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código y posicionamos el cursor delante del caracter \u003ckbd\u003eD\u003c/kbd\u003e:\n\n```js\nvar order = 'DSC';\n```\n\nY luego presionamos la tecla \u003ckbd\u003ea\u003c/kbd\u003e pasamos a modo insersión, luego escribimos por ejemplo la letra E, tendríamos:\n\n```js\nvar order = 'DESC';\n```\n\n----------\n\n## 1 key\n\n\n### Deshacer el último cambio\n\n**Tecla:** \u003ckbd\u003eu\u003c/kbd\u003e.\n\n### Ir hasta la última línea de código de un archivo\n\n**Tecla:** \u003ckbd\u003eG\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\n/*\nGulpCssUrlVersioner\n@class GulpCssUrlVersioner\n */\n\n/*\n * Module dependencies.\n */\nvar Buffer, CssUrlVersioner, GulpCssUrlVersioner, chalk, extend, through, util;\n\nutil = require('util');\nthrough = require('through2');\nchalk = require('chalk');\nBuffer = require('buffer').Buffer;\nextend = util._extend;\nCssUrlVersioner = require('css-url-versioner');\n\n/*\n * Library.\n */\nGulpCssUrlVersioner = function(opts) {\n  this.data = {};\n  this.settings = opts || {\n    debug: false\n  };\n  this.css = '';\n  this.transform();\n  return this.stream;\n};\n```\n\nY tuviéramos el cursor posicionado en cualquier línea, al presionar la tecla \u003ckbd\u003eG\u003c/kbd\u003e, el cursor se posicionaría en el último caracter de la última línea de código de nuestro archivo.\n\n----------\n\n## 2 keys\n\n### Rehacer el último cambio\n\n**Tecla:** \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e.\n\n### Comentar un bloque de líneas\n\nPara aplicar este combo primero entrar al modo bloque visual.\n\n**Combo:** \u003ckbd\u003eshift\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\nvar a = 'SFSSD';\nvar b = 'SFSFSDFS';\nvar c = 'SFDSFDSFDSF';\n```\nSi situamos el cursor en la palabra reservada \u003ckbd\u003evar\u003c/kbd\u003e, luego entrar al modo bloque visual, luego moverte hasta la linea que deseas comentar, en este caso sera \u003ckbd\u003evar\u003c/kbd\u003e de la tercera linea , siempre posicionando en el primer caracter de la linea, luego aplicamos \u003ckbd\u003eshift\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e , luego \u003ckbd\u003e//\u003c/kbd\u003e para comentar, luego \u003ckbd\u003eESC\u003c/kbd\u003e y listo.\n\n```js\nvar a = 'SFSSD';\nvar b = 'SFSFSDFS';\nvar c = 'SFDSFDSFDSF';\n```\n\nObtendremos :\n\n```js\n//var a = 'SFSSD';\n//var b = 'SFSFSDFS';\n//var c = 'SFDSFDSFDSF';\n```\n\n### Cambiar de posición un caracter con el caracter siguiente\n\n**Combo:** \u003ckbd\u003ex\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\nvar roder = 'ASC';\n```\n\nSi situamos el cursor delante del caracter \u003ckbd\u003er\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003exp\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```js\nvar order = 'ASC';\n```\n\n\n### Eliminar una línea de código entera\n\n**Combo:** \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\np\n    margin 0\n    color white\n```\n\nSi situamos el cursor sobre \u003ckbd\u003emargin 0\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003edd\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\np\n    color white\n```\n\n### Borrar resto de palabra desde un punto específico\n\n**Combo:** \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\nbox-sizingabc: border-box\n```\n\nSi situamos el cursor en el caracter \u003ckbd\u003ea\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003ede\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\nbox-sizing: border-box\n```\n\n### Borrar resto de línea desde un punto específico\n\n**Combo:** \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003e$\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\nborder 1px 2px 3px 4px\n```\n\nSi situamos el cursor detrás de la palabra \u003ckbd\u003e2px\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003ed$\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\nborder 1px 2px\n```\n\n### Borrar todas las líneas hacia abajo desde el cursor\n\n**Combo:** \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003eG\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\n.footer_note\n\tbackground black\n\tpadding 30px\n\n\tp\n\t\tcolor #cccccc\n\t\tmargin 0\n\n```\n\nSi situamos el cursor en la palabra \u003ckbd\u003epadding\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003edG\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\n.footer_note\n\tbackground black\n\n```\n\n\n\n### Ir hasta la primera línea de código de un archivo\n\n**Combo:** \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\n/*\nGulpCssUrlVersioner\n@class GulpCssUrlVersioner\n */\n\n/*\n * Module dependencies.\n */\nvar Buffer, CssUrlVersioner, GulpCssUrlVersioner, chalk, extend, through, util;\n\nutil = require('util');\nthrough = require('through2');\nchalk = require('chalk');\nBuffer = require('buffer').Buffer;\nextend = util._extend;\nCssUrlVersioner = require('css-url-versioner');\n\n/*\n * Library.\n */\nGulpCssUrlVersioner = function(opts) {\n  this.data = {};\n  this.settings = opts || {\n    debug: false\n  };\n  this.css = '';\n  this.transform();\n  return this.stream;\n};\n```\n\ny tuviéramos el cursor posicionado en cualquier línea, al aplicar el combo \u003ckbd\u003egg\u003c/kbd\u003e, el cursor se posicionaría delante del primer caracter de la primera línea de codigo de nuestro archivo.\n\n### Navegar entre palabras\n\nAvanzar una palabra\n\n**Tecla** \u003ckbd\u003ew\u003c/kbd\u003e.\n\nRetroceder una palabra\n\n**Tecla** \u003ckbd\u003eb\u003c/kbd\u003e.\n\n### Resaltar la última selección hecha\n\n**Combo:** \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi hubieramos realizado una selección y seguido a ello diferentes acciones, podemos volver a resaltar la última selección hecha mediante el combo \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e.\n\n\n----------\n\n## 3 keys\n\n### Intercambiar la posición con la línea inferior\n\n**Combo:** \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\np\n    margin 0\n    color white\n```\n\nSi situamos el cursor sobre \u003ckbd\u003emargin 0\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003eddp\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\np\n    color white\n    margin 0\n```\n\n### Eliminar un grupo de caracteres (alfanumericas,caracteres especiales).\n\n**Combo:** \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\nh1\n    color red\n```\n\nSi situamos el cursor sobre el atributo \u003ckbd\u003ecolor\u003c/kbd\u003e, y ejecutamos el combo en modo normal, obtendríamos lo siguiente:\n```css\nh1\n    red\n```\n\n### Borrar palabra desde cualquier punto\n\n**Combo:** \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\narray.push('var1')\n```\n\nSi situamos el cursor en cualquier posición dentro de la palabra(excepto el primer caracter) \u003ckbd\u003evar1\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003ebde\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```js\narray.push('')\n```\n\n### Copiar y pegar una linea debajo de linea actual\n\n**Combo:** \u003ckbd\u003ey\u003c/kbd\u003e + \u003ckbd\u003ey\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```js\nvar a = \"Test\";\n```\n\nSi situamos el cursor en cualquier posición de la linea, al aplicar el combo \u003ckbd\u003eyyp\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```js\nvar a = \"Test\";\nvar a = \"Test\";\n```\n\n----------\n\n\n## Edición\n\n### Reemplazar una línea entera\n\n**Combo:** \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e.\n\n**Ejemplo:**\n\nSi tuviéramos el siguiente código:\n\n```css\np\n    color white\n    margin 0\n```\n\nSi situamos el cursor sobre \u003ckbd\u003emargin 0\u003c/kbd\u003e al aplicar el combo \u003ckbd\u003ecc\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\np\n    color white\n\n```\n\nY por ultimo escribiremos \u003ckbd\u003epadding 0\u003c/kbd\u003e, obtendríamos lo siguiente:\n\n```css\np\n    color white\n    padding 0\n```\n\nComo podemos ver, al ejecutar el combo \u003ckbd\u003ecc\u003c/kbd\u003e no se pierde la tabulación.\n\n\n\n----------\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Ventanas\n\n### Dividir la ventana verticalmente\n\n**Combo:** \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e.\n\n\n### Dividir la ventana horizontalmente\n\n**Combo:** \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e.\n\n### Navegar entre ventanas divididas\n\n**Combo:** \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e.\n\n\n### Cerrar una ventana dividida\n\n**Combo:** \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003eq\u003c/kbd\u003e.\n\n\n----------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrontend-labs%2Fvim-combinations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrontend-labs%2Fvim-combinations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrontend-labs%2Fvim-combinations/lists"}