Luk*_*uke 11 clipboard vim indentation vimrc
每当我从另一个应用程序复制某些内容然后将其粘贴到 vim 中时,它都会弄乱缩进。
例如,刚才我尝试从 hello-world 教程中复制 manifest.json 文件以创建 chrome 扩展。
它看起来像这样:
{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a browser action with kittens.",
"version": "1.0",
"permissions": [
"https://secure.flickr.com/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将它粘贴到 vim 中时,它看起来像这样:

我的vimrc如下:
"se t_Co=256
syntax enable
set nowrap
set mouse=a
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set number
set showcmd
set cursorline
set showmatch
execute pathogen#infect()
"filetype plugin indent on
"folding settings
set foldmethod=indent "fold based on indent
set foldnestmax=10 "deepest fold is 10 levels
set nofoldenable "dont fold by default
set foldlevel=1
set clipboard=unnamed "share one clipboard for everyhting
Run Code Online (Sandbox Code Playgroud)
它与这一行有关:
execute pathogen#infect() "filetype plugin indent on
Run Code Online (Sandbox Code Playgroud)
如果我将其注释掉,问题就解决了。但是,这是我在 python 中编码时用来实现自动缩进的。还有其他方法可以自动缩进吗?
小智 12
:设置粘贴
或查看http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
(这里有一些字符,因为superuser.comthinksshortanswersarenotanygoodanswers)
Ing*_*kat 11
在终端中,Vim 无法区分键入的文本(需要自动缩进的地方)和粘贴的文本。所以有一个'paste'选项(并'pastetoggle'简化处理),它在设置时禁用自动格式化和缩进。另一种方法是使用图形 GVIM,它可以检测到这一点。
或者,您使用 Vim 的剪贴板访问权限(如果已配置并正常工作,您需要尝试一下),并使用"*/"+寄存器进行选择 / 系统剪贴板,例如 via"+p或:put +。也许用鼠标中键粘贴也可以;试试看!