vimlm 0.0.5__tar.gz → 0.0.6__tar.gz
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.
- vimlm-0.0.6/PKG-INFO +158 -0
- vimlm-0.0.6/README.md +136 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/setup.py +1 -1
- vimlm-0.0.6/vimlm.egg-info/PKG-INFO +158 -0
- vimlm-0.0.6/vimlm.egg-info/requires.txt +3 -0
- vimlm-0.0.6/vimlm.py +580 -0
- vimlm-0.0.5/PKG-INFO +0 -108
- vimlm-0.0.5/README.md +0 -86
- vimlm-0.0.5/vimlm.egg-info/PKG-INFO +0 -108
- vimlm-0.0.5/vimlm.egg-info/requires.txt +0 -3
- vimlm-0.0.5/vimlm.py +0 -389
- {vimlm-0.0.5 → vimlm-0.0.6}/LICENSE +0 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/setup.cfg +0 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/vimlm.egg-info/SOURCES.txt +0 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/vimlm.egg-info/dependency_links.txt +0 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/vimlm.egg-info/entry_points.txt +0 -0
- {vimlm-0.0.5 → vimlm-0.0.6}/vimlm.egg-info/top_level.txt +0 -0
vimlm-0.0.6/PKG-INFO
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: vimlm
|
3
|
+
Version: 0.0.6
|
4
|
+
Summary: VimLM - LLM-powered Vim assistant
|
5
|
+
Home-page: https://github.com/JosefAlbers/vimlm
|
6
|
+
Author: Josef Albers
|
7
|
+
Author-email: albersj66@gmail.com
|
8
|
+
Requires-Python: >=3.12.8
|
9
|
+
Description-Content-Type: text/markdown
|
10
|
+
License-File: LICENSE
|
11
|
+
Requires-Dist: nanollama==0.0.5
|
12
|
+
Requires-Dist: mlx_lm_utils==0.0.2
|
13
|
+
Requires-Dist: watchfiles==1.0.4
|
14
|
+
Dynamic: author
|
15
|
+
Dynamic: author-email
|
16
|
+
Dynamic: description
|
17
|
+
Dynamic: description-content-type
|
18
|
+
Dynamic: home-page
|
19
|
+
Dynamic: requires-dist
|
20
|
+
Dynamic: requires-python
|
21
|
+
Dynamic: summary
|
22
|
+
|
23
|
+
|
24
|
+
# VimLM - Local LLM-Powered Coding Assistant for Vim
|
25
|
+
|
26
|
+

