zoukankan      html  css  js  c++  java
  • 粘贴到vi/vim的代码,怎样避免向右不断缩进,保持原来的格式?解决vi/vim在粘贴中会在行首多很多缩进和空格的问题。

    SecureCRT会将你原来的文本原封不动的按照字符串的样式发送给服务器。所以当你的服务器上的vi/vim设置为autoindent的话,在 i 模式下,那么它会将SecureCRT传输而来的这些字符串再进行一下缩进。若你拷贝的文本中已经有表示缩进的空格或者制表符的话,它们也会被当成字符串,而被缩进。

    原因一般的vi/vim都默认设置为set nopaste。

    解决办法:
    1,在拷贝前输入:set paste        (这样的话,vi/vim就不会启动自动缩进,而只是纯拷贝粘贴。)
    2,拷贝完成之后,输入:set nopaste   (但是在粘贴插入模式下代码是不会自动按格式缩进的,需要使用nopaste设置回来,即关闭paste。)

    注意:在Android Studio中,把缩进优美的代码直接ctrl+c,ctrl+v到Vim的时候,也会出现这种情况!解决方法一样!

    设置前的粘贴效果:

    设置set paste后的效果:

     

    附:paste相关知识如下:

     'paste'  布尔型  (缺省关闭,即默认是关闭的)

    全局功能

    注意:Vi 无此功能。

    将 Vim 切换到粘贴模式。可用于从一个窗口剪切或复制文本并粘贴到 Vim。它的使用会避免一些意想不到的效果。

    设置此选项可用于终端上运行的 Vim,因为那里 Vim 没法区别输入和粘贴的文本。

    在 GUI 里,Vim 知道何者来自粘贴,即使不打开 'paste' 也基本上不会做错。对 Vim 能自己处理鼠标点击的终端也是如此。

    启动 GUI 时复位本选项。所以如果你在 .vimrc 里置位它,可以使它在终端里工作,但不是在 GUI 里。

    在 GUI 里置位 'paste' 有副作用,例如:Paste 工具栏按钮在插入模式下不能工作,因为它使用了映射。

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

    paste模式主要帮我们做了如下事情:

    • textwidth    设置为0
    • wrapmargin  设置为0
    • autoindent   重置(即被复位)
    • smartindent    重置(即被复位)
    • set noai
    • set nosi
    • softtabstop  设置为0
    • revins     重置(即被复位)
    • ruler       重置(即被复位)
    • showmatch       重置(即被复位)
    • formatoptions   使用空值

    下面这些选项保持原来的值,但没有实际的效果:

    • lisp
    • indentexpr
    • cindent

     注意: 打开 'paste' 选项时如果你开始编辑别的文件,模式行或者自动命令可能会再次改变这些设置,从而在粘贴文本时造成麻烦。这时,你可能需要再次置位 'paste' 选项。 'paste' 选项复位时,上面提到的选项被复原为上次 'paste' 从关到开时的设置。置位 'paste' 之前复位 'paste' 没有任何效果。因为 'paste' 激活时不能用映射,'pastetoggle' 选项可以用来指定切换 'paste' 选项的热键。

  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8343969.html
Copyright © 2011-2022 走看看