vimdb 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemspec +1 -1
- data/.travis.yml +2 -0
- data/CHANGELOG.rdoc +4 -0
- data/README.md +165 -20
- data/bin/vimdb +5 -0
- data/lib/vimdb/item.rb +6 -1
- data/lib/vimdb/version.rb +1 -1
- data/spec/deps.rip +1 -1
- metadata +13 -13
data/.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.add_dependency 'boson', '>= 1.1.1'
|
16
16
|
s.add_dependency 'hirb', '~> 0.6.0'
|
17
17
|
s.add_development_dependency 'minitest', '~> 2.5.1'
|
18
|
-
s.add_development_dependency 'bahia', '~> 0.
|
18
|
+
s.add_development_dependency 'bahia', '~> 0.5'
|
19
19
|
s.add_development_dependency 'rake', '~> 0.9.2'
|
20
20
|
s.files = Dir.glob(%w[{lib,spec}/**/*.rb bin/* [A-Z]*.{txt,rdoc,md} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec .travis.yml}
|
21
21
|
s.files += Dir.glob(['spec/fixtures/*', 'spec/.vimdbrc'])
|
data/.travis.yml
CHANGED
data/CHANGELOG.rdoc
CHANGED
data/README.md
CHANGED
@@ -1,14 +1,23 @@
|
|
1
1
|
Description
|
2
2
|
===========
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
Increase the speed and amount of vim knowledge at your fingertips with precise
|
5
|
+
searching of vim's items: keys (keybindings), options and commands. vimdb is
|
6
|
+
aware of vim's default items, ones in your vimrc and ones in plugins. vimdb's
|
7
|
+
plugin detection works only if you're using a pathogen-like setup i.e. each
|
8
|
+
plugin has its own directory under ~/.vim/bundle/ (see Configuration below to
|
9
|
+
change the directory). Tested with vim >= 7.2 on a mac. Works only on ruby 1.9.x.
|
10
|
+
|
11
|
+
Install
|
12
|
+
=======
|
13
|
+
|
14
|
+
$ gem install vimdb
|
8
15
|
|
9
16
|
Usage
|
10
17
|
=====
|
11
18
|
|
19
|
+
Basic examples searching different vim items:
|
20
|
+
|
12
21
|
# List keys with Ctrl
|
13
22
|
$ vimdb keys C-
|
14
23
|
+---------------+------+---------------------+------------------------------------------
|
@@ -21,6 +30,78 @@ Usage
|
|
21
30
|
| <C-Home> | n | default | 1 same as "gg" |
|
22
31
|
| <C-Left> | n | default | 1 same as "b" |
|
23
32
|
...
|
33
|
+
262 rows in set
|
34
|
+
|
35
|
+
|
36
|
+
# List options that contain word 'window' in any field
|
37
|
+
$ vimdb options window -a
|
38
|
+
+----------------+--------+----------------------------------------------------+
|
39
|
+
| name | alias | desc |
|
40
|
+
+----------------+--------+----------------------------------------------------+
|
41
|
+
| autochdir | acd | change directory to the file in the current window |
|
42
|
+
| bufhidden | bh | what to do when buffer is no longer in window |
|
43
|
+
| cedit | | key used to open the command-line window |
|
44
|
+
| cmdwinheight | cwh | height of the command-line window |
|
45
|
+
| cscopequickfix | csqf | use quickfix window for cscope results |
|
46
|
+
| cursorbind | crb | move cursor in window as it moves in other windows |
|
47
|
+
| diff | | use diff mode for the current window |
|
48
|
+
| equalalways | ea | windows are automatically made the same size |
|
49
|
+
| guiheadroom | ghr | GUI: pixels room for window decorations |
|
50
|
+
| helpheight | hh | minimum height of a new help window |
|
51
|
+
| icon | | let Vim set the text of the window icon |
|
52
|
+
...
|
53
|
+
30 rows in set
|
54
|
+
|
55
|
+
# Search for commands from pathogen plugin
|
56
|
+
$ vimdb commands pathogen -f=from
|
57
|
+
+----------+-------+---------------------+-----------------------------------------------------+
|
58
|
+
| name | alias | from | desc |
|
59
|
+
+----------+-------+---------------------+-----------------------------------------------------+
|
60
|
+
| Helptags | | pathogen.vim plugin | :call pathogen#helptags() |
|
61
|
+
| Ve | | pathogen.vim plugin | :execute s:find(<count>,'edit<bang>',<q-args>,0) |
|
62
|
+
| Vedit | | pathogen.vim plugin | :execute s:find(<count>,'edit<bang>',<q-args>,0) |
|
63
|
+
| Vopen | | pathogen.vim plugin | :execute s:find(<count>,'edit<bang>',<q-args>,1) |
|
64
|
+
| Vpedit | | pathogen.vim plugin | :execute s:find(<count>,'pedit',<q-args>,<bang>1) |
|
65
|
+
| Vread | | pathogen.vim plugin | :execute s:find(<count>,'read',<q-args>,<bang>1) |
|
66
|
+
| Vsplit | | pathogen.vim plugin | :execute s:find(<count>,'split',<q-args>,<bang>1) |
|
67
|
+
| Vtabedit | | pathogen.vim plugin | :execute s:find(<count>,'tabedit',<q-args>,<bang>1) |
|
68
|
+
| Vvsplit | | pathogen.vim plugin | :execute s:find(<count>,'vsplit',<q-args>,<bang>1) |
|
69
|
+
+----------+-------+---------------------+-----------------------------------------------------+
|
70
|
+
9 rows in set
|
71
|
+
|
72
|
+
# Info about how a vim item is made
|
73
|
+
$ vimdb info keys
|
74
|
+
Created using index.txt and :map
|
75
|
+
|
76
|
+
# For a list of all commands
|
77
|
+
$ vimdb
|
78
|
+
|
79
|
+
## More Usage
|
80
|
+
|
81
|
+
As you can see from the last example, vimdb supports options for each command.
|
82
|
+
For a command's listing of options use --help or -h:
|
83
|
+
|
84
|
+
$ vimdb keys --help
|
85
|
+
Usage: vimdb keys [QUERY]
|
86
|
+
|
87
|
+
Options:
|
88
|
+
-a, --all search all fields
|
89
|
+
-f, --field field to query
|
90
|
+
-i, --ignore_case
|
91
|
+
-m, --mode search by mode, multiple modes are ORed
|
92
|
+
-n, --not return non-matching results
|
93
|
+
-r, --regexp query is a regexp
|
94
|
+
-R, --reload reloads items
|
95
|
+
--reverse_sort
|
96
|
+
-s, --sort sort by field
|
97
|
+
-t, --tab print tab-delimited table
|
98
|
+
|
99
|
+
Description:
|
100
|
+
List vim keys
|
101
|
+
|
102
|
+
|
103
|
+
As you can see, keys can be searched by keystroke, mode, description or from
|
104
|
+
(default, user or plugin name). Some examples:
|
24
105
|
|
25
106
|
# List keys with Ctrl-A combo
|
26
107
|
$ vimdb keys C-A
|
@@ -40,8 +121,6 @@ Usage
|
|
40
121
|
# List keys I've defined in vimrc
|
41
122
|
$ vimdb keys user -f=from
|
42
123
|
|
43
|
-
# Plugins are assumed to be in ~/.vim/bundle/ i.e. for pathogen
|
44
|
-
# Change with Vimdb.plugins_dir
|
45
124
|
# List keys from my plugins
|
46
125
|
$ vimdb keys plugin -f=from
|
47
126
|
|
@@ -51,25 +130,78 @@ Usage
|
|
51
130
|
# List keys that contain completion in description
|
52
131
|
$ vimdb keys completion -f=desc
|
53
132
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
$ vimdb
|
133
|
+
Advanced Usage
|
134
|
+
==============
|
135
|
+
|
136
|
+
vimdb can be customized with your own commands thanks to its rc file and command
|
137
|
+
engine, [boson](http://github.com/cldwalker/boson). For example,
|
138
|
+
[my rc file](https://github.com/cldwalker/dotfiles/blob/master/.vimdbrc)
|
139
|
+
defines a command that detects conflicts between default keys and plugin keys:
|
140
|
+
|
141
|
+
$ vimdb conflict
|
142
|
+
+-------+------+---------------------+---------------------------------------------------------------------------------+
|
143
|
+
| key | mode | from | desc/action |
|
144
|
+
+-------+------+---------------------+---------------------------------------------------------------------------------+
|
145
|
+
| C-w o | n | default | close all but current window (like |:only|) |
|
146
|
+
| C-w o | n | zoomwin plugin | <Plug>ZoomWin |
|
147
|
+
| * | n | default | search forward for the Nth occurrence of the ident under the cursor |
|
148
|
+
| * | nos | tcomment_vim plugin | :TCommentRight<CR> |
|
149
|
+
| * | n | default | search forward for the Nth occurrence of the ident under the cursor |
|
150
|
+
| * | nos | tcomment_vim plugin | :TComment<CR> |
|
151
|
+
...
|
63
152
|
|
64
|
-
|
65
|
-
|
153
|
+
If you look at conflict's implementation, you see it's only about a dozen lines.
|
154
|
+
Since vimdb stores vim items as array of hashes, you can use these within
|
155
|
+
commands for whatever purpose.
|
156
|
+
|
157
|
+
To illustrate creating a command, let's create one that lists the first
|
158
|
+
given number of vim commands. In your ~/.vimdbrc:
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
class Vimdb::Runner
|
162
|
+
desc "Prints first X options"
|
163
|
+
def first(num)
|
164
|
+
# Set item type we're retrieving
|
165
|
+
Vimdb.item('options')
|
166
|
+
puts Vimdb.user.items.first(num.to_i).map {|e| e[:name] }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
```
|
170
|
+
|
171
|
+
To test drive it:
|
172
|
+
|
173
|
+
$ vimdb first 5
|
174
|
+
aleph
|
175
|
+
allowrevins
|
176
|
+
altkeymap
|
177
|
+
ambiwidth
|
178
|
+
antialias
|
66
179
|
|
67
180
|
Configuration
|
68
181
|
=============
|
69
182
|
|
70
|
-
Configure vimdb with a ~/.vimdbrc, which is loaded before every
|
71
|
-
|
72
|
-
|
183
|
+
Configure vimdb with a ~/.vimdbrc (in ruby), which is loaded before every
|
184
|
+
command request. For example, to configure where plugins are stored:
|
185
|
+
|
186
|
+
# plugins stored in ~/.vim/plugins
|
187
|
+
Vimdb.plugins_dir = 'plugins'
|
188
|
+
|
189
|
+
For a more thorough example,
|
190
|
+
[see my rc file](https://github.com/cldwalker/dotfiles/blob/master/.vimdbrc).
|
191
|
+
|
192
|
+
Vim Mappings
|
193
|
+
============
|
194
|
+
|
195
|
+
Since vimdb runs on ruby 1.9.x, there's a good chance you don't have vim
|
196
|
+
compiled against ruby 1.9.x. No worries, use rvm or rbenv to install a 1.9.x
|
197
|
+
version. Then to invoke vimdb within vim, set up a key to pipe out to vimdb
|
198
|
+
using rvm or rbenv:
|
199
|
+
|
200
|
+
```vim
|
201
|
+
map <Leader>v :!rbenv exec vimdb
|
202
|
+
" or for rvm
|
203
|
+
map <Leader>v :!rvm 1.9.3 vimdb
|
204
|
+
```
|
73
205
|
|
74
206
|
Key Modes
|
75
207
|
=========
|
@@ -92,11 +224,24 @@ The following modes from :map were altered to fit into the above modes:
|
|
92
224
|
* x -> v
|
93
225
|
* v -> vs
|
94
226
|
|
227
|
+
How It Works
|
228
|
+
============
|
229
|
+
|
230
|
+
This gem creates a vimdb database, ~/.vimdb.pstore, by parsing your vim
|
231
|
+
documentation and outputs of vim commands. When an item is first searched it is
|
232
|
+
parsed. Subsequent searches are cached. To reload (and reparse) you database,
|
233
|
+
pass a --reload option to most commands.
|
234
|
+
|
95
235
|
Motivation
|
96
236
|
==========
|
97
237
|
|
98
238
|
Wanted to learn faster than :help would let me.
|
99
239
|
|
240
|
+
Credits
|
241
|
+
=======
|
242
|
+
|
243
|
+
* mattn for windows support
|
244
|
+
|
100
245
|
Contributing
|
101
246
|
============
|
102
247
|
[See here](http://tagaholic.me/contributing.html)
|
data/bin/vimdb
CHANGED
data/lib/vimdb/item.rb
CHANGED
@@ -61,7 +61,12 @@ module Vimdb
|
|
61
61
|
private
|
62
62
|
|
63
63
|
def vim(*cmds)
|
64
|
-
|
64
|
+
quote = "'"
|
65
|
+
if RUBY_PLATFORM =~ /mswin(?!ce)|mingw|cygwin|bccwin/i
|
66
|
+
cmds = cmds.map{|x| x.gsub(/"/,'"""') }
|
67
|
+
quote = '"'
|
68
|
+
end
|
69
|
+
system %[#{Vimdb.vim} -N -u NONE --cmd #{quote}colorscheme default | #{cmds.join(' | ')} | qa#{quote}]
|
65
70
|
end
|
66
71
|
|
67
72
|
if ENV['VIMDB_FIXTURE_DIR']
|
data/lib/vimdb/version.rb
CHANGED
data/spec/deps.rip
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vimdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: boson
|
16
|
-
requirement: &
|
16
|
+
requirement: &70096513129620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70096513129620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: hirb
|
27
|
-
requirement: &
|
27
|
+
requirement: &70096513129060 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70096513129060
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70096513128420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,21 +43,21 @@ dependencies:
|
|
43
43
|
version: 2.5.1
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70096513128420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bahia
|
49
|
-
requirement: &
|
49
|
+
requirement: &70096513127180 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.5'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70096513127180
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &70096513126640 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 0.9.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70096513126640
|
69
69
|
description: Search your vim keybindings precisely by keystroke, mode, description
|
70
70
|
or where they came from. Search vim options by name, alias and description.
|
71
71
|
email: gabriel.horner@gmail.com
|