No Vim, se eu colar este script:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Eu recebo esses resultados estranhos:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Apareceram sinais de hash (#) e tabulações. Por quê?
vim
clipboard
whitespace
elbarna
fonte
fonte
Respostas:
Há duas razões:
Para colar
vim
enquanto o recuo automático está ativado, você deve alterar para o modo de colar digitando:Em seguida, você pode alterar para o modo de inserção e colar seu código. Após a colagem, digite:
para desativar o modo colar. Como essa é uma ação comum e frequente,
vim
oferece o modo de colar alternado:Você pode alterar
F2
para qualquer chave que desejar e agora pode ativar e desativar a colagem facilmente.Para desativar a inserção automática de comentários, você pode adicionar estas linhas ao seu vimrc :
vim
também fornece um registro de colagem para você colar texto da área de transferência do sistema. Você pode usar"*p
ou"+p
dependendo do seu sistema. Em um sistema sem o X11, como OSX ou Windows, você precisa usar o*
registro. Em um sistema X11, como o Linux, você pode usar os dois.Leitura adicional
fonte
set paste
nunca deve estar no seu vimrc. Ele desativa ou redefine muitas coisas, incluindo mapeamentos no modo de inserção, mapeamentos de linha de comando, abreviações, largura de texto, wrapmargin, autoindent, smartindent, softtabstop, formatoptions, indentexpr e algumas outras.:h paste
tem a lista inteira. A maioria das pessoas usa algumas ou todas essas coisas e se pergunta por que essas configurações são ignoradas.:r!cat
para colar literalmente.set mouse
, que pode entrar e sair automaticamente do modo de colar ao colar com o clique do mouse.Use a pasta vim. O que você deseja é colar o que está no buffer da área de transferência "+p
Isso seleciona
+
e cola no lugar.Se você estiver usando Linux,
*
é o X / clique no meio do buffer (o último texto selecionado).Então o vim sabe que é uma pasta.
Caso contrário, o vim acha que você digitou as chaves que estão sendo coladas e faz sua própria indentação automática (em cima da indentação copiada) até o final da pasta.
Como uma observação para que isso funcione sobre SSH, você precisa definir a opção de compartilhamento da área de transferência
-Y
Veja
man ssh
para mais detalhes.fonte
gvim
); vim correndo em um emulador de terminal cola o último texto eliminado com "* p, não a seleção atual.set mouse?
vim --version
se ver se ele foi compilado com suporte a área de transferência+xterm_clipboard
deve ser na saídaunnamed
barbante.As guias foram inseridas porque você ativou o autoindent e pode desativar esse comportamento desativando o autoindent (
:set noai
) antes de colar no terminal.As linhas comentadas são produzidas por comentários automáticos e podem ser desativadas desativando-as.
Alternativa para aqueles em que você deve obter o comportamento desejado usando as alternâncias
:set paste
, colando o código formatado e:set nopaste
restaurando o comportamento normal.fonte