在.vimrc中检测到vrapper

pcww981p  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(177)

在我的.vimrc中,我有以下内容:

" Use j/k to navigate the word completion popup menu
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"

当在终端中使用vim时,这是完美的,但是这与vrapper(eclipse vim插件)不兼容。当这些设置在我的. vimrc中时,Vrapper完全停止工作。在我的home目录中,我有一个.vrapperrc文件,它只是指向我的.vimrc文件的符号链接。因此,为vim / vrapper加载的vim设置是相等的。
有没有办法在我的.vimrc中检测到vrapper的设置是加载的而不是默认的(终端)vim。这样我就可以禁用vrapper的这些设置,而在命令行中使用vim时只加载它们。也许有一种不同的聪明方法可以解决这个问题。当然,我可以创建两个.vimrc文件,一个用于默认的vim,一个用于vrapper,然而,这样我就需要维护两个文件,我想防止。

zxlwwiss

zxlwwiss1#

我遇到过一个类似的问题,Vrapper立即执行了我的函数的内容,因为它不理解它们是什么。
我通过将vim代码 Package 为

if has("eval")
    " vim only code
endif

这使得Vrapper忽略了它。

bqjvbblv

bqjvbblv2#

正如@romainl所指出的,Vrapper只理解有限的Vim命令和特性,函数定义、三元组和<expr>是绝对不支持的。
如果您希望拆分rc文件,可以使用source命令至少重用其中一个。
例如,在.vrapperrc中设置以下基本设置:

set ignorecase
set hlsearch

然后,您可以在.vimrc中执行此操作:

" Load common settings for Vim / Vrapper
source .vrapperrc
" ... Other Vim-specific settings

请注意,Vrapper也有一个source命令,所以理论上你可以有3个rc文件,它们之间共享“公共”设置:
示例.vrapperrc

set novisualmouse
source .vimcommonrc

示例.vimrc

" Use j/k to naviage the word completion popup menu
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"
source .vimcommonrc

和常用设置:

set hlsearch
set ignorecase

这是你的选择。

frebpwbc

frebpwbc3#

我不认为你可以 * 检测Vrapper*,但你可以写一个命令,真实的的Vim将处理和Vrapper将忽略。
示例:Map<KMinus>

nnoremap <KMinus> q

如果Vrapper运行它,它会崩溃。让它忽略它。有很多方法:
第一个
如果其他命令不起作用,还有一个更“激进”的版本。它对多个命令很有用:

if v:true |
  \nmap <C-Bslash> gcc |
  \vmap <C-Bslash> gc |
  \imap <C-Bslash> <C-o><C-Bslash> |
\endif

您甚至可以添加一条finish语句,Vim会将其视为“我应该停止阅读此文件”,Vrapper可能会忽略并继续执行该文件,这使得它非常适合放在Vrapper专用命令之前:

if v:true
  " Vim-only stuff

  finish
endif

" Vrapper-only stuff
vsdwdz23

vsdwdz234#

你觉得会怎么样?
你的~/.vimrc不是一个有知觉的存在,可以自己做决定:它需要由一个理解它的程序来获取...那个程序就是Vim。
Vrapper只支持a subset of Vim's vocabulary,因此期望它的行为 * 完全 * 像Vim是不太合理的。由于Vrapper不支持if-else-endif构造,因此您不能使用它!
因为这两个程序支持的选项和命令集大不相同,所以恐怕您将不得不管理两个单独的文件。
您是否尝试过Vrapper的:source命令?

相关问题