quickfix-reflector.vim


Ⅰ. 插件描述

Change code right in the quickfix window

Ⅱ. 基本信息

创建日期:  2014-03-16
使用用户:  35
Github星:  120
插件作者:  Stefan Dotterweich

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'stefandtw/quickfix-reflector-vim'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'stefandtw/quickfix-reflector-vim'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'stefandtw/quickfix-reflector-vim'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/stefandtw/quickfix-reflector.vim

Ⅳ. 文档说明

Usage

In the quickfix window, simply edit any entry you like. Once you save the quickfix buffer, your changes will be made in the actual file an entry points to.

You can also delete lines in the quickfix window. This way, you can first review the quickfix list, remove all entries you don't care to change, and then use %s/foo/bar (or anything else) on the rest.

Details

  • Works in location list windows, too
  • The quickfix buffer is now modifiable
  • The usual write commands can be used (:w, :x etc.), but they won't save the buffer to a file. Instead they will trigger replacement for any changes you made.
  • If you specifically want to save the quickfix buffer to a file, you can still do that the same way as before :write my_qf_list
  • Adding and removing lines in the quickfix buffer breaks each line's link to Vim's internal quickfix entry. After making such changes, you need to write the quickfix buffer. This will rewrite Vim's internal quickfix list. Otherwise, pressing <Enter> may jump to the wrong entry.
  • If you like to use :caddexpr or similar partial updates to the quickfix list, you need re-initialize the quickfix buffer before it can be saved. The easiest way is to :copen again. See Issue #25.

Limits to text replacement

Whenever a replacement fails, you get an '[ERROR]' in the corresponding quickfix entry.

Replacement only works if the text that was modified actually exists in the corresponding text file and line number. So it may fail if the file was modified since the quickfix list was built.

If the quickfix entry contains only part of a line, replacement should work as long as there is a substring of that line with at least three characters.

Example: The quickfix entry Missing ; at: xyz can be used to replace in a line a = xyz. However, it cannot be used in a line xyz = 1+xyz because it is not clear which xyz would need to be replaced

Options

let g:qf_modifiable = 1

If 1, automatically sets quickfix buffers 'modifiable'. If you prefer to do
this manually, set the value to 0. Default: 1.

let g:qf_join_changes = 1

If 1, changes within a single buffer will be joined using |:undojoin|, allowing
them to be undone as a unit. Default: 0.

let g:qf_write_changes = 1

If 1, writing the quickfix buffer will also write corresponding files. If 0,
buffers of corresponding files will be changed but not written, allowing you
to preview the changes before writing the individual buffers yourself.
Default: 1

Events

Custom events can be used like this:

autocmd User <event> :echo 'do something'

If you prefer, you can redirect a custom event using regular Vim events. Example:

autocmd User QfReplacementBufWritePost doautocmd BufWritePost

Implemented events:

  • QfReplacementBufWritePost This event is sent after making a replacement and writing the corresponding buffer.

Links

Installation

Use Pathogen, Vundle, or your own favorite method.

Development

Run rake test for the vspec tests.

To get the test environment working you need to

  • install ruby
  • gem install bundler
  • bundle install

More details here.

添加新评论