为什么我的Vim以replacemode开头?

时间:2013-12-09 13:08:43

标签: vim configuration

我可能不小心改变了一些设置,但现在我无法弄清楚它是什么。

行为:

  • 每当我编辑现有文件时,Vim都会以替换(R)模式启动。这是本周的新内容。
  • 每当我vim nonExistantFile.txt时,Vim都会以正常模式启动

到目前为止诊断的步骤:

  1. /etc/vimrc没有任何相关内容,特别是不包含startreplace
  2. /home/<myuser>/.vimrc没有任何相关内容,特别是不包含startreplace
  3. alias未显示任何与vim相关的内容
  4. 平台信息:

    • Vim版本7.3.1314
    • Windows 7 64位
    • 32位Cygwin和Vim二进制文件

    其他可能的相关信息:

    • 前一段时间(在此开始之前)我将/etc/vimrc从我的CentOS 6.4机器复制到Cygwin /etc/vimrc
    • 我最近编辑了一些二进制文件

    我很难过,我想不出别的事情可以尝试。

    更新

    • 我已将问题缩小到此/etc/vimrc代码段
    • 奇怪地评论这两个命令中的任何一个解决了这个问题

    Vimrc代码段(注意:这确实有unix行结尾):

    " Only do this part when compiled with support for autocommands
    if has("autocmd")
      "<snip>
      " When editing a file, always jump to the last cursor position
      autocmd BufReadPost *
      \ if line("'\"") > 0 && line ("'\"") <= line("$") |
      \   exe "normal! g'\"" |
      \ endif
      " don't write swapfile on most commonly used directories for NFS mounts or USB sticks
      autocmd BufNewFile,BufReadPre /media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
      "<snip>
    endif
    

4 个答案:

答案 0 :(得分:6)

我在nnoremap <ESC> :nohlsearch<CR>中映射了.vimrc,这导致了这种行为。

将此映射到<Enter>为我解决了问题。

答案 1 :(得分:0)

检查〜/ .exrc文件的初始设置,必须有一个标志,在启动时将你的vi设置为REPLACE模式!

http://alvinalexander.com/unix/edu/un010003/

喝彩!

答案 2 :(得分:0)

我添加了一些新行,并在/etc/vimrc中交换了两个似乎导致问题的命令......这似乎解决了这个问题。我不明白为什么。

答案 3 :(得分:0)

以下似乎为我解决了这个问题。我认为有一些自动命令代码干扰了光标位置恢复,所以清除以前的自动命令如下修复了我的问题:

function! ResCur()
  if line("'\"") <= line("$")
    normal! g`"
    return 1
  endif
endfunction

augroup resCur
  autocmd!
  autocmd BufWinEnter * call ResCur()
augroup END

http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session