Lorsque je copie du code à partir de pages Web et que je le colle dans VIM, je constate que cela devient un désordre ressemblant à une échelle, comme suit
xxxxxx
xxxxxx
xxxxxx
xxxxxxxxxx
Puisqu'il a tellement chié, je pense qu'il y a peut-être quelque chose qui ne va pas avec le mien, .vimrc
comme ci-dessous:
set number
set nocompatible
set nowritebackup
set noswapfile
syntax on
filetype indent on
filetype plugin on
filetype on
set background=light
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions=T
set fileencodings=utf-8,prc
set ruler
set incsearch
map gs :%s
set t_Co=256
:colorscheme evening
filetype plugin indent on
D'habitude j'écris en python dans VIM.Et l'aide serait appréciée.
vim
copy-paste
SpawnST
la source
la source
Réponses:
Faites cela avant:
Puis après:
la source
gvim
; il les allume et les éteint automatiquement lors du collage.http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Basculer l'indentation automatique pour le collage de code
Contexte
Si vous utilisez les commandes Vim pour coller du texte, rien d’inattendu ne se produit. Le problème ne survient que lors du collage à partir d'une autre application, et uniquement lorsque vous n'utilisez pas une version graphique de Vim. Dans une version console ou terminal de Vim, il n'y a pas de procédure standard pour coller du texte depuis une autre application. Au lieu de cela, le terminal peut émuler le collage en insérant du texte dans la mémoire tampon du clavier, de sorte que Vim pense que le texte a été saisi par l'utilisateur. À la fin de chaque ligne, Vim peut déplacer le curseur pour que la ligne suivante commence par le même retrait que la dernière. Cependant, cela modifiera l'indentation déjà dans le texte collé.
Coller bascule
Mettez ce qui suit dans votre vimrc (changez la clé de votre choix):
Pour coller depuis une autre application:
Ensuite, l'indentation existante du texte collé sera conservée.
Vous n'êtes pas obligé de démarrer le mode insertion en premier, mais si vous êtes en mode normal et disposez d'un mappage pour F2, ce mappage s'appliquera et la fonction 'pastetoggle' ne fonctionnera pas.
Certaines personnes aiment le retour visuel affiché dans la ligne d'état par l'alternative suivante pour votre vimrc:
La première ligne définit un mappage de sorte que le fait d'appuyer sur F2 en mode normal inversera l'option 'coller', puis affichera la valeur de cette option. La deuxième ligne vous permet d’appuyer sur F2 en mode insertion pour activer / désactiver le «coller». La troisième ligne permet d'afficher si «coller» est activé en mode insertion.
la source
C'est l'autoindent qui vous dérange.
Essayez de les désactiver lorsque vous coupez et collez votre code, puis réactivez-les lorsque vous avez terminé.
la source
Le plus petit effort pour y parvenir est (peut être mis en
.vimrc
):Ensuite, collez votre code.
la source
'paste'
option n'a jamais été conçue pour être définie de manière permanente. Cela désactive beaucoup de choses, y compris les correspondances et les abréviations. En outre, une réponse précédente couvre déjà l''paste'
option.