Compare commits
2 commits
6d6f1e2524
...
a92c9cd07a
Author | SHA1 | Date | |
---|---|---|---|
a92c9cd07a | |||
5b0b67b5eb |
4 changed files with 47 additions and 7 deletions
28
README.md
28
README.md
|
@ -1,12 +1,38 @@
|
|||
# vip
|
||||
Small, fast and featureful vim-insipired text editor with strictly no dependency.
|
||||
|
||||
It has colorful syntax highlighting and integrate with [ccc](https://github.com/night0721/ccc) for picking files
|
||||
|
||||
# Usage
|
||||
```sh
|
||||
vip -c file # Cat mode
|
||||
vip file
|
||||
vip -c file
|
||||
```
|
||||
|
||||
```
|
||||
LEFT/h: left
|
||||
DOWN/j: down
|
||||
UP/k: up
|
||||
RIGHT/l: right
|
||||
HOME/0: start of line
|
||||
END/$: end of line
|
||||
PAGEUP: jump up a page
|
||||
PAGEDOWN: jump down a page
|
||||
Backspace/ctrl+h/del: delete char
|
||||
:w: save file
|
||||
:q(!): quit
|
||||
i: insert mode
|
||||
v: visual mode
|
||||
ESC: normal mode
|
||||
gg: start of file
|
||||
G: end of file
|
||||
dd: delete line
|
||||
/: search
|
||||
O: create new line above cursor
|
||||
o: create new line below cursor
|
||||
pv: open ccc
|
||||
|
||||
```
|
||||
# Dependencies
|
||||
None
|
||||
|
||||
|
|
6
TODO
Normal file
6
TODO
Normal file
|
@ -0,0 +1,6 @@
|
|||
Line number
|
||||
Auto indent
|
||||
soft wrap lines
|
||||
copy paste
|
||||
multiple buffer information
|
||||
keybinding in config
|
3
config.h
3
config.h
|
@ -5,7 +5,8 @@
|
|||
/* THEME */
|
||||
/* 38 and 48 is reversed as bar's color is reversed */
|
||||
|
||||
#define SURFACE_1_BG "\033[38;2;049;050;068m"
|
||||
#define SURFACE_0_BG "\033[38;2;49;50;68m"
|
||||
#define SURFACE_1_BG "\033[38;2;69;71;90m"
|
||||
#define OVERLAY_2_BG "\033[38;2;147;153;178m"
|
||||
#define BLACK_FG "\033[40m"
|
||||
#define BLACK_BG "\033[30m"
|
||||
|
|
17
vip.c
17
vip.c
|
@ -100,7 +100,7 @@ void draw_status_bar(void)
|
|||
}
|
||||
int coord_len = snprintf(coord, sizeof(coord), " %d:%d ", cur_editor->y + 1, cur_editor->x + 1);
|
||||
|
||||
bprintf(SURFACE_1_BG); /* background */
|
||||
bprintf(SURFACE_0_BG); /* background */
|
||||
/* text */
|
||||
switch (cur_editor->mode) {
|
||||
case NORMAL:
|
||||
|
@ -120,7 +120,7 @@ void draw_status_bar(void)
|
|||
|
||||
while (file_len < cols) {
|
||||
if (cols - mode_len - git_len - file_len == info_len + lines_len + coord_len) {
|
||||
bprintf("%s%s", info, SURFACE_1_BG);
|
||||
bprintf("%s%s", info, SURFACE_0_BG);
|
||||
if (cur_editor->mode == NORMAL) {
|
||||
bprintf(BLUE_FG);
|
||||
} else if (cur_editor->mode == INSERT) {
|
||||
|
@ -585,11 +585,19 @@ void draw_rows(void)
|
|||
char *c = &cur_editor->row[filerow].render[cur_editor->coloff];
|
||||
unsigned char *hl = &cur_editor->row[filerow].hl[cur_editor->coloff];
|
||||
|
||||
int absydiff = abs(filerow - cur_editor->y);
|
||||
if (absydiff == 0) {
|
||||
int num_digits = snprintf(NULL, 0, "%d", cur_editor->y + 1);
|
||||
int left_padding = (6 - num_digits) / 2;
|
||||
int right_padding = 6 - num_digits - left_padding;
|
||||
|
||||
bprintf("%s%*s%d%*s ", SURFACE_1_BG, left_padding, "", cur_editor->y + 1, right_padding, "");
|
||||
} else {
|
||||
bprintf("%s%6d ", SURFACE_1_BG, absydiff);
|
||||
}
|
||||
for (int j = 0; j < len; j++) {
|
||||
if (iscntrl(c[j])) {
|
||||
bprintf("%s%c\033[m", OVERLAY_2_BG, '@' + c[j]);
|
||||
} else if (hl[j] == NORMAL) {
|
||||
bprintf("%s%c", WHITE_BG, c[j]);
|
||||
} else {
|
||||
switch (hl[j]) {
|
||||
case NUMBER:
|
||||
|
@ -1112,7 +1120,6 @@ int main(int argc, char **argv)
|
|||
}
|
||||
break;
|
||||
|
||||
case CTRL_KEY('l'):
|
||||
case '\033':
|
||||
if (cur_editor->mode == INSERT) {
|
||||
move_xy(ARROW_LEFT);
|
||||
|
|
Loading…
Reference in a new issue