Vim 以“更改”命令开头

Vim 以“更改”命令开头

我在启动 vim 时遇到了问题。每当我运行 时vim somefile,它都会像我c在启动后立即按下 一样启动。因此,如果我尝试使用 立即跳转到文件末尾G,它反而变化到文件末尾,即从启动行到文件末尾的所有行都消失了,我处于插入模式。我使用的是终端 vim 而不是 MacVim,如果相关的话,我的 shell 是 zsh。我在 shell 和 vim 中都使用了 16 进制的明天 256 色方案 — shell 为深色,vim 为浅色。我使用的是 Janus 配置,自定义程度非常低。

以下是我为寻找问题所尝试做的事情:

  1. 注释掉.vimrc.after文件中除配色方案和字体声明之外的所有内容。没有变化。
  2. 在 iTerm2 和 vim 中禁用我的 base16 配色方案命令。我以为可能是 256 色 shell 脚本导致了问题,但结果却不是这样。
  3. 删除了 Janus (Emmet) 中的一个自定义插件。没有区别。
  4. 将 colorscheme 更改为非 base16 方案。没有区别。

我发现的唯一真正区别是 iTerm2 和 Terminal.app 之间的区别。在 Terminal.app 中,无论我在启动后立即输入什么动作命令,更改命令似乎都限制为一行。因此,如果我G在打开文件后输入,它不会删除下面的所有行。它只是删除它所在的行并进入插入模式。

另外两个证据:1) 如果我使用 打开目录vim path/to/directory,Terminal.app 和 iTerm2 的行为会略有不同。在 iTerm2 中,没有明显的问题。在 Terminal.app 中,我E481: No range allowed在窗口底部收到消息。2) 如果我使用 MacVim,据我所知,这种行为不存在。这让我认为这与我的 shell 环境有关。Terminal.app 和 iTerm2 的终端报告都设置为 xterm-256color。

情况就是这样。下面是我相关的 vim 文件的内容。虽然解决问题会有所帮助,但我更感兴趣的是在这里学习钓鱼。我过去对 vim 感到沮丧的部分原因是它有时会做一些我不理解的事情。有时是通过打字错误或手指粗略的命令或其他什么,但无论如何,我不知道什么我这样做是为了避免这种奇怪的行为,以便将来可以避免这种情况。我现在也处于同样的境地。我不想只知道如何修复它,而是想知道出了什么问题,以及某种可以追踪问题的方法,以便我可以在未来的问题中应用。提前谢谢!

.vimrc.before

set nocompatible
let mapleader=","
set splitbelow
set splitright
call janus#disable_plugin('nerdtree')
if has("gui_running")
  let g:loaded_netrw        = 1 " Disable netrw
  let g:loaded_netrwPlugin  = 1 " Disable netrw
endif

.vimrc

""
"" Janus setup
""

" Define paths
"let g:janus_path = escape(fnamemodify(resolve(expand("<sfile>:p" . "janus" . "janus")), ":h"), ' ')
"let g:janus_vim_path = escape(fnamemodify(resolve(expand("<sfile>:p" . "janus" . "janus" . "vim")), ":h"), ' ')"

let g:home_path = expand("~")
let g:vim_path = g:home_path . "/.dotfiles/vim"
let g:janus_path = g:vim_path . "/janus/janus"
let g:janus_vim_path = g:janus_path . "/vim"

let g:janus_custom_path = g:vim_path . "customization"

if filereadable(g:janus_vim_path . '/core/before/plugin/janus.vim')
    " Source janus's core
    exe 'source ' . g:janus_vim_path . '/core/before/plugin/janus.vim'

    " You should note that groups will be processed by Pathogen in reverse
    " order they were added.
    call janus#add_group("tools")
    call janus#add_group("langs")
    call janus#add_group("colors")

    ""
    "" Customisations
    ""

    if filereadable(expand("~/.vimrc.before"))
      source ~/.vimrc.before
    endif


    " Disable plugins prior to loading pathogen
    exe 'source ' . g:janus_vim_path . '/core/plugins.vim'

    ""
    "" Pathogen setup
    ""

    " Load all groups, custom dir, and janus core
    call janus#load_pathogen()

    " .vimrc.after is loaded after the plugins have loaded
endif

.vimrc.after

let base16colorspace=256  " Access colors present in 256 colorspace
set background=light
colorscheme base16-tomorrow
set guifont=Panic\ Sans:h13

"set tabstop=4
"set shiftwidth=4
"set softtabstop=4
"set expandtab

"let g:user_emmet_install_global = 0
"autocmd FileType html,css,eruby,eruby-rails EmmetInstall

" window
nmap <leader>sw<left>  :topleft  vnew<CR>
nmap <leader>sw<right> :botright vnew<CR>
nmap <leader>sw<up>    :topleft  new<CR>
nmap <leader>sw<down>  :botright new<CR>

" buffer
nmap <leader>s<left>   :leftabove  vnew<CR>
nmap <leader>s<right>  :rightbelow vnew<CR>
nmap <leader>s<up>     :leftabove  new<CR>
nmap <leader>s<down>   :rightbelow new<CR>

" clear search highlight
nnoremap <esc> :noh<return><esc>

" exit insert mode when beginning text movements
:imap jj <Esc>
:imap jk <Esc>
:imap kk <Esc>
:imap kj <Esc>

set clipboard=unnamed


"Helpful stuff from Steve Losh
set list
set listchars=tab:▸\ ,eol:¬ "Change the invisible character display characters.

set wrap
set textwidth=79
set formatoptions=qrn1
set colorcolumn=85

nnoremap / /\v
vnoremap / /\v
set ignorecase
set smartcase
set gdefault
set incsearch
set showmatch
set hlsearch
"nnoremap <leader><space> :noh<cr>
nnoremap <tab> %
vnoremap <tab> %

set encoding=utf-8
set scrolloff=3
set autoindent
set showmode
set showcmd
set hidden
set wildmenu
set wildmode=list:longest
set visualbell
set cursorline
set ttyfast
set ruler
set backspace=indent,eol,start
set laststatus=2
set relativenumber
set undofile

nnoremap <up> <nop>
nnoremap <down> <nop>
nnoremap <left> <nop>
nnoremap <right> <nop>
inoremap <up> <nop>
inoremap <down> <nop>
inoremap <left> <nop>
inoremap <right> <nop>
nnoremap j gj
nnoremap k gk

inoremap <F1> <ESC>
nnoremap <F1> <ESC>
vnoremap <F1> <ESC>

" Save on focus lost
au FocusLost * :wa

.gvimrc.before

call janus#disable_plugin('NERDtree')

.gvimrc.after

" Override existing colorscheme with version found in
" ~/.janus/<colorscheme>/colors/<colorscheme>.vim
if exists("g:colors_name") 
  let color_override = expand('~/.janus/' . g:colors_name . '/colors/' . g:colors_name . '.vim')
  if filereadable(color_override)
    exe 'source ' . color_override
  endif
endif

set background=light
colorscheme base16-tomorrow
set guifont=Panic\ Sans:h13

答案1

先前的这个问题似乎解决了我的问题。Vim 在启动时出现意外的按键,这可能是什么原因造成的?我确实看到了包含导致问题的:echo v:termresponse违规字符,并且设置确实神奇地解决了问题,但就像那里的 OP 一样,我不知道cset t_RV= ttymouse=xterm2为什么这就是问题所在,解答者如何知道要检查:echo v:termresponse,或者set t_RV= ttymouse=xterm2解答者如何将其输入到 vim 配置文件中来解决它。

相关内容