解决vim粘贴无限缩进:

:set paste 将 Vim 切换到粘贴模式,可用于从一个窗口剪切或复制文本并粘贴到 Vim。它的使用会避免一些意想不到的效果。设置此选项可用于终端上运行的 Vim,因为那里 Vim 没法区别输入和粘贴的文本。在 GUI 里,Vim 知道何者来自粘贴,即使不打开 'paste' 也基本上不会做错。对 Vim 能自己处理鼠标点击的终端也是如此。

打开 'paste' 选项时 (包括它本来就是打开的也会如此):

  • 屏蔽插入模式和命令行模式的映射
  • 屏蔽缩写
  • 'autoindent' 被复位
  • 'expandtab' 被复位
  • 'hkmap' 被复位
  • 'revins' 被复位
  • 'ruler' 被复位
  • 'showmatch' 被复位
  • 'softtabstop' 设为 0
  • 'textwidth' 设为 0
  • 'wrapmargin' 设为 0
  • 'varsofttabstop' 设为 空

vim鼠标右键复制去行号:

:set nonu 取消行号,此时复制没有行号。

进阶:

默认设置行号,不设置粘贴模式,在有需求时使用快捷键开关。

;l:行号开关,分号加小写l,开关行号。

至于paste就不研究了,因为我发现我的配置里没有这个问题,刚才出现是因为安装某个一键配置环境的脚本自动安装了旧版本的vim,用了yum包里自带的配置。

set nu
" 自定义前缀键,默认是\
let mapleader=";"
" 行号开关
function! ToggleNumber()
    if &nu
        set nonu "取消行号
    else
        set nu   "显示行号
    endif
endfunction
nmap <silent>  <Leader>l  :call ToggleNumber()<CR>