Mac OS X的复制和粘贴问题

时间:2011-08-20 23:55:17

标签: macos vim vi

当我从浏览器复制文本并将其粘贴到我在终端中使用vi打开的文件时,我会收到以下未格式化的文本。为什么vi或终端忽略换行符?

而不是获得以下内容:

" Restore cursor position to where it was before
augroup JumpCursorOnEdit
   au!
   autocmd BufReadPost *
            \ if expand("<afile>:p:h") !=? $TEMP |
            \   if line("'\"") > 1 && line("'\"") <= line("$") |
            \     let JumpCursorOnEdit_foo = line("'\"") |
            \     let b:doopenfold = 1 |
            \     if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
            \        let JumpCursorOnEdit_foo = JumpCursorO

我明白了:

" Restore cursor position to where it was before
augroup JumpCursorOnEdit
   au!
      autocmd BufReadPost *
                  \ if expand("<afile>:p:h") !=? $TEMP |
                              \   if line("'\"") > 1 && line("'\"") <= line("$") |
                                          \     let JumpCursorOnEdit_foo = line("'\"") |
                                                      \     let b:doopenfold = 1 |
                                                                  \     if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |

2 个答案:

答案 0 :(得分:4)

这是vi的错,而不是Mac OS X或终端。 Vi不会忽视换行符;它只是在累积缩进。您可以通过在粘贴之前关闭自动注释(:set noai)并在之后重新启用它来解决此问题,或者,如果您正在使用Vim(我相信vi只是Mac OS X中的符号链接),您可以暂时打开paste选项,禁用autoindent以及粘贴文本时可能导致问题的其他一些功能。

答案 1 :(得分:4)

:set paste更好的只是我们的mac剪贴板。

如果您使用的是vim 7.3,则可以将其添加到~/.vimrc文件中以获取(y)并粘贴(p)以使用Mac的剪切和粘贴缓冲区:

if has("macunix")
  if v:version >= 703
    " Default yank and paste go to Mac's clipboard
    set clipboard=unnamed
  endif
endif

即使您没有Vim 7.3,也可以放心地将它放在.vimrc中 - 它只是不起作用。

您可以使用homebrewhomebrew-alt存储库获取最新的vim。我推荐它!