> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/it/base-di-conoscenza/049-how-can-i-define-custom-vim-macros-in-a-vimrc-file-on-overleaf.md).

# Come posso definire macro Vim personalizzate in un file vimrc su Overleaf?

## Introduzione

Overleaf offre combinazioni di tasti Vim ed Emacs che possono essere attivate nel [menu del progetto](/latex/it/base-di-conoscenza/148-using-the-overleaf-project-menu.md#keybindings). Tuttavia, poiché queste combinazioni di tasti sono emulate dall'editor (cioè, non è in esecuzione un vero Vim o Emacs), non è possibile utilizzare i metodi standard di Vim per aggiungerne di nuove all'interno di Overleaf usando Tampermonkey. Qui mostriamo dei modi che dovrebbero aiutare a superare questa limitazione.

### Politica di Overleaf su Tampermonkey e UserScripts

Tieni presente che UserScripts e Tampermonkey non sono ufficialmente supportati da Overleaf e che gli script personalizzati possono interferire con il normale funzionamento di Overleaf. Se stai usando questi script e hai bisogno di contattare Overleaf per assistenza tecnica, ti chiediamo gentilmente di disattivare eventuali script di Tampermonkey e verificare se la situazione migliora. Se la disattivazione degli script non risolve il problema, ti preghiamo di [contattarci](https://www.overleaf.com/contact) per assistenza.

## UserScript di Tampermonkey

Tieni presente che questo è *non* un metodo ufficialmente supportato e l'interfaccia potrebbe cambiare in futuro, da cui il “`UNSTABLE_editor`” nel nome.

```latex
// ==UserScript==
// @name         Overleaf Editor Custom VIM Keybindings
// @namespace    http://tampermonkey.net/
// @version      0.1
// @match        https://www.overleaf.com/project/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.addEventListener("UNSTABLE_editor:extensions", (event) => {
    const { CodeMirror, CodeMirrorVim, extensions } = event.detail;

    // aggiungi combinazioni di tasti personalizzate - la modalità di inserimento si applica nell'inserimento
    CodeMirrorVim.Vim.map("jj", "<Esc>", "insert");
    // la modalità normale si applica quando si esce
    CodeMirrorVim.Vim.map("h", "j", "normal");
    });
})();
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/it/base-di-conoscenza/049-how-can-i-define-custom-vim-macros-in-a-vimrc-file-on-overleaf.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
