我想在不离开正常模式(进入插入或命令行模式)的情况下将一行(在光标位置)分成两行.这可能吗?
我目前到达我想要的位置并点击'i'进入插入模式,'输入'将线路分成两部分,然后'esc'返回正常模式.
我不是要设置最大行长度或做任何语法或类似的东西.我只是想在不离开正常模式的情况下将一行分成两行.'J'将光标所在的行连接到它下面的行,这很方便.我想要相反 - 用一个命令将一行分成两行.
在我最近尝试过的一个基于Eclipse的编辑器(我认为它是RubyMine)中,当选择打开或关闭方法或块的Ruby关键字时,突出显示了相应的open/close关键字.类似于Vim能够突出显示相应的打开/关闭括号的方式.
例如,如果我选择了'def',它会突出显示相应的'end'.它也适用于do/end块.
这非常方便,特别是对于那些长而有时重度嵌套的Rspec文件.
有人知道如何在Vim中实现这一目标吗?
我的项目涉及在远程服务器上处理大型代码库.我不断编辑多个文件,因此不能将scp'ing文件备份到第四个文件中.我的本地Macvim设置就像我喜欢它一样,有多个插件,包括ctags.
是否可以通过ssh使用Macvim,以便我可以轻松地从本地运行的Macvim中浏览并打开文件?
如果没有将ctags安装在远程服务器上就能使用ctags会更好但我怀疑不可能......
还有一个问题是,远程服务器是使用别人的.vimrc设置的,我不想使用它,但不能覆盖.
在vim/gvim中,我希望能够移动到当前搜索查找的前端和末尾.这可能吗?
例如,使用此文件:
A dog and a cat
A hat and a bat
Run Code Online (Sandbox Code Playgroud)
我希望能够执行搜索,例如/dog\sand,然后能够从'dog and'表达式的开头移动到结束和返回,以便我的光标从第3列开始,在字母'd'下面单词'dog'然后移到第9列的字母'd'或单词'and'.
我希望能够这样做的原因是我可以搜索表达式然后使用更改命令c,并结合移动命令来替换该特定搜索表达式.我不想在这里使用substitue和替换,我想使用change命令和移动键来执行此操作.
所以我知道你可以用Ctrl- X,Ctrl- 你可以得到Vim自动完成,O但我想知道你是否可以重做它所以只需按下Tab(更像是Textmate的片段),或者甚至只是如何将它重新映射到更短的东西(甚至如果我不能得到花哨的标签完成),我发现Ctrl- X,Ctrl- O有点尴尬.
我正在使用Macvim 7.3快照57.我似乎无法在我的任何文件中使用matchit.
我在开始标记上按%.它不会把我带到结束标签......
我的vimrc文件:
" Pathogen settings
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
set nocompatible
set number
set ruler
set cursorline
syntax on
" Disable all blinking
set guicursor+=a:blinkon0
" Whitespace stuff
set nowrap
set tabstop=2
set shiftwidth=2
set expandtab
set cindent
set smartindent
set autoindent
set list listchars=tab:\ \ ,trail:·
" Searching
set hlsearch
set incsearch
set ignorecase
set smartcase
" Status bar
set laststatus=2
" Start without the toolbar
set guioptions-=T
" Default gui color scheme
" "color default
" …Run Code Online (Sandbox Code Playgroud) 我刚刚使用病原体和子模块将Powerline插件安装到我的vim中.
仅当多个缓冲区位于何处时,电源线才可见.当vim中只有一个缓冲区时,我看不到它.
我想知道它是不是一个bug?

在过去的几年里,我曾经使用vim来编辑远程服务器上的配置和脚本.几个星期前,我决定采取下一步,尝试使用(Mac)vim作为我的常规编辑器,除了Sublime Text 2.现在我达到了我想创建我的第一个插件的地步.
我的插件将定义~16个全局变量,可以由用户分配以调整插件的某些属性.我问自己,检查用户是否已将自己的值分配给某个变量,最优雅的方式(可能是主观的)是什么.我检查了各种其他插件,到目前为止我看到的"模式"似乎总是:
if !exists("g:pluginname_setting")
let g:pluginname_setting="default"
endif
Run Code Online (Sandbox Code Playgroud)
这似乎很简单直接.但我会一遍又一遍地重复同一段代码.由于vi(m)存在了相当长的时间,我很确定人们已经尝试了很多方法来编写插件,并且已经开发了某种"最佳实践",我认为这是我上面给出的"模式"举个例子.然而,调用一个函数来填充包含所有插件设置的字典,然后迭代字典以检查密钥以查看用户是否已经定义了他的个人偏好,这不是更优雅吗?这是一个好主意还是我应该放弃这个想法并坚持这个ìf !exists()方法?