|
27
|
+
|
28
|
+
LLM-powered coding companion for Vim, inspired by GitHub Copilot/Cursor. Integrates contextual code understanding, summarization, and AI assistance directly into your Vim workflow.
|
29
|
+
|
30
|
+
## Features
|
31
|
+
|
32
|
+
- **Model Agnostic** - Use any MLX-compatible model via a configuration file
|
33
|
+
- **Vim-Native UX** - Intuitive keybindings and split-window responses
|
34
|
+
- **Deep Context** - Understands code context from:
|
35
|
+
- Current file
|
36
|
+
- Visual selections
|
37
|
+
- Referenced files
|
38
|
+
- Project directory structure
|
39
|
+
- **Conversational Coding** - Iterative refinement with follow-up queries
|
40
|
+
- **Air-Gapped Security** - 100% offline - no APIs, no tracking, no data leaks
|
41
|
+
|
42
|
+
## Requirements
|
43
|
+
|
44
|
+
- Apple M-series chip
|
45
|
+
- Python 3.12.8
|
46
|
+
|
47
|
+
## Quick Start
|
48
|
+
|
49
|
+
Install:
|
50
|
+
|
51
|
+
```zsh
|
52
|
+
pip install vimlm
|
53
|
+
```
|
54
|
+
|
55
|
+
Launch:
|
56
|
+
|
57
|
+
```zsh
|
58
|
+
vimlm
|
59
|
+
```
|
60
|
+
|
61
|
+
or
|
62
|
+
|
63
|
+
```zsh
|
64
|
+
vimlm path/to/your_file
|
65
|
+
```
|
66
|
+
|
67
|
+
This launches Vim with the LLM in a split window, ready to assist you.
|
68
|
+
|
69
|
+
## Basic Usage
|
70
|
+
|
71
|
+
1. **From Normal Mode**:
|
72
|
+
- `Ctrl-l`: Adds current line + file to context
|
73
|
+
- Example prompt: "Regex for removing html tags from item.content"
|
74
|
+
|
75
|
+
2. **From Visual Mode**:
|
76
|
+
- Select code → `Ctrl-l`: Adds selected block + current file to context
|
77
|
+
- Example prompt: "Convert this to async/await syntax"
|
78
|
+
|
79
|
+
3. **Inline Commands**:
|
80
|
+
|
81
|
+
!include: Adds specified outside files/folders to context:
|
82
|
+
- `!include` (no path): Current folder
|
83
|
+
- `!include ~/scrap/jph00/hypermedia-applications.summ.md`: Specific folder
|
84
|
+
- `!include ~/wtm/utils.py`: Specific file
|
85
|
+
- Example prompt: "AJAX-ify this app @ ~/scrap/jph00/hypermedia-applications.summ.md"
|
86
|
+
|
87
|
+
!deploy: Extract code blocks to files in user specified dir (current dir if none specified).
|
88
|
+
|
89
|
+
!continue: Lets the LLM resume the generation from where it had halted due to length limits.
|
90
|
+
|
91
|
+
!followup: Continue the thread (equivalent to `Ctrl-j`
|
92
|
+
|
93
|
+
4. **Follow-Up**: After initial response:
|
94
|
+
- `Ctrl-j`: Continue thread
|
95
|
+
- Example follow-up: "In Manifest V3"
|
96
|
+
|
97
|
+
4. **Code Extraction: Press `Ctrl-p` to choose a code block from the response and insert them into:
|
98
|
+
- The last selected visual block (in Normal mode)
|
99
|
+
- The current selection (in Visual mode)
|
100
|
+
- Example workflow:
|
101
|
+
1. Select a block of code in Visual mode.
|
102
|
+
2. Prompt the LLM with `Ctrl-l` (e.g., "Convert this to async/await syntax").
|
103
|
+
3. Once the response is generated, press `Ctrl-p` to replace the selected block with the extracted code.
|
104
|
+
|
105
|
+
### Key Bindings
|
106
|
+
|
107
|
+
| Binding | Mode | Action |
|
108
|
+
|------------|---------------|----------------------------------------|
|
109
|
+
| `Ctrl-l` | Normal/Visual | Send current file + selection to LLM |
|
110
|
+
| `Ctrl-j` | Normal | Continue conversation |
|
111
|
+
| `Ctrl-p` | Normal/Visual | Replace the selection with generated code |
|
112
|
+
| `Esc` | Prompt | Cancel input |
|
113
|
+
|
114
|
+
## Advanced Configuration
|
115
|
+
|
116
|
+
VimLM uses a JSON config file with the following configurable parameters:
|
117
|
+
|
118
|
+
```json
|
119
|
+
{
|
120
|
+
"DEBUG": true,
|
121
|
+
"LLM_MODEL": null,
|
122
|
+
"NUM_TOKEN": 2000,
|
123
|
+
"SEP_CMD": "!",
|
124
|
+
"USE_LEADER": false
|
125
|
+
}
|
126
|
+
```
|
127
|
+
|
128
|
+
### Custom Model Setup
|
129
|
+
|
130
|
+
1. **Browse models**: [MLX Community Models on Hugging Face](https://huggingface.co/mlx-community)
|
131
|
+
|
132
|
+
2. **Edit config file**:
|
133
|
+
|
134
|
+
```json
|
135
|
+
{
|
136
|
+
"LLM_MODEL": "mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit"
|
137
|
+
}
|
138
|
+
```
|
139
|
+
3. **Save to**:
|
140
|
+
|
141
|
+
```
|
142
|
+
~/vimlm/config.json
|
143
|
+
```
|
144
|
+
|
145
|
+
4. **Restart VimLM**
|
146
|
+
|
147
|
+
|
148
|
+
### Custom Keybinding
|
149
|
+
|
150
|
+
If you prefer using `<Leader>` in place of `<Ctrl>` for the ViMLM key bindings:
|
151
|
+
|
152
|
+
```json
|
153
|
+
{
|
154
|
+
"USER_LEADER": true
|
155
|
+
}
|
156
|
+
```
|
157
|
+
|
158
|
+
|
vimlm-0.0.6/README.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
|
2
|
+
# VimLM - Local LLM-Powered Coding Assistant for Vim
|
3
|
+
|
4
|
+

|
5
|
+
|
6
|
+
LLM-powered coding companion for Vim, inspired by GitHub Copilot/Cursor. Integrates contextual code understanding, summarization, and AI assistance directly into your Vim workflow.
|
7
|
+
|
8
|
+
## Features
|
9
|
+
|
10
|
+
- **Model Agnostic** - Use any MLX-compatible model via a configuration file
|
11
|
+
- **Vim-Native UX** - Intuitive keybindings and split-window responses
|
12
|
+
- **Deep Context** - Understands code context from:
|
13
|
+
- Current file
|
14
|
+
- Visual selections
|
15
|
+
- Referenced files
|
16
|
+
- Project directory structure
|
17
|
+
- **Conversational Coding** - Iterative refinement with follow-up queries
|
18
|
+
- **Air-Gapped Security** - 100% offline - no APIs, no tracking, no data leaks
|
19
|
+
|
20
|
+
## Requirements
|
21
|
+
|
22
|
+
- Apple M-series chip
|
23
|
+
- Python 3.12.8
|
24
|
+
|
25
|
+
## Quick Start
|
26
|
+
|
27
|
+
Install:
|
28
|
+
|
29
|
+
```zsh
|
30
|
+
pip install vimlm
|
31
|
+
```
|
32
|
+
|
33
|
+
Launch:
|
34
|
+
|
35
|
+
```zsh
|
36
|
+
vimlm
|
37
|
+
```
|
38
|
+
|
39
|
+
or
|
40
|
+
|
41
|
+
```zsh
|
42
|
+
vimlm path/to/your_file
|
43
|
+
```
|
44
|
+
|
45
|
+
This launches Vim with the LLM in a split window, ready to assist you.
|
46
|
+
|
47
|
+
## Basic Usage
|
48
|
+
|
49
|
+
1. **From Normal Mode**:
|
50
|
+
- `Ctrl-l`: Adds current line + file to context
|
51
|
+
- Example prompt: "Regex for removing html tags from item.content"
|
52
|
+
|
53
|
+
2. **From Visual Mode**:
|
54
|
+
- Select code → `Ctrl-l`: Adds selected block + current file to context
|
55
|
+
- Example prompt: "Convert this to async/await syntax"
|
56
|
+
|
57
|
+
3. **Inline Commands**:
|
58
|
+
|
59
|
+
!include: Adds specified outside files/folders to context:
|
60
|
+
- `!include` (no path): Current folder
|
61
|
+
- `!include ~/scrap/jph00/hypermedia-applications.summ.md`: Specific folder
|
62
|
+
- `!include ~/wtm/utils.py`: Specific file
|
63
|
+
- Example prompt: "AJAX-ify this app @ ~/scrap/jph00/hypermedia-applications.summ.md"
|
64
|
+
|
65
|
+
!deploy: Extract code blocks to files in user specified dir (current dir if none specified).
|
66
|
+
|
67
|
+
!continue: Lets the LLM resume the generation from where it had halted due to length limits.
|
68
|
+
|
69
|
+
!followup: Continue the thread (equivalent to `Ctrl-j`
|
70
|
+
|
71
|
+
4. **Follow-Up**: After initial response:
|
72
|
+
- `Ctrl-j`: Continue thread
|
73
|
+
- Example follow-up: "In Manifest V3"
|
74
|
+
|
75
|
+
4. **Code Extraction: Press `Ctrl-p` to choose a code block from the response and insert them into:
|
76
|
+
- The last selected visual block (in Normal mode)
|
77
|
+
- The current selection (in Visual mode)
|
78
|
+
- Example workflow:
|
79
|
+
1. Select a block of code in Visual mode.
|
80
|
+
2. Prompt the LLM with `Ctrl-l` (e.g., "Convert this to async/await syntax").
|
81
|
+
3. Once the response is generated, press `Ctrl-p` to replace the selected block with the extracted code.
|
82
|
+
|
83
|
+
### Key Bindings
|
84
|
+
|
85
|
+
| Binding | Mode | Action |
|
86
|
+
|------------|---------------|----------------------------------------|
|
87
|
+
| `Ctrl-l` | Normal/Visual | Send current file + selection to LLM |
|
88
|
+
| `Ctrl-j` | Normal | Continue conversation |
|
89
|
+
| `Ctrl-p` | Normal/Visual | Replace the selection with generated code |
|
90
|
+
| `Esc` | Prompt | Cancel input |
|
91
|
+
|
92
|
+
## Advanced Configuration
|
93
|
+
|
94
|
+
VimLM uses a JSON config file with the following configurable parameters:
|
95
|
+
|
96
|
+
```json
|
97
|
+
{
|
98
|
+
"DEBUG": true,
|
99
|
+
"LLM_MODEL": null,
|
100
|
+
"NUM_TOKEN": 2000,
|
101
|
+
"SEP_CMD": "!",
|
102
|
+
"USE_LEADER": false
|
103
|
+
}
|
104
|
+
```
|
105
|
+
|
106
|
+
### Custom Model Setup
|
107
|
+
|
108
|
+
1. **Browse models**: [MLX Community Models on Hugging Face](https://huggingface.co/mlx-community)
|
109
|
+
|
110
|
+
2. **Edit config file**:
|
111
|
+
|
112
|
+
```json
|
113
|
+
{
|
114
|
+
"LLM_MODEL": "mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit"
|
115
|
+
}
|
116
|
+
```
|
117
|
+
3. **Save to**:
|
118
|
+
|
119
|
+
```
|
120
|
+
~/vimlm/config.json
|
121
|
+
```
|
122
|
+
|
123
|
+
4. **Restart VimLM**
|
124
|
+
|
125
|
+
|
126
|
+
### Custom Keybinding
|
127
|
+
|
128
|
+
If you prefer using `<Leader>` in place of `<Ctrl>` for the ViMLM key bindings:
|
129
|
+
|
130
|
+
```json
|
131
|
+
{
|
132
|
+
"USER_LEADER": true
|
133
|
+
}
|
134
|
+
```
|
135
|
+
|
136
|
+
|
@@ -0,0 +1,158 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: vimlm
|
3
|
+
Version: 0.0.6
|
4
|
+
Summary: VimLM - LLM-powered Vim assistant
|
5
|
+
Home-page: https://github.com/JosefAlbers/vimlm
|
6
|
+
Author: Josef Albers
|
7
|
+
Author-email: albersj66@gmail.com
|
8
|
+
Requires-Python: >=3.12.8
|
9
|
+
Description-Content-Type: text/markdown
|
10
|
+
License-File: LICENSE
|
11
|
+
Requires-Dist: nanollama==0.0.5
|
12
|
+
Requires-Dist: mlx_lm_utils==0.0.2
|
13
|
+
Requires-Dist: watchfiles==1.0.4
|
14
|
+
Dynamic: author
|
15
|
+
Dynamic: author-email
|
16
|
+
Dynamic: description
|
17
|
+
Dynamic: description-content-type
|
18
|
+
Dynamic: home-page
|
19
|
+
Dynamic: requires-dist
|
20
|
+
Dynamic: requires-python
|
21
|
+
Dynamic: summary
|
22
|
+
|
23
|
+
|
24
|
+
# VimLM - Local LLM-Powered Coding Assistant for Vim
|
25
|
+
|
26
|
+

|
27
|
+
|
28
|
+
LLM-powered coding companion for Vim, inspired by GitHub Copilot/Cursor. Integrates contextual code understanding, summarization, and AI assistance directly into your Vim workflow.
|
29
|
+
|
30
|
+
## Features
|
31
|
+
|
32
|
+
- **Model Agnostic** - Use any MLX-compatible model via a configuration file
|
33
|
+
- **Vim-Native UX** - Intuitive keybindings and split-window responses
|
34
|
+
- **Deep Context** - Understands code context from:
|
35
|
+
- Current file
|
36
|
+
- Visual selections
|
37
|
+
- Referenced files
|
38
|
+
- Project directory structure
|
39
|
+
- **Conversational Coding** - Iterative refinement with follow-up queries
|
40
|
+
- **Air-Gapped Security** - 100% offline - no APIs, no tracking, no data leaks
|
41
|
+
|
42
|
+
## Requirements
|
43
|
+
|
44
|
+
- Apple M-series chip
|
45
|
+
- Python 3.12.8
|
46
|
+
|
47
|
+
## Quick Start
|
48
|
+
|
49
|
+
Install:
|
50
|
+
|
51
|
+
```zsh
|
52
|
+
pip install vimlm
|
53
|
+
```
|
54
|
+
|
55
|
+
Launch:
|
56
|
+
|
57
|
+
```zsh
|
58
|
+
vimlm
|
59
|
+
```
|
60
|
+
|
61
|
+
or
|
62
|
+
|
63
|
+
```zsh
|
64
|
+
vimlm path/to/your_file
|
65
|
+
```
|
66
|
+
|
67
|
+
This launches Vim with the LLM in a split window, ready to assist you.
|
68
|
+
|
69
|
+
## Basic Usage
|
70
|
+
|
71
|
+
1. **From Normal Mode**:
|
72
|
+
- `Ctrl-l`: Adds current line + file to context
|
73
|
+
- Example prompt: "Regex for removing html tags from item.content"
|
74
|
+
|
75
|
+
2. **From Visual Mode**:
|
76
|
+
- Select code → `Ctrl-l`: Adds selected block + current file to context
|
77
|
+
- Example prompt: "Convert this to async/await syntax"
|
78
|
+
|
79
|
+
3. **Inline Commands**:
|
80
|
+
|
81
|
+
!include: Adds specified outside files/folders to context:
|
82
|
+
- `!include` (no path): Current folder
|
83
|
+
- `!include ~/scrap/jph00/hypermedia-applications.summ.md`: Specific folder
|
84
|
+
- `!include ~/wtm/utils.py`: Specific file
|
85
|
+
- Example prompt: "AJAX-ify this app @ ~/scrap/jph00/hypermedia-applications.summ.md"
|
86
|
+
|
87
|
+
!deploy: Extract code blocks to files in user specified dir (current dir if none specified).
|
88
|
+
|
89
|
+
!continue: Lets the LLM resume the generation from where it had halted due to length limits.
|
90
|
+
|
91
|
+
!followup: Continue the thread (equivalent to `Ctrl-j`
|
92
|
+
|
93
|
+
4. **Follow-Up**: After initial response:
|
94
|
+
- `Ctrl-j`: Continue thread
|
95
|
+
- Example follow-up: "In Manifest V3"
|
96
|
+
|
97
|
+
4. **Code Extraction: Press `Ctrl-p` to choose a code block from the response and insert them into:
|
98
|
+
- The last selected visual block (in Normal mode)
|
99
|
+
- The current selection (in Visual mode)
|
100
|
+
- Example workflow:
|
101
|
+
1. Select a block of code in Visual mode.
|
102
|
+
2. Prompt the LLM with `Ctrl-l` (e.g., "Convert this to async/await syntax").
|
103
|
+
3. Once the response is generated, press `Ctrl-p` to replace the selected block with the extracted code.
|
104
|
+
|
105
|
+
### Key Bindings
|
106
|
+
|
107
|
+
| Binding | Mode | Action |
|
108
|
+
|------------|---------------|----------------------------------------|
|
109
|
+
| `Ctrl-l` | Normal/Visual | Send current file + selection to LLM |
|
110
|
+
| `Ctrl-j` | Normal | Continue conversation |
|
111
|
+
| `Ctrl-p` | Normal/Visual | Replace the selection with generated code |
|
112
|
+
| `Esc` | Prompt | Cancel input |
|
113
|
+
|
114
|
+
## Advanced Configuration
|
115
|
+
|
116
|
+
VimLM uses a JSON config file with the following configurable parameters:
|
117
|
+
|
118
|
+
```json
|
119
|
+
{
|
120
|
+
"DEBUG": true,
|
121
|
+
"LLM_MODEL": null,
|
122
|
+
"NUM_TOKEN": 2000,
|
123
|
+
"SEP_CMD": "!",
|
124
|
+
"USE_LEADER": false
|
125
|
+
}
|
126
|
+
```
|
127
|
+
|
128
|
+
### Custom Model Setup
|
129
|
+
|
130
|
+
1. **Browse models**: [MLX Community Models on Hugging Face](https://huggingface.co/mlx-community)
|
131
|
+
|
132
|
+
2. **Edit config file**:
|
133
|
+
|
134
|
+
```json
|
135
|
+
{
|
136
|
+
"LLM_MODEL": "mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit"
|
137
|
+
}
|
138
|
+
```
|
139
|
+
3. **Save to**:
|
140
|
+
|
141
|
+
```
|
142
|
+
~/vimlm/config.json
|
143
|
+
```
|
144
|
+
|
145
|
+
4. **Restart VimLM**
|
146
|
+
|
147
|
+
|
148
|
+
### Custom Keybinding
|
149
|
+
|
150
|
+
If you prefer using `<Leader>` in place of `<Ctrl>` for the ViMLM key bindings:
|
151
|
+
|
152
|
+
```json
|
153
|
+
{
|
154
|
+
"USER_LEADER": true
|
155
|
+
}
|
156
|
+
```
|
157
|
+
|
158
|
+
|