哪个.vimrc设置会导致这种奇怪的复制粘贴行为?

时间:2010-11-28 13:57:23

标签: linux vim

我最近从某处复制粘贴了一堆.vimrc设置,现在我在文本复制粘贴上有这种奇怪的行为:

  1. alt text

  2. Ctrl + C

  3. Shift + Insert

  4. alt text

  5. 我认为这将是autoindent,但事实并非如此。

    我应该从.vimrc中删除哪些内容以停止此行为并启用正常复制粘贴?


    错误出现在我.vimrc的这一部分:

    command -range=% -nargs=* Tidy <line1>,<line2>!
        \perltidy -your -preferred -default -options <args>
    
    vmap <tab> >gv 
    vmap <s-tab> <gv
    
    nmap <tab> I<tab><esc>
    nmap <s-tab> ^i<bs><esc>
    
    let perl_include_pod   = 1
    let perl_extended_vars = 1
    let perl_sync_dist     = 250
    
    filetype off
    set nocompatible
    set modelines=0
    
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    set expandtab
    set ic
    set ai
    set nu
    
    command -range Cm <line1>,<line2>s/^/#/
    command -range Uc <line1>,<line2>s/^#//
    
    set encoding=utf-8
    set scrolloff=3
    set autoindent
    set showmode
    set showcmd
    set hidden
    set wildmenu
    set wildmode=list:longest
    set visualbell
    set ttyfast
    set ruler
    set backspace=indent,eol,start
    set laststatus=2
    
    let mapleader = ","
    nnoremap <leader>1 yypVr-
    nnoremap <leader>2 yypVr=
    
    set ignorecase
    set smartcase
    set gdefault
    set incsearch
    set showmatch
    set hlsearch
    
    set wrap
    set textwidth=79
    set formatoptions=qrn1
    nnoremap j gj
    nnoremap k gk
    
    nnoremap ; :
    nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
    nnoremap <leader>w <C-w>v<C-w>l
    syntax on
    set backup
    set backupdir=~/.vim/backup
    set directory=~/.vim/tmp
    
    set noerrorbells
    

3 个答案:

答案 0 :(得分:19)

在粘贴之前,为了避免此类行为,您应该在粘贴之前:set paste和之后:set nopaste

这是因为粘贴模拟了输入。粘贴缩进文本时,情况甚至更糟。

如果您使用vim的yanking(内部“复制粘贴”),则不会浮出水面。

答案 1 :(得分:3)

r中的set formatoptions=qrn1应该会导致这种行为。但paste模式更适合粘贴。通过提供paste进入set paste模式,然后通过提供set nopaste离开。 help paste有信息。

答案 2 :(得分:3)

实际上你甚至没有考虑:set paste,因为你可以在插入模式下使用命令<C-r><C-o>+从剪贴板中进行原始粘贴。