[20240928]vim设置set paste问题.txt
--//有时候从windows环境拷贝并粘贴到linux环境,会出现折行现象,要手工执行set paste,再做操作。
--//我发现vim的一些设置失效,比如set ruler设置,简单探究看看问题在哪里,开始并不知道是set paste引起的问题。
$ vim --startuptime aa.txt
--//这样aa.txt会记录vim启动读取的脚本。
$ grep "sourcing /" aa.txt | awk '{print $NF}'
/usr/share/vim/vim74/syntax/syncolor.vim
/usr/share/vim/vim74/syntax/synload.vim
/usr/share/vim/vimfiles/ftdetect/stp.vim
/usr/share/vim/vim74/filetype.vim
/usr/share/vim/vim74/syntax/syntax.vim
/usr/share/vim/vim74/filetype.vim
/usr/share/vim/vim74/ftplugin.vim
/usr/share/vim/vim74/syntax/syncolor.vim
/usr/share/vim/vim74/syntax/syncolor.vim
/usr/share/vim/vim74/syntax/syncolor.vim
/usr/share/vim/vim74/colors/elflord.vim
/etc/vimrc.zws
/etc/vimrc
/usr/share/vim/vimfiles/plugin/cctree.vim
/usr/share/vim/vim74/plugin/bccalc_linux.vim
/usr/share/vim/vim74/plugin/gdb.vim
/usr/share/vim/vim74/plugin/getscriptPlugin.vim
/usr/share/vim/vim74/plugin/gzip.vim
/usr/share/vim/vim74/plugin/increment.vim
/usr/share/vim/vim74/plugin/matchparen.vim
/usr/share/vim/vim74/plugin/netrwPlugin.vim
/usr/share/vim/vim74/plugin/rrhelper.vim
/usr/share/vim/vim74/plugin/spellfile.vim
/usr/share/vim/vim74/plugin/tarPlugin.vim
/usr/share/vim/vim74/plugin/tohtml.vim
/usr/share/vim/vim74/plugin/vimballPlugin.vim
/usr/share/vim/vim74/plugin/zipPlugin.vim
$ grep "sourcing /" aa.txt | awk '{print $NF}' | xargs -IQ grep -i 'noru' Q
--//并没有脚本设置执行set noruler。
# cd /usr/share/vim
# grep -r -i "set.*norule" *
vim74/autoload/vimball.vim: set noruler noshowcmd
--//尝试修改以上文件包括set ruler showcmd,测试无效。
--//我手工执行set ruler showcmd有效.
--//仔细检查我发现最近增加一行set paste,避免拷贝和粘贴时折行。查看vim文档,发现如下内容:
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- 'autoindent' is reset
- 'expandtab' is reset
- 'formatoptions' is used like it is empty
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- 'smartindent' is reset
- 'smarttab' is reset
- 'softtabstop' is set to 0
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
These options keep their value, but their effect is disabled:
- 'cindent'
- 'indentexpr'
- 'lisp'
--//也就是set paste时,自动重置上面的设置,导致失效。
--//开始我想当然以为把set paste放在/etc/vimrc的最前面,问题可以解决。
--//实际上是错误的,这样虽然设置set paste,但是打开了smartindent,smarttab设置,拷贝粘贴依旧会出现折行情况。
--//没有好的解决方法仅仅记住要使用拷贝粘贴是手工设置set paste,不需要时set paste!关闭,关闭后ruler,showcmd自动打开。
--//另外set paste后在插入模式下使用bccalc_linux.vim插件做运行失效。
--//例子,在插入模式下计算公式后快速输入=: 可以获得计算结果。
12+12= 24
--//如果设置set paste,出现这样的情况。
12+12=:
--//关于bccalc_linux.vim插件可以寻找我以前写的文章。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3034865/ ,如需转载,请注明出处,否则将追究法律责任。