Comme de Mac OS X Lion 10.7, Terminal supporte les "crochets à coller mode", qui permet à l'émulateur de terminal pour indiquer au programme relié à l'ats lorsque l'utilisateur colle du texte, de sorte que le programme ne sera pas l'interpréter comme des commandes d'édition. Des programmes qui prennent en charge l'envoyer au terminal une séquence d'échappement pour activer ce mode, dans lequel le terminal entoure le texte collé avec une paire de séquences d'échappement qui permettent d'identifier le début et la fin.
Pour activer cette fonction dans Vim, placez le code suivant dans votre ~/.fichiers vimrc:
if &term =~ "xterm.*"
let &t_ti = &t_ti . "\e[?2004h"
let &t_te = "\e[?2004l" . &t_te
function XTermPasteBegin(ret)
set pastetoggle=<Esc>[201~
set paste
return a:ret
endfunction
map <expr> <Esc>[200~ XTermPasteBegin("i")
imap <expr> <Esc>[200~ XTermPasteBegin("")
cmap <Esc>[200~ <nop>
cmap <Esc>[201~ <nop>
endif
Ce qu'il fait en sorte que lorsque Vim commutateurs le terminal/de l'autre de l'écran† (t_ti, t_te) active/désactive les crochets à pâte mode (ESC [? 2004 h, ESC [? 2004 l). Lorsqu'il reçoit la séquence d'échappement indiquant le début d'une pâte (ESC [ 200 ~), il permet de Coller mode (set coller) et passe en mode Insertion, si nécessaire ("je"). Lorsqu'il reçoit la correspondance de fin de coller marqueur (ESC [ 201 ~) il désactive les Coller mode (pastetoggle) et reste en mode Insertion. L' cmap
des commandes de prendre des dispositions pour le Vim ligne de commande pour ignorer les séquences d'échappement et d'accepter le texte collé.
Noter que cette fonction ne permet crochets à coller mode lorsque l' $valeur à long TERME commence par "xterm..."; si vous êtes paramètre $TERME à quelque chose d'autre, vous souhaiterez peut-être réviser le test d'inclure votre $valeur à long TERME. Ou, vous pouvez omettre le test tout à fait, car il n'est pas strictement nécessaire-il est juste d'essayer d'être prudent de ne pas faire quelque chose qui pourrait être incompatible avec un autre type de terminal.
Dans le Terminal, cela fonctionne avec tous les différents Coller des commandes, ainsi que de glisser-déposer.
† Le terminal dispose d'un écran principal et un "autre" de l'écran. Chaque écran dispose de son propre contenu et de l'état. Texte à l'autre de l'écran ne défile pas dans la scrollback journal. Il est généralement utilisé par des programmes qui prennent en charge le contrôle de la totalité de l'écran et sont donc appelés "plein écran". Cela comprend vim, emacs, et moins haut, par exemple.