Update 2024-01-18 21:23 OpenBSD/amd64-x13
This commit is contained in:
parent
1195424d1b
commit
139dcd3498
22
.vim/bundle/vim-cool/LICENSE
Normal file
22
.vim/bundle/vim-cool/LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Romain Lafourcade
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
64
.vim/bundle/vim-cool/README.md
Normal file
64
.vim/bundle/vim-cool/README.md
Normal file
@ -0,0 +1,64 @@
|
||||
# vim-cool
|
||||
|
||||
Vim-cool disables search highlighting when you are done searching and re-enables it when you search again. That's it. No more `:noh<CR>`, no more `/sytdstdrsid<CR>`, and no more dodgy `<C-l>` mappings.
|
||||
|
||||
Vim-cool is cool.
|
||||
|
||||
Vim-cool is *experimental*.
|
||||
|
||||
![cool](https://user-images.githubusercontent.com/344335/226825463-4ff5e352-ac2e-4f4d-94c7-a8109da7b6db.gif)
|
||||
|
||||
## Requirements
|
||||
|
||||
Vim-cool is intended to be used with Vim, **and only Vim**, 7.4.2008 or later. It may or may not work in other editors but they are not and will not be officially supported.
|
||||
|
||||
## Installation
|
||||
|
||||
Follow your favorite plugin/runtimepath manager's instructions.
|
||||
|
||||
If you choose manual installation, just put `plugin/cool.vim` where it belongs:
|
||||
|
||||
$HOME/.vim/plugin/cool.vim on Unix-like systems
|
||||
$HOME\vimfiles\plugin\cool.vim on Windows
|
||||
|
||||
In Vim 8.0 and above, see `:help package`.
|
||||
|
||||
## Setup
|
||||
|
||||
The whole assumption behind Vim-cool is that the user enabled search highlighting but they don't want the highlighting to linger on when they are done searching. This implies that the user has the following line in their `vimrc`:
|
||||
|
||||
set hlsearch
|
||||
|
||||
That's it. Nothing else to do.
|
||||
|
||||
## Experimental features
|
||||
|
||||
* Show number of matches in the command-line:
|
||||
|
||||
let g:cool_total_matches = 1
|
||||
|
||||
![demo](https://user-images.githubusercontent.com/344335/226825418-12931cf3-5f89-4375-89be-c98a57e177df.png)
|
||||
|
||||
* Do something when we are doing `nnnNNnn`, do something else or do nothing when we are not:
|
||||
|
||||
set statusline+=%{get(g:,'cool_is_searching',0)?'Yep':''}
|
||||
|
||||
## Background
|
||||
|
||||
I wrote the first iteration of vim-cool in about twenty minutes, mostly to test a few ideas I had after a short discussion about `'hlsearch'` and `:nohlsearch` on #vim.
|
||||
|
||||
Because it relied almost exclusively on mappings, that first iteration was way too brittle to be of any use and actually messed with a bunch of my own mappings.
|
||||
|
||||
Then came [@purpleP](https://github.com/purpleP) and [the game-changing approach](https://github.com/romainl/vim-cool/issues/9) he put together with the help of [@chrisbra](https://github.com/chrisbra), [@justinmk](https://github.com/justinmk), [@jamessan](https://github.com/jamessan), and [@ZyX-I](https://github.com/ZyX-I).
|
||||
|
||||
The current version, essentially a weaponized version of @purpleP's code, doesn't rely on mappings anymore and thus should be devoid of nasty side-effects.
|
||||
|
||||
Many thanks to [@bounceme](https://github.com/bounceme) for his help.
|
||||
|
||||
## What they say about vim-cool
|
||||
|
||||
- **puremourning**, in #vim:
|
||||
|
||||
> vim-cool is by far my favourite plugin
|
||||
>
|
||||
> it's just so... cool.
|
136
.vim/bundle/vim-cool/plugin/cool.vim
Normal file
136
.vim/bundle/vim-cool/plugin/cool.vim
Normal file
@ -0,0 +1,136 @@
|
||||
" vim-cool - Disable hlsearch when you are done searching.
|
||||
" Maintainer: romainl <romainlafourcade@gmail.com>
|
||||
" Version: 0.0.2
|
||||
" License: MIT License
|
||||
" Location: plugin/cool.vim
|
||||
" Website: https://github.com/romainl/vim-cool
|
||||
|
||||
if exists("g:loaded_cool") || v:version < 704 || &compatible
|
||||
finish
|
||||
endif
|
||||
let g:loaded_cool = 1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
augroup Cool
|
||||
autocmd!
|
||||
augroup END
|
||||
|
||||
if exists('##OptionSet')
|
||||
if !exists('*execute')
|
||||
autocmd Cool OptionSet highlight let <SID>saveh = &highlight
|
||||
endif
|
||||
" toggle coolness when hlsearch is toggled
|
||||
autocmd Cool OptionSet hlsearch call <SID>PlayItCool(v:option_old, v:option_new)
|
||||
endif
|
||||
|
||||
function! s:StartHL()
|
||||
if !v:hlsearch || mode() isnot 'n'
|
||||
return
|
||||
endif
|
||||
let g:cool_is_searching = 1
|
||||
let [pos, rpos] = [winsaveview(), getpos('.')]
|
||||
silent! exe "keepjumps go".(line2byte('.')+col('.')-(v:searchforward ? 2 : 0))
|
||||
try
|
||||
silent keepjumps norm! n
|
||||
if getpos('.') != rpos
|
||||
throw 0
|
||||
endif
|
||||
catch /^\%(0$\|Vim\%(\w\|:Interrupt$\)\@!\)/
|
||||
call <SID>StopHL()
|
||||
return
|
||||
finally
|
||||
call winrestview(pos)
|
||||
endtry
|
||||
if !get(g:,'cool_total_matches') || !exists('*reltimestr')
|
||||
return
|
||||
endif
|
||||
exe "silent! norm! :let g:cool_char=nr2char(screenchar(screenrow(),1))\<cr>"
|
||||
let cool_char = remove(g:,'cool_char')
|
||||
if cool_char !~ '[/?]'
|
||||
return
|
||||
endif
|
||||
let [f, ws, now, noOf] = [0, &wrapscan, reltime(), [0,0]]
|
||||
set nowrapscan
|
||||
try
|
||||
while f < 2
|
||||
if reltimestr(reltime(now))[:-6] =~ '[1-9]'
|
||||
" time >= 100ms
|
||||
return
|
||||
endif
|
||||
let noOf[v:searchforward ? f : !f] += 1
|
||||
try
|
||||
silent exe "keepjumps norm! ".(f ? 'n' : 'N')
|
||||
catch /^Vim[^)]\+):E38[45]\D/
|
||||
call setpos('.',rpos)
|
||||
let f += 1
|
||||
endtry
|
||||
endwhile
|
||||
finally
|
||||
call winrestview(pos)
|
||||
let &wrapscan = ws
|
||||
endtry
|
||||
redraw|echo cool_char.@/ 'match' noOf[0] 'of' noOf[0] + noOf[1] - 1
|
||||
endfunction
|
||||
|
||||
function! s:StopHL()
|
||||
if !v:hlsearch || mode() isnot 'n'
|
||||
return
|
||||
else
|
||||
let g:cool_is_searching = 0
|
||||
silent call feedkeys("\<Plug>(StopHL)", 'm')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
if !exists('*execute')
|
||||
let s:saveh = &highlight
|
||||
" toggle highlighting, a workaround for :nohlsearch in autocmds
|
||||
function! s:AuNohlsearch()
|
||||
noautocmd set highlight+=l:-
|
||||
autocmd Cool Insertleave *
|
||||
\ noautocmd let &highlight = s:saveh | autocmd! Cool InsertLeave *
|
||||
return ''
|
||||
endfunction
|
||||
endif
|
||||
|
||||
function! s:PlayItCool(old, new)
|
||||
if a:old == 0 && a:new == 1
|
||||
" nohls --> hls
|
||||
" set up coolness
|
||||
noremap <silent> <Plug>(StopHL) :<C-U>nohlsearch<cr>
|
||||
if !exists('*execute')
|
||||
noremap! <expr> <Plug>(StopHL) <SID>AuNohlsearch()
|
||||
|
||||
" If no "execute()", ":tnoremap" isn't probably implemented too.
|
||||
else
|
||||
noremap! <expr> <Plug>(StopHL) execute('nohlsearch')[-1]
|
||||
if exists(':tnoremap')
|
||||
tnoremap <expr> <Plug>(StopHL) execute('nohlsearch')[-1]
|
||||
endif
|
||||
endif
|
||||
|
||||
autocmd Cool CursorMoved * call <SID>StartHL()
|
||||
autocmd Cool InsertEnter * call <SID>StopHL()
|
||||
elseif a:old == 1 && a:new == 0
|
||||
" hls --> nohls
|
||||
" tear down coolness
|
||||
nunmap <Plug>(StopHL)
|
||||
unmap! <expr> <Plug>(StopHL)
|
||||
if exists(':tunmap')
|
||||
tunmap <Plug>(StopHL)
|
||||
endif
|
||||
|
||||
autocmd! Cool CursorMoved
|
||||
autocmd! Cool InsertEnter
|
||||
else
|
||||
" nohls --> nohls
|
||||
" do nothing
|
||||
return
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" play it cool
|
||||
call <SID>PlayItCool(0, &hlsearch)
|
||||
|
||||
let &cpo = s:save_cpo
|
21
.vim/bundle/vim-fzf/LICENSE
Normal file
21
.vim/bundle/vim-fzf/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Junegunn Choi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
443
.vim/bundle/vim-fzf/README.md
Normal file
443
.vim/bundle/vim-fzf/README.md
Normal file
@ -0,0 +1,443 @@
|
||||
fzf :heart: vim
|
||||
===============
|
||||
|
||||
Things you can do with [fzf][fzf] and Vim.
|
||||
|
||||
Rationale
|
||||
---------
|
||||
|
||||
[fzf][fzf] itself is not a Vim plugin, and the official repository only
|
||||
provides the [basic wrapper function][run] for Vim. It's up to the users to
|
||||
write their own Vim commands with it. However, I've learned that many users of
|
||||
fzf are not familiar with Vimscript and are looking for the "default"
|
||||
implementation of the features they can find in the alternative Vim plugins.
|
||||
|
||||
Why you should use fzf on Vim
|
||||
-----------------------------
|
||||
|
||||
Because you can and you love fzf.
|
||||
|
||||
fzf runs asynchronously and can be orders of magnitude faster than similar Vim
|
||||
plugins. However, the benefit may not be noticeable if the size of the input
|
||||
is small, which is the case for many of the commands provided here.
|
||||
Nevertheless I wrote them anyway since it's really easy to implement custom
|
||||
selector with fzf.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
fzf.vim depends on the basic Vim plugin of [the main fzf
|
||||
repository][fzf-main], which means you need to **set up both "fzf" and
|
||||
"fzf.vim" on Vim**. To learn more about fzf/Vim integration, see
|
||||
[README-VIM][README-VIM].
|
||||
|
||||
[fzf-main]: https://github.com/junegunn/fzf
|
||||
[README-VIM]: https://github.com/junegunn/fzf/blob/master/README-VIM.md
|
||||
|
||||
### Using [vim-plug](https://github.com/junegunn/vim-plug)
|
||||
|
||||
```vim
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
```
|
||||
|
||||
`fzf#install()` makes sure that you have the latest binary, but it's optional,
|
||||
so you can omit it if you use a plugin manager that doesn't support hooks.
|
||||
|
||||
### Dependencies
|
||||
|
||||
- [fzf][fzf-main] 0.41.1 or above
|
||||
- For syntax-highlighted preview, install [bat](https://github.com/sharkdp/bat)
|
||||
- If [delta](https://github.com/dandavison/delta) is available, `GF?`,
|
||||
`Commits` and `BCommits` will use it to format `git diff` output.
|
||||
- `Ag` requires [The Silver Searcher (ag)][ag]
|
||||
- `Rg` requires [ripgrep (rg)][rg]
|
||||
- `Tags` and `Helptags` require Perl
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
| Command | List |
|
||||
| --- | --- |
|
||||
| `:Files [PATH]` | Files (runs `$FZF_DEFAULT_COMMAND` if defined) |
|
||||
| `:GFiles [OPTS]` | Git files (`git ls-files`) |
|
||||
| `:GFiles?` | Git files (`git status`) |
|
||||
| `:Buffers` | Open buffers |
|
||||
| `:Colors` | Color schemes |
|
||||
| `:Ag [PATTERN]` | [ag][ag] search result (`ALT-A` to select all, `ALT-D` to deselect all) |
|
||||
| `:Rg [PATTERN]` | [rg][rg] search result (`ALT-A` to select all, `ALT-D` to deselect all) |
|
||||
| `:RG [PATTERN]` | [rg][rg] search result; relaunch ripgrep on every keystroke |
|
||||
| `:Lines [QUERY]` | Lines in loaded buffers |
|
||||
| `:BLines [QUERY]` | Lines in the current buffer |
|
||||
| `:Tags [QUERY]` | Tags in the project (`ctags -R`) |
|
||||
| `:BTags [QUERY]` | Tags in the current buffer |
|
||||
| `:Changes` | Changelist across all open buffers |
|
||||
| `:Marks` | Marks |
|
||||
| `:Jumps` | Jumps |
|
||||
| `:Windows` | Windows |
|
||||
| `:Locate PATTERN` | `locate` command output |
|
||||
| `:History` | `v:oldfiles` and open buffers |
|
||||
| `:History:` | Command history |
|
||||
| `:History/` | Search history |
|
||||
| `:Snippets` | Snippets ([UltiSnips][us]) |
|
||||
| `:Commits [LOG_OPTS]` | Git commits (requires [fugitive.vim][f]) |
|
||||
| `:BCommits [LOG_OPTS]` | Git commits for the current buffer; visual-select lines to track changes in the range |
|
||||
| `:Commands` | Commands |
|
||||
| `:Maps` | Normal mode mappings |
|
||||
| `:Helptags` | Help tags <sup id="a1">[1](#helptags)</sup> |
|
||||
| `:Filetypes` | File types
|
||||
|
||||
- Most commands support `CTRL-T` / `CTRL-X` / `CTRL-V` key
|
||||
bindings to open in a new tab, a new split, or in a new vertical split
|
||||
- Bang-versions of the commands (e.g. `Ag!`) will open fzf in fullscreen
|
||||
- You can set `g:fzf_vim.command_prefix` to give the same prefix to the commands
|
||||
- e.g. `let g:fzf_vim.command_prefix = 'Fzf'` and you have `FzfFiles`, etc.
|
||||
|
||||
(<a name="helptags">1</a>: `Helptags` will shadow the command of the same name
|
||||
from [pathogen][pat]. But its functionality is still available via `call
|
||||
pathogen#helptags()`. [↩](#a1))
|
||||
|
||||
[pat]: https://github.com/tpope/vim-pathogen
|
||||
[f]: https://github.com/tpope/vim-fugitive
|
||||
|
||||
Customization
|
||||
-------------
|
||||
|
||||
### Configuration options of the base plugin
|
||||
|
||||
Every command in fzf.vim internally calls `fzf#wrap` function of the main
|
||||
repository which supports a set of global option variables. So please read
|
||||
through [README-VIM][README-VIM] to learn more about them.
|
||||
|
||||
### Configuration options for fzf.vim
|
||||
|
||||
All configuration values for this plugin are stored in `g:fzf_vim` dictionary,
|
||||
so **make sure to initialize it before assigning any configuration values to
|
||||
it**.
|
||||
|
||||
```vim
|
||||
" Initialize configuration dictionary
|
||||
let g:fzf_vim = {}
|
||||
```
|
||||
|
||||
#### Preview window
|
||||
|
||||
Some commands will show the preview window on the right. You can customize the
|
||||
behavior with `g:fzf_vim.preview_window`. Here are some examples:
|
||||
|
||||
```vim
|
||||
" This is the default option:
|
||||
" - Preview window on the right with 50% width
|
||||
" - CTRL-/ will toggle preview window.
|
||||
" - Note that this array is passed as arguments to fzf#vim#with_preview function.
|
||||
" - To learn more about preview window options, see `--preview-window` section of `man fzf`.
|
||||
let g:fzf_vim.preview_window = ['right,50%', 'ctrl-/']
|
||||
|
||||
" Preview window is hidden by default. You can toggle it with ctrl-/.
|
||||
" It will show on the right with 50% width, but if the width is smaller
|
||||
" than 70 columns, it will show above the candidate list
|
||||
let g:fzf_vim.preview_window = ['hidden,right,50%,<70(up,40%)', 'ctrl-/']
|
||||
|
||||
" Empty value to disable preview window altogether
|
||||
let g:fzf_vim.preview_window = []
|
||||
|
||||
" fzf.vim needs bash to display the preview window.
|
||||
" On Windows, fzf.vim will first see if bash is in $PATH, then if
|
||||
" Git bash (C:\Program Files\Git\bin\bash.exe) is available.
|
||||
" If you want it to use a different bash, set this variable.
|
||||
" let g:fzf_vim = {}
|
||||
" let g:fzf_vim.preview_bash = 'C:\Git\bin\bash.exe'
|
||||
```
|
||||
|
||||
#### Command-level options
|
||||
|
||||
```vim
|
||||
" [Buffers] Jump to the existing window if possible
|
||||
let g:fzf_vim.buffers_jump = 1
|
||||
|
||||
" [[B]Commits] Customize the options used by 'git log':
|
||||
let g:fzf_vim.commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"'
|
||||
|
||||
" [Tags] Command to generate tags file
|
||||
let g:fzf_vim.tags_command = 'ctags -R'
|
||||
|
||||
" [Commands] --expect expression for directly executing the command
|
||||
let g:fzf_vim.commands_expect = 'alt-enter,ctrl-x'
|
||||
```
|
||||
|
||||
#### List type to handle multiple selections
|
||||
|
||||
The following commands will fill the quickfix list when multiple entries are
|
||||
selected.
|
||||
|
||||
* `Ag`
|
||||
* `Rg` / `RG`
|
||||
* `Lines` / `BLines`
|
||||
* `Tags` / `BTags`
|
||||
|
||||
By setting `g:fzf_vim.listproc`, you can make them use location list instead.
|
||||
|
||||
```vim
|
||||
" Default: Use quickfix list
|
||||
let g:fzf_vim.listproc = { list -> fzf#vim#listproc#quickfix(list) }
|
||||
|
||||
" Use location list instead of quickfix list
|
||||
let g:fzf_vim.listproc = { list -> fzf#vim#listproc#location(list) }
|
||||
```
|
||||
|
||||
You can customize the list type per command by defining variables named
|
||||
`g:fzf_vim.listproc_{command_name_in_lowercase}`.
|
||||
|
||||
```vim
|
||||
" Command-wise customization
|
||||
let g:fzf_vim.listproc_ag = { list -> fzf#vim#listproc#quickfix(list) }
|
||||
let g:fzf_vim.listproc_rg = { list -> fzf#vim#listproc#location(list) }
|
||||
```
|
||||
|
||||
You can further customize the behavior by providing a custom function to
|
||||
process the list instead of using the predefined `fzf#vim#listproc#quickfix`
|
||||
or `fzf#vim#listproc#location`.
|
||||
|
||||
```vim
|
||||
" A customized version of fzf#vim#listproc#quickfix.
|
||||
" The last two lines are commented out not to move to the first entry.
|
||||
function! g:fzf_vim.listproc(list)
|
||||
call setqflist(a:list)
|
||||
copen
|
||||
wincmd p
|
||||
" cfirst
|
||||
" normal! zvzz
|
||||
endfunction
|
||||
```
|
||||
|
||||
### Advanced customization
|
||||
|
||||
#### Vim functions
|
||||
|
||||
Each command in fzf.vim is backed by a Vim function. You can override
|
||||
a command or define a variation of it by calling its corresponding function.
|
||||
|
||||
| Command | Vim function |
|
||||
| --- | --- |
|
||||
| `Files` | `fzf#vim#files(dir, [spec dict], [fullscreen bool])` |
|
||||
| `GFiles` | `fzf#vim#gitfiles(git_options, [spec dict], [fullscreen bool])` |
|
||||
| `GFiles?` | `fzf#vim#gitfiles('?', [spec dict], [fullscreen bool])` |
|
||||
| `Buffers` | `fzf#vim#buffers([query string], [bufnrs list], [spec dict], [fullscreen bool])` |
|
||||
| `Colors` | `fzf#vim#colors([spec dict], [fullscreen bool])` |
|
||||
| `Rg` | `fzf#vim#grep(command, [spec dict], [fullscreen bool])` |
|
||||
| `RG` | `fzf#vim#grep2(command_prefix, query, [spec dict], [fullscreen bool])` |
|
||||
| ... | ... |
|
||||
|
||||
(We can see that the last two optional arguments of each function are
|
||||
identical. They are directly passed to `fzf#wrap` function. If you haven't
|
||||
read [README-VIM][README-VIM] already, please read it before proceeding.)
|
||||
|
||||
#### Example: Customizing `Files` command
|
||||
|
||||
This is the default definition of `Files` command:
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files call fzf#vim#files(<q-args>, <bang>0)
|
||||
```
|
||||
|
||||
Let's say you want to a variation of it called `ProjectFiles` that only
|
||||
searches inside `~/projects` directory. Then you can do it like this:
|
||||
|
||||
```vim
|
||||
command! -bang ProjectFiles call fzf#vim#files('~/projects', <bang>0)
|
||||
```
|
||||
|
||||
Or, if you want to override the command with different fzf options, just pass
|
||||
a custom spec to the function.
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline']}, <bang>0)
|
||||
```
|
||||
|
||||
Want a preview window?
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline', '--preview', 'cat {}']}, <bang>0)
|
||||
```
|
||||
|
||||
It kind of works, but you probably want a nicer previewer program than `cat`.
|
||||
fzf.vim ships [a versatile preview script](bin/preview.sh) you can readily
|
||||
use. It internally executes [bat](https://github.com/sharkdp/bat) for syntax
|
||||
highlighting, so make sure to install it.
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline', '--preview', '~/.vim/plugged/fzf.vim/bin/preview.sh {}']}, <bang>0)
|
||||
```
|
||||
|
||||
However, it's not ideal to hard-code the path to the script which can be
|
||||
different in different circumstances. So in order to make it easier to set up
|
||||
the previewer, fzf.vim provides `fzf#vim#with_preview` helper function.
|
||||
Similarly to `fzf#wrap`, it takes a spec dictionary and returns a copy of it
|
||||
with additional preview options.
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0)
|
||||
```
|
||||
|
||||
You can just omit the spec argument if you only want the previewer.
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview(), <bang>0)
|
||||
```
|
||||
|
||||
#### Example: `git grep` wrapper
|
||||
|
||||
The following example implements `GGrep` command that works similarly to
|
||||
predefined `Ag` or `Rg` using `fzf#vim#grep`.
|
||||
|
||||
- We set the base directory to git root by setting `dir` attribute in spec
|
||||
dictionary.
|
||||
- [The preview script](bin/preview.sh) supports `grep` format
|
||||
(`FILE_PATH:LINE_NO:...`), so we can just wrap the spec with
|
||||
`fzf#vim#with_preview` as before to enable previewer.
|
||||
|
||||
```vim
|
||||
command! -bang -nargs=* GGrep
|
||||
\ call fzf#vim#grep(
|
||||
\ 'git grep --line-number -- '.fzf#shellescape(<q-args>),
|
||||
\ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
|
||||
```
|
||||
|
||||
Mappings
|
||||
--------
|
||||
|
||||
| Mapping | Description |
|
||||
| --- | --- |
|
||||
| `<plug>(fzf-maps-n)` | Normal mode mappings |
|
||||
| `<plug>(fzf-maps-i)` | Insert mode mappings |
|
||||
| `<plug>(fzf-maps-x)` | Visual mode mappings |
|
||||
| `<plug>(fzf-maps-o)` | Operator-pending mappings |
|
||||
| `<plug>(fzf-complete-word)` | `cat /usr/share/dict/words` |
|
||||
| `<plug>(fzf-complete-path)` | Path completion using `find` (file + dir) |
|
||||
| `<plug>(fzf-complete-file)` | File completion using `find` |
|
||||
| `<plug>(fzf-complete-line)` | Line completion (all open buffers) |
|
||||
| `<plug>(fzf-complete-buffer-line)` | Line completion (current buffer only) |
|
||||
|
||||
```vim
|
||||
" Mapping selecting mappings
|
||||
nmap <leader><tab> <plug>(fzf-maps-n)
|
||||
xmap <leader><tab> <plug>(fzf-maps-x)
|
||||
omap <leader><tab> <plug>(fzf-maps-o)
|
||||
|
||||
" Insert mode completion
|
||||
imap <c-x><c-k> <plug>(fzf-complete-word)
|
||||
imap <c-x><c-f> <plug>(fzf-complete-path)
|
||||
imap <c-x><c-l> <plug>(fzf-complete-line)
|
||||
```
|
||||
|
||||
Completion functions
|
||||
--------------------
|
||||
|
||||
| Function | Description |
|
||||
| --- | --- |
|
||||
| `fzf#vim#complete#path(command, [spec])` | Path completion |
|
||||
| `fzf#vim#complete#word([spec])` | Word completion |
|
||||
| `fzf#vim#complete#line([spec])` | Line completion (all open buffers) |
|
||||
| `fzf#vim#complete#buffer_line([spec])` | Line completion (current buffer only) |
|
||||
|
||||
```vim
|
||||
" Path completion with custom source command
|
||||
inoremap <expr> <c-x><c-f> fzf#vim#complete#path('fd')
|
||||
inoremap <expr> <c-x><c-f> fzf#vim#complete#path('rg --files')
|
||||
|
||||
" Word completion with custom spec with popup layout option
|
||||
inoremap <expr> <c-x><c-k> fzf#vim#complete#word({'window': { 'width': 0.2, 'height': 0.9, 'xoffset': 1 }})
|
||||
```
|
||||
|
||||
Custom completion
|
||||
-----------------
|
||||
|
||||
`fzf#vim#complete` is a helper function for creating custom fuzzy completion
|
||||
using fzf. If the first parameter is a command string or a Vim list, it will
|
||||
be used as the source.
|
||||
|
||||
```vim
|
||||
" Replace the default dictionary completion with fzf-based fuzzy completion
|
||||
inoremap <expr> <c-x><c-k> fzf#vim#complete('cat /usr/share/dict/words')
|
||||
```
|
||||
|
||||
For advanced uses, you can pass an options dictionary to the function. The set
|
||||
of options is pretty much identical to that for `fzf#run` only with the
|
||||
following exceptions:
|
||||
|
||||
- `reducer` (funcref)
|
||||
- Reducer transforms the output lines of fzf into a single string value
|
||||
- `prefix` (string or funcref; default: `\k*$`)
|
||||
- Regular expression pattern to extract the completion prefix
|
||||
- Or a function to extract completion prefix
|
||||
- Both `source` and `options` can be given as funcrefs that take the
|
||||
completion prefix as the argument and return the final value
|
||||
- `sink` or `sink*` are ignored
|
||||
|
||||
```vim
|
||||
" Global line completion (not just open buffers. ripgrep required.)
|
||||
inoremap <expr> <c-x><c-l> fzf#vim#complete(fzf#wrap({
|
||||
\ 'prefix': '^.*$',
|
||||
\ 'source': 'rg -n ^ --color always',
|
||||
\ 'options': '--ansi --delimiter : --nth 3..',
|
||||
\ 'reducer': { lines -> join(split(lines[0], ':\zs')[2:], '') }}))
|
||||
```
|
||||
|
||||
### Reducer example
|
||||
|
||||
```vim
|
||||
function! s:make_sentence(lines)
|
||||
return substitute(join(a:lines), '^.', '\=toupper(submatch(0))', '').'.'
|
||||
endfunction
|
||||
|
||||
inoremap <expr> <c-x><c-s> fzf#vim#complete({
|
||||
\ 'source': 'cat /usr/share/dict/words',
|
||||
\ 'reducer': function('<sid>make_sentence'),
|
||||
\ 'options': '--multi --reverse --margin 15%,0',
|
||||
\ 'left': 20})
|
||||
```
|
||||
|
||||
Status line of terminal buffer
|
||||
------------------------------
|
||||
|
||||
When fzf starts in a terminal buffer (see [fzf/README-VIM.md][termbuf]), you
|
||||
may want to customize the statusline of the containing buffer.
|
||||
|
||||
[termbuf]: https://github.com/junegunn/fzf/blob/master/README-VIM.md#fzf-inside-terminal-buffer
|
||||
|
||||
### Hide statusline
|
||||
|
||||
```vim
|
||||
autocmd! FileType fzf set laststatus=0 noshowmode noruler
|
||||
\| autocmd BufLeave <buffer> set laststatus=2 showmode ruler
|
||||
```
|
||||
|
||||
### Custom statusline
|
||||
|
||||
```vim
|
||||
function! s:fzf_statusline()
|
||||
" Override statusline as you like
|
||||
highlight fzf1 ctermfg=161 ctermbg=251
|
||||
highlight fzf2 ctermfg=23 ctermbg=251
|
||||
highlight fzf3 ctermfg=237 ctermbg=251
|
||||
setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f
|
||||
endfunction
|
||||
|
||||
autocmd! User FzfStatusLine call <SID>fzf_statusline()
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
MIT
|
||||
|
||||
[fzf]: https://github.com/junegunn/fzf
|
||||
[run]: https://github.com/junegunn/fzf/blob/master/README-VIM.md#fzfrun
|
||||
[ag]: https://github.com/ggreer/the_silver_searcher
|
||||
[rg]: https://github.com/BurntSushi/ripgrep
|
||||
[us]: https://github.com/SirVer/ultisnips
|
1718
.vim/bundle/vim-fzf/autoload/fzf/vim.vim
Executable file
1718
.vim/bundle/vim-fzf/autoload/fzf/vim.vim
Executable file
File diff suppressed because it is too large
Load Diff
164
.vim/bundle/vim-fzf/autoload/fzf/vim/complete.vim
Normal file
164
.vim/bundle/vim-fzf/autoload/fzf/vim/complete.vim
Normal file
@ -0,0 +1,164 @@
|
||||
" Copyright (c) 2015 Junegunn Choi
|
||||
"
|
||||
" MIT License
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining
|
||||
" a copy of this software and associated documentation files (the
|
||||
" "Software"), to deal in the Software without restriction, including
|
||||
" without limitation the rights to use, copy, modify, merge, publish,
|
||||
" distribute, sublicense, and/or sell copies of the Software, and to
|
||||
" permit persons to whom the Software is furnished to do so, subject to
|
||||
" the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be
|
||||
" included in all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
let s:is_win = has('win32') || has('win64')
|
||||
|
||||
function! s:extend(base, extra)
|
||||
let base = copy(a:base)
|
||||
if has_key(a:extra, 'options')
|
||||
let extra = copy(a:extra)
|
||||
let extra.extra_options = remove(extra, 'options')
|
||||
return extend(base, extra)
|
||||
endif
|
||||
return extend(base, a:extra)
|
||||
endfunction
|
||||
|
||||
if v:version >= 704
|
||||
function! s:function(name)
|
||||
return function(a:name)
|
||||
endfunction
|
||||
else
|
||||
function! s:function(name)
|
||||
" By Ingo Karkat
|
||||
return function(substitute(a:name, '^s:', matchstr(expand('<sfile>'), '<SNR>\d\+_\zefunction$'), ''))
|
||||
endfunction
|
||||
endif
|
||||
|
||||
function! fzf#vim#complete#word(...)
|
||||
let sources = empty(&dictionary) ? ['/usr/share/dict/words'] : split(&dictionary, ',')
|
||||
return fzf#vim#complete(s:extend({
|
||||
\ 'source': 'cat ' . join(map(sources, 'fzf#shellescape(v:val)'))},
|
||||
\ get(a:000, 0, fzf#wrap())))
|
||||
endfunction
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" <plug>(fzf-complete-path)
|
||||
" <plug>(fzf-complete-file)
|
||||
" <plug>(fzf-complete-file-ag)
|
||||
" ----------------------------------------------------------------------------
|
||||
function! s:file_split_prefix(prefix)
|
||||
let expanded = expand(a:prefix)
|
||||
let slash = (s:is_win && !&shellslash) ? '\\' : '/'
|
||||
return isdirectory(expanded) ?
|
||||
\ [expanded,
|
||||
\ substitute(a:prefix, '[/\\]*$', slash, ''),
|
||||
\ ''] :
|
||||
\ [fnamemodify(expanded, ':h'),
|
||||
\ substitute(fnamemodify(a:prefix, ':h'), '[/\\]*$', slash, ''),
|
||||
\ fnamemodify(expanded, ':t')]
|
||||
endfunction
|
||||
|
||||
function! s:file_source(prefix)
|
||||
let [dir, head, tail] = s:file_split_prefix(a:prefix)
|
||||
return printf(
|
||||
\ "cd %s && ".s:file_cmd." | sed %s",
|
||||
\ fzf#shellescape(dir), fzf#shellescape('s:^:'.(empty(a:prefix) || a:prefix == tail ? '' : head).':'))
|
||||
endfunction
|
||||
|
||||
function! s:file_options(prefix)
|
||||
let [_, head, tail] = s:file_split_prefix(a:prefix)
|
||||
return ['--prompt', head, '--query', tail]
|
||||
endfunction
|
||||
|
||||
function! s:fname_prefix(str)
|
||||
let isf = &isfname
|
||||
let white = []
|
||||
let black = []
|
||||
if isf =~ ',,,'
|
||||
call add(white, ',')
|
||||
let isf = substitute(isf, ',,,', ',', 'g')
|
||||
endif
|
||||
if isf =~ ',^,,'
|
||||
call add(black, ',')
|
||||
let isf = substitute(isf, ',^,,', ',', 'g')
|
||||
endif
|
||||
|
||||
for token in split(isf, ',')
|
||||
let target = white
|
||||
if token[0] == '^'
|
||||
let target = black
|
||||
let token = token[1:]
|
||||
endif
|
||||
|
||||
let ends = matchlist(token, '\(.\+\)-\(.\+\)')
|
||||
if empty(ends)
|
||||
call add(target, token)
|
||||
else
|
||||
let ends = map(ends[1:2], "len(v:val) == 1 ? char2nr(v:val) : str2nr(v:val)")
|
||||
for i in range(ends[0], ends[1])
|
||||
call add(target, nr2char(i))
|
||||
endfor
|
||||
endif
|
||||
endfor
|
||||
|
||||
let prefix = a:str
|
||||
for offset in range(1, len(a:str))
|
||||
let char = a:str[len(a:str) - offset]
|
||||
if (char =~ '\w' || index(white, char) >= 0) && index(black, char) < 0
|
||||
continue
|
||||
endif
|
||||
let prefix = strpart(a:str, len(a:str) - offset + 1)
|
||||
break
|
||||
endfor
|
||||
|
||||
return prefix
|
||||
endfunction
|
||||
|
||||
function! fzf#vim#complete#path(command, ...)
|
||||
let s:file_cmd = a:command
|
||||
return fzf#vim#complete(s:extend({
|
||||
\ 'prefix': s:function('s:fname_prefix'),
|
||||
\ 'source': s:function('s:file_source'),
|
||||
\ 'options': s:function('s:file_options')}, get(a:000, 0, fzf#wrap())))
|
||||
endfunction
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" <plug>(fzf-complete-line)
|
||||
" <plug>(fzf-complete-buffer-line)
|
||||
" ----------------------------------------------------------------------------
|
||||
function! s:reduce_line(lines)
|
||||
return join(split(a:lines[0], '\t\zs')[3:], '')
|
||||
endfunction
|
||||
|
||||
|
||||
function! fzf#vim#complete#line(...)
|
||||
let [display_bufnames, lines] = fzf#vim#_lines(0)
|
||||
let nth = display_bufnames ? 4 : 3
|
||||
return fzf#vim#complete(s:extend({
|
||||
\ 'prefix': '^.*$',
|
||||
\ 'source': lines,
|
||||
\ 'options': '--tiebreak=index --ansi --nth '.nth.'.. --tabstop=1',
|
||||
\ 'reducer': s:function('s:reduce_line')}, get(a:000, 0, fzf#wrap())))
|
||||
endfunction
|
||||
|
||||
function! fzf#vim#complete#buffer_line(...)
|
||||
return fzf#vim#complete(s:extend({
|
||||
\ 'prefix': '^.*$',
|
||||
\ 'source': fzf#vim#_uniq(getline(1, '$'))}, get(a:000, 0, fzf#wrap())))
|
||||
endfunction
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
38
.vim/bundle/vim-fzf/autoload/fzf/vim/listproc.vim
Normal file
38
.vim/bundle/vim-fzf/autoload/fzf/vim/listproc.vim
Normal file
@ -0,0 +1,38 @@
|
||||
" Copyright (c) 2023 Junegunn Choi
|
||||
"
|
||||
" MIT License
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining
|
||||
" a copy of this software and associated documentation files (the
|
||||
" "Software"), to deal in the Software without restriction, including
|
||||
" without limitation the rights to use, copy, modify, merge, publish,
|
||||
" distribute, sublicense, and/or sell copies of the Software, and to
|
||||
" permit persons to whom the Software is furnished to do so, subject to
|
||||
" the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be
|
||||
" included in all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
function! fzf#vim#listproc#quickfix(list)
|
||||
call setqflist(a:list)
|
||||
copen
|
||||
wincmd p
|
||||
cfirst
|
||||
normal! zvzz
|
||||
endfunction
|
||||
|
||||
function! fzf#vim#listproc#location(list)
|
||||
call setloclist(0, a:list)
|
||||
lopen
|
||||
wincmd p
|
||||
lfirst
|
||||
normal! zvzz
|
||||
endfunction
|
3
.vim/bundle/vim-fzf/bin/preview.rb
Executable file
3
.vim/bundle/vim-fzf/bin/preview.rb
Executable file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
puts 'preview.rb is deprecated. Use preview.sh instead.'
|
86
.vim/bundle/vim-fzf/bin/preview.sh
Executable file
86
.vim/bundle/vim-fzf/bin/preview.sh
Executable file
@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
REVERSE="\x1b[7m"
|
||||
RESET="\x1b[m"
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
echo "usage: $0 [--tag] FILENAME[:LINENO][:IGNORED]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $1 = --tag ]]; then
|
||||
shift
|
||||
"$(dirname "${BASH_SOURCE[0]}")/tagpreview.sh" "$@"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
# Ignore if an empty path is given
|
||||
[[ -z $1 ]] && exit
|
||||
|
||||
IFS=':' read -r -a INPUT <<< "$1"
|
||||
FILE=${INPUT[0]}
|
||||
CENTER=${INPUT[1]}
|
||||
|
||||
if [[ "$1" =~ ^[A-Za-z]:\\ ]]; then
|
||||
FILE=$FILE:${INPUT[1]}
|
||||
CENTER=${INPUT[2]}
|
||||
fi
|
||||
|
||||
if [[ -n "$CENTER" && ! "$CENTER" =~ ^[0-9] ]]; then
|
||||
exit 1
|
||||
fi
|
||||
CENTER=${CENTER/[^0-9]*/}
|
||||
|
||||
# MS Win support
|
||||
if [[ "$FILE" =~ '\' ]]; then
|
||||
if [ -z "$MSWINHOME" ]; then
|
||||
MSWINHOME="$HOMEDRIVE$HOMEPATH"
|
||||
fi
|
||||
if grep -qEi "(Microsoft|WSL)" /proc/version &> /dev/null ; then
|
||||
MSWINHOME="${MSWINHOME//\\/\\\\}"
|
||||
FILE="${FILE/#\~\\/$MSWINHOME\\}"
|
||||
FILE=$(wslpath -u "$FILE")
|
||||
elif [ -n "$MSWINHOME" ]; then
|
||||
FILE="${FILE/#\~\\/$MSWINHOME\\}"
|
||||
fi
|
||||
fi
|
||||
|
||||
FILE="${FILE/#\~\//$HOME/}"
|
||||
if [ ! -r "$FILE" ]; then
|
||||
echo "File not found ${FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$CENTER" ]; then
|
||||
CENTER=0
|
||||
fi
|
||||
|
||||
# Sometimes bat is installed as batcat.
|
||||
if command -v batcat > /dev/null; then
|
||||
BATNAME="batcat"
|
||||
elif command -v bat > /dev/null; then
|
||||
BATNAME="bat"
|
||||
fi
|
||||
|
||||
if [ -z "$FZF_PREVIEW_COMMAND" ] && [ "${BATNAME:+x}" ]; then
|
||||
${BATNAME} --style="${BAT_STYLE:-numbers}" --color=always --pager=never \
|
||||
--highlight-line=$CENTER -- "$FILE"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
FILE_LENGTH=${#FILE}
|
||||
MIME=$(file --dereference --mime -- "$FILE")
|
||||
if [[ "${MIME:FILE_LENGTH}" =~ binary ]]; then
|
||||
echo "$MIME"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
DEFAULT_COMMAND="highlight -O ansi -l {} || coderay {} || rougify {} || cat {}"
|
||||
CMD=${FZF_PREVIEW_COMMAND:-$DEFAULT_COMMAND}
|
||||
CMD=${CMD//{\}/$(printf %q "$FILE")}
|
||||
|
||||
eval "$CMD" 2> /dev/null | awk "{ \
|
||||
if (NR == $CENTER) \
|
||||
{ gsub(/\x1b[[0-9;]*m/, \"&$REVERSE\"); printf(\"$REVERSE%s\n$RESET\", \$0); } \
|
||||
else printf(\"$RESET%s\n\", \$0); \
|
||||
}"
|
73
.vim/bundle/vim-fzf/bin/tagpreview.sh
Executable file
73
.vim/bundle/vim-fzf/bin/tagpreview.sh
Executable file
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
REVERSE="\x1b[7m"
|
||||
RESET="\x1b[m"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "usage: $0 FILENAME:TAGFILE:EXCMD"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IFS=':' read -r FILE TAGFILE EXCMD <<< "$*"
|
||||
|
||||
# Complete file paths which are relative to the given tag file
|
||||
if [ "${FILE:0:1}" != "/" ]; then
|
||||
FILE="$(dirname "${TAGFILE}")/${FILE}"
|
||||
fi
|
||||
|
||||
if [ ! -r "$FILE" ]; then
|
||||
echo "File not found ${FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If users aren't using vim, they are probably using neovim
|
||||
if command -v vim > /dev/null; then
|
||||
VIMNAME="vim"
|
||||
elif command -v nvim > /dev/null; then
|
||||
VIMNAME="nvim"
|
||||
else
|
||||
echo "Cannot preview tag: vim or nvim unavailable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CENTER="$("${VIMNAME}" -R -i NONE -u NONE -e -m -s "${FILE}" \
|
||||
-c "set nomagic" \
|
||||
-c "${EXCMD}" \
|
||||
-c 'let l=line(".") | new | put =l | print | qa!')" || exit
|
||||
|
||||
START_LINE="$(( CENTER - FZF_PREVIEW_LINES / 2 ))"
|
||||
if (( START_LINE <= 0 )); then
|
||||
START_LINE=1
|
||||
fi
|
||||
END_LINE="$(( START_LINE + FZF_PREVIEW_LINES - 1 ))"
|
||||
|
||||
# Sometimes bat is installed as batcat.
|
||||
if command -v batcat > /dev/null; then
|
||||
BATNAME="batcat"
|
||||
elif command -v bat > /dev/null; then
|
||||
BATNAME="bat"
|
||||
fi
|
||||
|
||||
if [ -z "$FZF_PREVIEW_COMMAND" ] && [ "${BATNAME:+x}" ]; then
|
||||
${BATNAME} --style="${BAT_STYLE:-numbers}" \
|
||||
--color=always \
|
||||
--pager=never \
|
||||
--wrap=never \
|
||||
--terminal-width="${FZF_PREVIEW_COLUMNS}" \
|
||||
--line-range="${START_LINE}:${END_LINE}" \
|
||||
--highlight-line="${CENTER}" \
|
||||
"$FILE"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
DEFAULT_COMMAND="highlight -O ansi -l {} || coderay {} || rougify {} || cat {}"
|
||||
CMD=${FZF_PREVIEW_COMMAND:-$DEFAULT_COMMAND}
|
||||
CMD=${CMD//{\}/$(printf %q "$FILE")}
|
||||
|
||||
eval "$CMD" 2> /dev/null | awk "{ \
|
||||
if (NR >= $START_LINE && NR <= $END_LINE) { \
|
||||
if (NR == $CENTER) \
|
||||
{ gsub(/\x1b[[0-9;]*m/, \"&$REVERSE\"); printf(\"$REVERSE%s\n$RESET\", \$0); } \
|
||||
else printf(\"$RESET%s\n\", \$0); \
|
||||
} \
|
||||
}"
|
15
.vim/bundle/vim-fzf/bin/tags.pl
Executable file
15
.vim/bundle/vim-fzf/bin/tags.pl
Executable file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
|
||||
foreach my $file (@ARGV) {
|
||||
open my $lines, $file;
|
||||
while (<$lines>) {
|
||||
unless (/^\!/) {
|
||||
s/^[^\t]*/sprintf("%-24s", $&)/e;
|
||||
s/$/\t$file/;
|
||||
print;
|
||||
}
|
||||
}
|
||||
close $lines;
|
||||
}
|
515
.vim/bundle/vim-fzf/doc/fzf-vim.txt
Normal file
515
.vim/bundle/vim-fzf/doc/fzf-vim.txt
Normal file
@ -0,0 +1,515 @@
|
||||
fzf-vim.txt fzf-vim Last change: October 14 2023
|
||||
FZF-VIM - TABLE OF CONTENTS *fzf-vim* *fzf-vim-toc*
|
||||
==============================================================================
|
||||
|
||||
fzf :heart: vim |fzf-vim-fzfheart-vim|
|
||||
Rationale |fzf-vim-rationale|
|
||||
Why you should use fzf on Vim |fzf-vim-why-you-should-use-fzf-on-vim|
|
||||
Installation |fzf-vim-installation|
|
||||
Using vim-plug |fzf-vim-using-vim-plug|
|
||||
Dependencies |fzf-vim-dependencies|
|
||||
Commands |fzf-vim-commands|
|
||||
Customization |fzf-vim-customization|
|
||||
Configuration options of the base plugin |fzf-vim-configuration-options-of-the-base-plugin|
|
||||
Configuration options for fzf.vim |fzf-vim-configuration-options-for-fzf-vim|
|
||||
Preview window |fzf-vim-preview-window|
|
||||
Command-level options |fzf-vim-command-level-options|
|
||||
List type to handle multiple selections |fzf-vim-list-type-to-handle-multiple-selections|
|
||||
Advanced customization |fzf-vim-advanced-customization|
|
||||
Vim functions |fzf-vim-vim-functions|
|
||||
Example: Customizing Files command |fzf-vim-example-customizing-files-command|
|
||||
Example: git grep wrapper |fzf-vim-example-git-grep-wrapper|
|
||||
Mappings |fzf-vim-mappings|
|
||||
Completion functions |fzf-vim-completion-functions|
|
||||
Custom completion |fzf-vim-custom-completion|
|
||||
Reducer example |fzf-vim-reducer-example|
|
||||
Status line of terminal buffer |fzf-vim-status-line-of-terminal-buffer|
|
||||
Hide statusline |fzf-vim-hide-statusline|
|
||||
Custom statusline |fzf-vim-custom-statusline|
|
||||
License |fzf-vim-license|
|
||||
|
||||
FZF :HEART: VIM *fzf-vim-fzfheart-vim*
|
||||
==============================================================================
|
||||
|
||||
Things you can do with {fzf}{1} and Vim.
|
||||
|
||||
{1} https://github.com/junegunn/fzf
|
||||
|
||||
|
||||
RATIONALE *fzf-vim-rationale*
|
||||
==============================================================================
|
||||
|
||||
{fzf}{1} itself is not a Vim plugin, and the official repository only provides
|
||||
the {basic wrapper function}{2} for Vim. It's up to the users to write their
|
||||
own Vim commands with it. However, I've learned that many users of fzf are not
|
||||
familiar with Vimscript and are looking for the "default" implementation of
|
||||
the features they can find in the alternative Vim plugins.
|
||||
|
||||
{1} https://github.com/junegunn/fzf
|
||||
{2} https://github.com/junegunn/fzf/blob/master/README-VIM.md#fzfrun
|
||||
|
||||
|
||||
WHY YOU SHOULD USE FZF ON VIM *fzf-vim-why-you-should-use-fzf-on-vim*
|
||||
==============================================================================
|
||||
|
||||
Because you can and you love fzf.
|
||||
|
||||
fzf runs asynchronously and can be orders of magnitude faster than similar Vim
|
||||
plugins. However, the benefit may not be noticeable if the size of the input
|
||||
is small, which is the case for many of the commands provided here.
|
||||
Nevertheless I wrote them anyway since it's really easy to implement custom
|
||||
selector with fzf.
|
||||
|
||||
|
||||
INSTALLATION *fzf-vim-installation*
|
||||
==============================================================================
|
||||
|
||||
fzf.vim depends on the basic Vim plugin of {the main fzf repository}{1}, which
|
||||
means you need to set up both "fzf" and "fzf.vim" on Vim. To learn more about
|
||||
fzf/Vim integration, see {README-VIM}{3}.
|
||||
|
||||
{1} https://github.com/junegunn/fzf
|
||||
{3} https://github.com/junegunn/fzf/blob/master/README-VIM.md
|
||||
|
||||
|
||||
< Using vim-plug >____________________________________________________________~
|
||||
*fzf-vim-using-vim-plug*
|
||||
>
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
<
|
||||
`fzf#install()` makes sure that you have the latest binary, but it's optional,
|
||||
so you can omit it if you use a plugin manager that doesn't support hooks.
|
||||
|
||||
|
||||
< Dependencies >______________________________________________________________~
|
||||
*fzf-vim-dependencies*
|
||||
|
||||
- {fzf}{1} 0.41.1 or above
|
||||
- For syntax-highlighted preview, install {bat}{4}
|
||||
- If {delta}{5} is available, `GF?`, `Commits` and `BCommits` will use it to
|
||||
format `git diff` output.
|
||||
- `Ag` requires {The Silver Searcher (ag)}{6}
|
||||
- `Rg` requires {ripgrep (rg)}{7}
|
||||
- `Tags` and `Helptags` require Perl
|
||||
|
||||
{1} https://github.com/junegunn/fzf
|
||||
{4} https://github.com/sharkdp/bat
|
||||
{5} https://github.com/dandavison/delta
|
||||
{6} https://github.com/ggreer/the_silver_searcher
|
||||
{7} https://github.com/BurntSushi/ripgrep
|
||||
|
||||
|
||||
COMMANDS *fzf-vim-commands*
|
||||
==============================================================================
|
||||
|
||||
*:Files* *:GFiles* *:Buffers* *:Colors* *:Ag* *:Rg* *:RG* *:Lines* *:BLines* *:Tags* *:BTags*
|
||||
*:Changes* *:Marks* *:Jumps* *:Windows* *:Locate* *:History* *:Snippets* *:Commits* *:BCommits*
|
||||
*:Commands* *:Maps* *:Helptags* *:Filetypes*
|
||||
|
||||
-----------------------+--------------------------------------------------------------------------------------
|
||||
Command | List ~
|
||||
-----------------------+--------------------------------------------------------------------------------------
|
||||
`:Files [PATH]` | Files (runs `$FZF_DEFAULT_COMMAND` if defined)
|
||||
`:GFiles [OPTS]` | Git files ( `git ls-files` )
|
||||
`:GFiles?` | Git files ( `git status` )
|
||||
`:Buffers` | Open buffers
|
||||
`:Colors` | Color schemes
|
||||
`:Ag [PATTERN]` | {ag}{6} search result ( `ALT-A` to select all, `ALT-D` to deselect all)
|
||||
`:Rg [PATTERN]` | {rg}{7} search result ( `ALT-A` to select all, `ALT-D` to deselect all)
|
||||
`:RG [PATTERN]` | {rg}{7} search result; relaunch ripgrep on every keystroke
|
||||
`:Lines [QUERY]` | Lines in loaded buffers
|
||||
`:BLines [QUERY]` | Lines in the current buffer
|
||||
`:Tags [QUERY]` | Tags in the project ( `ctags -R` )
|
||||
`:BTags [QUERY]` | Tags in the current buffer
|
||||
`:Changes` | Changelist across all open buffers
|
||||
`:Marks` | Marks
|
||||
`:Jumps` | Jumps
|
||||
`:Windows` | Windows
|
||||
`:Locate PATTERN` | `locate` command output
|
||||
`:History` | `v:oldfiles` and open buffers
|
||||
`:History:` | Command history
|
||||
`:History/` | Search history
|
||||
`:Snippets` | Snippets ({UltiSnips}{8})
|
||||
`:Commits [LOG_OPTS]` | Git commits (requires {fugitive.vim}{9})
|
||||
`:BCommits [LOG_OPTS]` | Git commits for the current buffer; visual-select lines to track changes in the range
|
||||
`:Commands` | Commands
|
||||
`:Maps` | Normal mode mappings
|
||||
`:Helptags` | Help tags [1]
|
||||
`:Filetypes` | File types
|
||||
-----------------------+--------------------------------------------------------------------------------------
|
||||
|
||||
*g:fzf_vim.command_prefix*
|
||||
|
||||
- Most commands support CTRL-T / CTRL-X / CTRL-V key bindings to open in a new
|
||||
tab, a new split, or in a new vertical split
|
||||
- Bang-versions of the commands (e.g. `Ag!`) will open fzf in fullscreen
|
||||
- You can set `g:fzf_vim.command_prefix` to give the same prefix to the commands
|
||||
- e.g. `let g:fzf_vim.command_prefix = 'Fzf'` and you have `FzfFiles`, etc.
|
||||
|
||||
(1: `Helptags` will shadow the command of the same name from {pathogen}{10}.
|
||||
But its functionality is still available via `call pathogen#helptags()`. [↩])
|
||||
|
||||
{6} https://github.com/ggreer/the_silver_searcher
|
||||
{7} https://github.com/BurntSushi/ripgrep
|
||||
{7} https://github.com/BurntSushi/ripgrep
|
||||
{8} https://github.com/SirVer/ultisnips
|
||||
{9} https://github.com/tpope/vim-fugitive
|
||||
{10} https://github.com/tpope/vim-pathogen
|
||||
|
||||
|
||||
CUSTOMIZATION *fzf-vim-customization*
|
||||
==============================================================================
|
||||
|
||||
|
||||
< Configuration options of the base plugin >__________________________________~
|
||||
*fzf-vim-configuration-options-of-the-base-plugin*
|
||||
|
||||
Every command in fzf.vim internally calls `fzf#wrap` function of the main
|
||||
repository which supports a set of global option variables. So please read
|
||||
through {README-VIM}{3} to learn more about them.
|
||||
|
||||
{3} https://github.com/junegunn/fzf/blob/master/README-VIM.md
|
||||
|
||||
|
||||
< Configuration options for fzf.vim >_________________________________________~
|
||||
*fzf-vim-configuration-options-for-fzf-vim*
|
||||
|
||||
*g:fzf_vim*
|
||||
|
||||
All configuration values for this plugin are stored in `g:fzf_vim` dictionary,
|
||||
so make sure to initialize it before assigning any configuration values to it.
|
||||
>
|
||||
" Initialize configuration dictionary
|
||||
let g:fzf_vim = {}
|
||||
<
|
||||
|
||||
Preview window~
|
||||
*fzf-vim-preview-window*
|
||||
|
||||
*g:fzf_vim.preview_window*
|
||||
|
||||
Some commands will show the preview window on the right. You can customize the
|
||||
behavior with `g:fzf_vim.preview_window`. Here are some examples:
|
||||
|
||||
*g:fzf_vim.preview_bash*
|
||||
>
|
||||
" This is the default option:
|
||||
" - Preview window on the right with 50% width
|
||||
" - CTRL-/ will toggle preview window.
|
||||
" - Note that this array is passed as arguments to fzf#vim#with_preview function.
|
||||
" - To learn more about preview window options, see `--preview-window` section of `man fzf`.
|
||||
let g:fzf_vim.preview_window = ['right,50%', 'ctrl-/']
|
||||
|
||||
" Preview window is hidden by default. You can toggle it with ctrl-/.
|
||||
" It will show on the right with 50% width, but if the width is smaller
|
||||
" than 70 columns, it will show above the candidate list
|
||||
let g:fzf_vim.preview_window = ['hidden,right,50%,<70(up,40%)', 'ctrl-/']
|
||||
|
||||
" Empty value to disable preview window altogether
|
||||
let g:fzf_vim.preview_window = []
|
||||
|
||||
" fzf.vim needs bash to display the preview window.
|
||||
" On Windows, fzf.vim will first see if bash is in $PATH, then if
|
||||
" Git bash (C:\Program Files\Git\bin\bash.exe) is available.
|
||||
" If you want it to use a different bash, set this variable.
|
||||
" let g:fzf_vim = {}
|
||||
" let g:fzf_vim.preview_bash = 'C:\Git\bin\bash.exe'
|
||||
<
|
||||
|
||||
Command-level options~
|
||||
*fzf-vim-command-level-options*
|
||||
|
||||
*g:fzf_vim.commands_expect* *g:fzf_vim.tags_command* *g:fzf_vim.commits_log_options*
|
||||
*g:fzf_vim.buffers_jump*
|
||||
>
|
||||
" [Buffers] Jump to the existing window if possible
|
||||
let g:fzf_vim.buffers_jump = 1
|
||||
|
||||
" [[B]Commits] Customize the options used by 'git log':
|
||||
let g:fzf_vim.commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"'
|
||||
|
||||
" [Tags] Command to generate tags file
|
||||
let g:fzf_vim.tags_command = 'ctags -R'
|
||||
|
||||
" [Commands] --expect expression for directly executing the command
|
||||
let g:fzf_vim.commands_expect = 'alt-enter,ctrl-x'
|
||||
<
|
||||
|
||||
List type to handle multiple selections~
|
||||
*fzf-vim-list-type-to-handle-multiple-selections*
|
||||
|
||||
The following commands will fill the quickfix list when multiple entries are
|
||||
selected.
|
||||
|
||||
- `Ag`
|
||||
- `Rg` / `RG`
|
||||
- `Lines` / `BLines`
|
||||
- `Tags` / `BTags`
|
||||
|
||||
*g:fzf_vim.listproc*
|
||||
|
||||
By setting `g:fzf_vim.listproc`, you can make them use location list instead.
|
||||
>
|
||||
" Default: Use quickfix list
|
||||
let g:fzf_vim.listproc = { list -> fzf#vim#listproc#quickfix(list) }
|
||||
|
||||
" Use location list instead of quickfix list
|
||||
let g:fzf_vim.listproc = { list -> fzf#vim#listproc#location(list) }
|
||||
<
|
||||
You can customize the list type per command by defining variables named
|
||||
`g:fzf_vim.listproc_{command_name_in_lowercase}`.
|
||||
|
||||
*g:fzf_vim.listproc_rg* *g:fzf_vim.listproc_ag*
|
||||
>
|
||||
" Command-wise customization
|
||||
let g:fzf_vim.listproc_ag = { list -> fzf#vim#listproc#quickfix(list) }
|
||||
let g:fzf_vim.listproc_rg = { list -> fzf#vim#listproc#location(list) }
|
||||
<
|
||||
You can further customize the behavior by providing a custom function to
|
||||
process the list instead of using the predefined `fzf#vim#listproc#quickfix`
|
||||
or `fzf#vim#listproc#location`.
|
||||
>
|
||||
" A customized version of fzf#vim#listproc#quickfix.
|
||||
" The last two lines are commented out not to move to the first entry.
|
||||
function! g:fzf_vim.listproc(list)
|
||||
call setqflist(a:list)
|
||||
copen
|
||||
wincmd p
|
||||
" cfirst
|
||||
" normal! zvzz
|
||||
endfunction
|
||||
<
|
||||
|
||||
< Advanced customization >____________________________________________________~
|
||||
*fzf-vim-advanced-customization*
|
||||
|
||||
|
||||
Vim functions~
|
||||
*fzf-vim-vim-functions*
|
||||
|
||||
Each command in fzf.vim is backed by a Vim function. You can override a
|
||||
command or define a variation of it by calling its corresponding function.
|
||||
|
||||
----------+---------------------------------------------------------------------------------
|
||||
Command | Vim function ~
|
||||
----------+---------------------------------------------------------------------------------
|
||||
`Files` | `fzf#vim#files(dir, [spec dict], [fullscreen bool])`
|
||||
`GFiles` | `fzf#vim#gitfiles(git_options, [spec dict], [fullscreen bool])`
|
||||
`GFiles?` | `fzf#vim#gitfiles('?', [spec dict], [fullscreen bool])`
|
||||
`Buffers` | `fzf#vim#buffers([query string], [bufnrs list], [spec dict], [fullscreen bool])`
|
||||
`Colors` | `fzf#vim#colors([spec dict], [fullscreen bool])`
|
||||
`Rg` | `fzf#vim#grep(command, [spec dict], [fullscreen bool])`
|
||||
`RG` | `fzf#vim#grep2(command_prefix, query, [spec dict], [fullscreen bool])`
|
||||
... | ...
|
||||
----------+---------------------------------------------------------------------------------
|
||||
|
||||
(We can see that the last two optional arguments of each function are
|
||||
identical. They are directly passed to `fzf#wrap` function. If you haven't
|
||||
read {README-VIM}{3} already, please read it before proceeding.)
|
||||
|
||||
{3} https://github.com/junegunn/fzf/blob/master/README-VIM.md
|
||||
|
||||
|
||||
Example: Customizing Files command~
|
||||
*fzf-vim-example-customizing-files-command*
|
||||
|
||||
This is the default definition of `Files` command:
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files call fzf#vim#files(<q-args>, <bang>0)
|
||||
<
|
||||
Let's say you want to a variation of it called `ProjectFiles` that only
|
||||
searches inside `~/projects` directory. Then you can do it like this:
|
||||
>
|
||||
command! -bang ProjectFiles call fzf#vim#files('~/projects', <bang>0)
|
||||
<
|
||||
Or, if you want to override the command with different fzf options, just pass
|
||||
a custom spec to the function.
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline']}, <bang>0)
|
||||
<
|
||||
Want a preview window?
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline', '--preview', 'cat {}']}, <bang>0)
|
||||
<
|
||||
It kind of works, but you probably want a nicer previewer program than `cat`.
|
||||
fzf.vim ships {a versatile preview script}{11} you can readily use. It
|
||||
internally executes {bat}{4} for syntax highlighting, so make sure to install
|
||||
it.
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, {'options': ['--layout=reverse', '--info=inline', '--preview', '~/.vim/plugged/fzf.vim/bin/preview.sh {}']}, <bang>0)
|
||||
<
|
||||
However, it's not ideal to hard-code the path to the script which can be
|
||||
different in different circumstances. So in order to make it easier to set up
|
||||
the previewer, fzf.vim provides `fzf#vim#with_preview` helper function.
|
||||
Similarly to `fzf#wrap`, it takes a spec dictionary and returns a copy of it
|
||||
with additional preview options.
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0)
|
||||
<
|
||||
You can just omit the spec argument if you only want the previewer.
|
||||
>
|
||||
command! -bang -nargs=? -complete=dir Files
|
||||
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview(), <bang>0)
|
||||
<
|
||||
{11} bin/preview.sh
|
||||
{4} https://github.com/sharkdp/bat
|
||||
|
||||
|
||||
Example: git grep wrapper~
|
||||
*fzf-vim-example-git-grep-wrapper*
|
||||
|
||||
The following example implements `GGrep` command that works similarly to
|
||||
predefined `Ag` or `Rg` using `fzf#vim#grep`.
|
||||
|
||||
*:LINE*
|
||||
|
||||
- We set the base directory to git root by setting `dir` attribute in spec
|
||||
dictionary.
|
||||
- {The preview script}{11} supports `grep` format (`FILE_PATH:LINE_NO:...`), so
|
||||
we can just wrap the spec with `fzf#vim#with_preview` as before to enable
|
||||
previewer.
|
||||
>
|
||||
command! -bang -nargs=* GGrep
|
||||
\ call fzf#vim#grep(
|
||||
\ 'git grep --line-number -- '.fzf#shellescape(<q-args>),
|
||||
\ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
|
||||
<
|
||||
{11} bin/preview.sh
|
||||
|
||||
|
||||
MAPPINGS *fzf-vim-mappings*
|
||||
==============================================================================
|
||||
|
||||
---------------------------------+------------------------------------------
|
||||
Mapping | Description ~
|
||||
---------------------------------+------------------------------------------
|
||||
<plug>(fzf-maps-n) | Normal mode mappings
|
||||
<plug>(fzf-maps-i) | Insert mode mappings
|
||||
<plug>(fzf-maps-x) | Visual mode mappings
|
||||
<plug>(fzf-maps-o) | Operator-pending mappings
|
||||
<plug>(fzf-complete-word) | `cat /usr/share/dict/words`
|
||||
<plug>(fzf-complete-path) | Path completion using `find` (file + dir)
|
||||
<plug>(fzf-complete-file) | File completion using `find`
|
||||
<plug>(fzf-complete-line) | Line completion (all open buffers)
|
||||
<plug>(fzf-complete-buffer-line) | Line completion (current buffer only)
|
||||
---------------------------------+------------------------------------------
|
||||
>
|
||||
" Mapping selecting mappings
|
||||
nmap <leader><tab> <plug>(fzf-maps-n)
|
||||
xmap <leader><tab> <plug>(fzf-maps-x)
|
||||
omap <leader><tab> <plug>(fzf-maps-o)
|
||||
|
||||
" Insert mode completion
|
||||
imap <c-x><c-k> <plug>(fzf-complete-word)
|
||||
imap <c-x><c-f> <plug>(fzf-complete-path)
|
||||
imap <c-x><c-l> <plug>(fzf-complete-line)
|
||||
<
|
||||
|
||||
COMPLETION FUNCTIONS *fzf-vim-completion-functions*
|
||||
==============================================================================
|
||||
|
||||
-----------------------------------------+--------------------------------------
|
||||
Function | Description ~
|
||||
-----------------------------------------+--------------------------------------
|
||||
`fzf#vim#complete#path(command, [spec])` | Path completion
|
||||
`fzf#vim#complete#word([spec])` | Word completion
|
||||
`fzf#vim#complete#line([spec])` | Line completion (all open buffers)
|
||||
`fzf#vim#complete#buffer_line([spec])` | Line completion (current buffer only)
|
||||
-----------------------------------------+--------------------------------------
|
||||
>
|
||||
" Path completion with custom source command
|
||||
inoremap <expr> <c-x><c-f> fzf#vim#complete#path('fd')
|
||||
inoremap <expr> <c-x><c-f> fzf#vim#complete#path('rg --files')
|
||||
|
||||
" Word completion with custom spec with popup layout option
|
||||
inoremap <expr> <c-x><c-k> fzf#vim#complete#word({'window': { 'width': 0.2, 'height': 0.9, 'xoffset': 1 }})
|
||||
<
|
||||
|
||||
CUSTOM COMPLETION *fzf-vim-custom-completion*
|
||||
==============================================================================
|
||||
|
||||
`fzf#vim#complete` is a helper function for creating custom fuzzy completion
|
||||
using fzf. If the first parameter is a command string or a Vim list, it will
|
||||
be used as the source.
|
||||
>
|
||||
" Replace the default dictionary completion with fzf-based fuzzy completion
|
||||
inoremap <expr> <c-x><c-k> fzf#vim#complete('cat /usr/share/dict/words')
|
||||
<
|
||||
For advanced uses, you can pass an options dictionary to the function. The set
|
||||
of options is pretty much identical to that for `fzf#run` only with the
|
||||
following exceptions:
|
||||
|
||||
- `reducer` (funcref)
|
||||
- Reducer transforms the output lines of fzf into a single string value
|
||||
- `prefix` (string or funcref; default: `\k*$`)
|
||||
- Regular expression pattern to extract the completion prefix
|
||||
- Or a function to extract completion prefix
|
||||
- Both `source` and `options` can be given as funcrefs that take the completion
|
||||
prefix as the argument and return the final value
|
||||
- `sink` or `sink*` are ignored
|
||||
>
|
||||
" Global line completion (not just open buffers. ripgrep required.)
|
||||
inoremap <expr> <c-x><c-l> fzf#vim#complete(fzf#wrap({
|
||||
\ 'prefix': '^.*$',
|
||||
\ 'source': 'rg -n ^ --color always',
|
||||
\ 'options': '--ansi --delimiter : --nth 3..',
|
||||
\ 'reducer': { lines -> join(split(lines[0], ':\zs')[2:], '') }}))
|
||||
<
|
||||
|
||||
< Reducer example >___________________________________________________________~
|
||||
*fzf-vim-reducer-example*
|
||||
>
|
||||
function! s:make_sentence(lines)
|
||||
return substitute(join(a:lines), '^.', '\=toupper(submatch(0))', '').'.'
|
||||
endfunction
|
||||
|
||||
inoremap <expr> <c-x><c-s> fzf#vim#complete({
|
||||
\ 'source': 'cat /usr/share/dict/words',
|
||||
\ 'reducer': function('<sid>make_sentence'),
|
||||
\ 'options': '--multi --reverse --margin 15%,0',
|
||||
\ 'left': 20})
|
||||
<
|
||||
|
||||
STATUS LINE OF TERMINAL BUFFER *fzf-vim-status-line-of-terminal-buffer*
|
||||
==============================================================================
|
||||
|
||||
When fzf starts in a terminal buffer (see {fzf/README-VIM.md}{12}), you may
|
||||
want to customize the statusline of the containing buffer.
|
||||
|
||||
{12} https://github.com/junegunn/fzf/blob/master/README-VIM.md#fzf-inside-terminal-buffer
|
||||
|
||||
|
||||
< Hide statusline >___________________________________________________________~
|
||||
*fzf-vim-hide-statusline*
|
||||
>
|
||||
autocmd! FileType fzf set laststatus=0 noshowmode noruler
|
||||
\| autocmd BufLeave <buffer> set laststatus=2 showmode ruler
|
||||
<
|
||||
|
||||
< Custom statusline >_________________________________________________________~
|
||||
*fzf-vim-custom-statusline*
|
||||
>
|
||||
function! s:fzf_statusline()
|
||||
" Override statusline as you like
|
||||
highlight fzf1 ctermfg=161 ctermbg=251
|
||||
highlight fzf2 ctermfg=23 ctermbg=251
|
||||
highlight fzf3 ctermfg=237 ctermbg=251
|
||||
setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f
|
||||
endfunction
|
||||
|
||||
autocmd! User FzfStatusLine call <SID>fzf_statusline()
|
||||
<
|
||||
|
||||
LICENSE *fzf-vim-license*
|
||||
==============================================================================
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:sw=2:ts=2:ft=help:norl:nowrap:
|
63
.vim/bundle/vim-fzf/doc/tags
Normal file
63
.vim/bundle/vim-fzf/doc/tags
Normal file
@ -0,0 +1,63 @@
|
||||
:Ag fzf-vim.txt /*:Ag*
|
||||
:BCommits fzf-vim.txt /*:BCommits*
|
||||
:BLines fzf-vim.txt /*:BLines*
|
||||
:BTags fzf-vim.txt /*:BTags*
|
||||
:Buffers fzf-vim.txt /*:Buffers*
|
||||
:Changes fzf-vim.txt /*:Changes*
|
||||
:Colors fzf-vim.txt /*:Colors*
|
||||
:Commands fzf-vim.txt /*:Commands*
|
||||
:Commits fzf-vim.txt /*:Commits*
|
||||
:Files fzf-vim.txt /*:Files*
|
||||
:Filetypes fzf-vim.txt /*:Filetypes*
|
||||
:GFiles fzf-vim.txt /*:GFiles*
|
||||
:Helptags fzf-vim.txt /*:Helptags*
|
||||
:History fzf-vim.txt /*:History*
|
||||
:Jumps fzf-vim.txt /*:Jumps*
|
||||
:LINE fzf-vim.txt /*:LINE*
|
||||
:Lines fzf-vim.txt /*:Lines*
|
||||
:Locate fzf-vim.txt /*:Locate*
|
||||
:Maps fzf-vim.txt /*:Maps*
|
||||
:Marks fzf-vim.txt /*:Marks*
|
||||
:RG fzf-vim.txt /*:RG*
|
||||
:Rg fzf-vim.txt /*:Rg*
|
||||
:Snippets fzf-vim.txt /*:Snippets*
|
||||
:Tags fzf-vim.txt /*:Tags*
|
||||
:Windows fzf-vim.txt /*:Windows*
|
||||
fzf-vim fzf-vim.txt /*fzf-vim*
|
||||
fzf-vim-advanced-customization fzf-vim.txt /*fzf-vim-advanced-customization*
|
||||
fzf-vim-command-level-options fzf-vim.txt /*fzf-vim-command-level-options*
|
||||
fzf-vim-commands fzf-vim.txt /*fzf-vim-commands*
|
||||
fzf-vim-completion-functions fzf-vim.txt /*fzf-vim-completion-functions*
|
||||
fzf-vim-configuration-options-for-fzf-vim fzf-vim.txt /*fzf-vim-configuration-options-for-fzf-vim*
|
||||
fzf-vim-configuration-options-of-the-base-plugin fzf-vim.txt /*fzf-vim-configuration-options-of-the-base-plugin*
|
||||
fzf-vim-custom-completion fzf-vim.txt /*fzf-vim-custom-completion*
|
||||
fzf-vim-custom-statusline fzf-vim.txt /*fzf-vim-custom-statusline*
|
||||
fzf-vim-customization fzf-vim.txt /*fzf-vim-customization*
|
||||
fzf-vim-dependencies fzf-vim.txt /*fzf-vim-dependencies*
|
||||
fzf-vim-example-customizing-files-command fzf-vim.txt /*fzf-vim-example-customizing-files-command*
|
||||
fzf-vim-example-git-grep-wrapper fzf-vim.txt /*fzf-vim-example-git-grep-wrapper*
|
||||
fzf-vim-fzfheart-vim fzf-vim.txt /*fzf-vim-fzfheart-vim*
|
||||
fzf-vim-hide-statusline fzf-vim.txt /*fzf-vim-hide-statusline*
|
||||
fzf-vim-installation fzf-vim.txt /*fzf-vim-installation*
|
||||
fzf-vim-license fzf-vim.txt /*fzf-vim-license*
|
||||
fzf-vim-list-type-to-handle-multiple-selections fzf-vim.txt /*fzf-vim-list-type-to-handle-multiple-selections*
|
||||
fzf-vim-mappings fzf-vim.txt /*fzf-vim-mappings*
|
||||
fzf-vim-preview-window fzf-vim.txt /*fzf-vim-preview-window*
|
||||
fzf-vim-rationale fzf-vim.txt /*fzf-vim-rationale*
|
||||
fzf-vim-reducer-example fzf-vim.txt /*fzf-vim-reducer-example*
|
||||
fzf-vim-status-line-of-terminal-buffer fzf-vim.txt /*fzf-vim-status-line-of-terminal-buffer*
|
||||
fzf-vim-toc fzf-vim.txt /*fzf-vim-toc*
|
||||
fzf-vim-using-vim-plug fzf-vim.txt /*fzf-vim-using-vim-plug*
|
||||
fzf-vim-vim-functions fzf-vim.txt /*fzf-vim-vim-functions*
|
||||
fzf-vim-why-you-should-use-fzf-on-vim fzf-vim.txt /*fzf-vim-why-you-should-use-fzf-on-vim*
|
||||
g:fzf_vim fzf-vim.txt /*g:fzf_vim*
|
||||
g:fzf_vim.buffers_jump fzf-vim.txt /*g:fzf_vim.buffers_jump*
|
||||
g:fzf_vim.command_prefix fzf-vim.txt /*g:fzf_vim.command_prefix*
|
||||
g:fzf_vim.commands_expect fzf-vim.txt /*g:fzf_vim.commands_expect*
|
||||
g:fzf_vim.commits_log_options fzf-vim.txt /*g:fzf_vim.commits_log_options*
|
||||
g:fzf_vim.listproc fzf-vim.txt /*g:fzf_vim.listproc*
|
||||
g:fzf_vim.listproc_ag fzf-vim.txt /*g:fzf_vim.listproc_ag*
|
||||
g:fzf_vim.listproc_rg fzf-vim.txt /*g:fzf_vim.listproc_rg*
|
||||
g:fzf_vim.preview_bash fzf-vim.txt /*g:fzf_vim.preview_bash*
|
||||
g:fzf_vim.preview_window fzf-vim.txt /*g:fzf_vim.preview_window*
|
||||
g:fzf_vim.tags_command fzf-vim.txt /*g:fzf_vim.tags_command*
|
163
.vim/bundle/vim-fzf/plugin/fzf.vim
Normal file
163
.vim/bundle/vim-fzf/plugin/fzf.vim
Normal file
@ -0,0 +1,163 @@
|
||||
" Copyright (c) 2015 Junegunn Choi
|
||||
"
|
||||
" MIT License
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining
|
||||
" a copy of this software and associated documentation files (the
|
||||
" "Software"), to deal in the Software without restriction, including
|
||||
" without limitation the rights to use, copy, modify, merge, publish,
|
||||
" distribute, sublicense, and/or sell copies of the Software, and to
|
||||
" permit persons to whom the Software is furnished to do so, subject to
|
||||
" the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be
|
||||
" included in all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
if exists('g:loaded_fzf_vim')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_fzf_vim = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
let s:is_win = has('win32') || has('win64')
|
||||
|
||||
function! s:conf(name, default)
|
||||
let conf = get(g:, 'fzf_vim', {})
|
||||
let val = get(conf, a:name, get(g:, 'fzf_' . a:name, a:default))
|
||||
return val
|
||||
endfunction
|
||||
|
||||
function! s:defs(commands)
|
||||
let prefix = s:conf('command_prefix', '')
|
||||
if prefix =~# '^[^A-Z]'
|
||||
echoerr 'g:fzf_command_prefix must start with an uppercase letter'
|
||||
return
|
||||
endif
|
||||
for command in a:commands
|
||||
let name = ':'.prefix.matchstr(command, '\C[A-Z]\S\+')
|
||||
if 2 != exists(name)
|
||||
execute substitute(command, '\ze\C[A-Z]', prefix, '')
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
call s:defs([
|
||||
\'command! -bang -nargs=? -complete=dir Files call fzf#vim#files(<q-args>, fzf#vim#with_preview(), <bang>0)',
|
||||
\'command! -bang -nargs=? GitFiles call fzf#vim#gitfiles(<q-args>, fzf#vim#with_preview(<q-args> == "?" ? { "placeholder": "" } : {}), <bang>0)',
|
||||
\'command! -bang -nargs=? GFiles call fzf#vim#gitfiles(<q-args>, fzf#vim#with_preview(<q-args> == "?" ? { "placeholder": "" } : {}), <bang>0)',
|
||||
\'command! -bar -bang -nargs=? -complete=buffer Buffers call fzf#vim#buffers(<q-args>, fzf#vim#with_preview({ "placeholder": "{1}" }), <bang>0)',
|
||||
\'command! -bang -nargs=* Lines call fzf#vim#lines(<q-args>, <bang>0)',
|
||||
\'command! -bang -nargs=* BLines call fzf#vim#buffer_lines(<q-args>, <bang>0)',
|
||||
\'command! -bar -bang Colors call fzf#vim#colors(<bang>0)',
|
||||
\'command! -bang -nargs=+ -complete=dir Locate call fzf#vim#locate(<q-args>, fzf#vim#with_preview(), <bang>0)',
|
||||
\'command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, fzf#vim#with_preview(), <bang>0)',
|
||||
\'command! -bang -nargs=* Rg call fzf#vim#grep("rg --column --line-number --no-heading --color=always --smart-case -- ".fzf#shellescape(<q-args>), fzf#vim#with_preview(), <bang>0)',
|
||||
\'command! -bang -nargs=* RG call fzf#vim#grep2("rg --column --line-number --no-heading --color=always --smart-case -- ", <q-args>, fzf#vim#with_preview(), <bang>0)',
|
||||
\'command! -bang -nargs=* Tags call fzf#vim#tags(<q-args>, fzf#vim#with_preview({ "placeholder": "--tag {2}:{-1}:{3..}" }), <bang>0)',
|
||||
\'command! -bang -nargs=* BTags call fzf#vim#buffer_tags(<q-args>, fzf#vim#with_preview({ "placeholder": "{2}:{3..}" }), <bang>0)',
|
||||
\'command! -bar -bang Snippets call fzf#vim#snippets(<bang>0)',
|
||||
\'command! -bar -bang Commands call fzf#vim#commands(<bang>0)',
|
||||
\'command! -bar -bang Jumps call fzf#vim#jumps(<bang>0)',
|
||||
\'command! -bar -bang Marks call fzf#vim#marks(<bang>0)',
|
||||
\'command! -bar -bang Changes call fzf#vim#changes(<bang>0)',
|
||||
\'command! -bar -bang Helptags call fzf#vim#helptags(fzf#vim#with_preview({ "placeholder": "--tag {2}:{3}:{4}" }), <bang>0)',
|
||||
\'command! -bar -bang Windows call fzf#vim#windows(fzf#vim#with_preview({ "placeholder": "{2}" }), <bang>0)',
|
||||
\'command! -bar -bang -nargs=* -range=% -complete=file Commits let b:fzf_winview = winsaveview() | <line1>,<line2>call fzf#vim#commits(<q-args>, fzf#vim#with_preview({ "placeholder": "" }), <bang>0)',
|
||||
\'command! -bar -bang -nargs=* -range=% BCommits let b:fzf_winview = winsaveview() | <line1>,<line2>call fzf#vim#buffer_commits(<q-args>, fzf#vim#with_preview({ "placeholder": "" }), <bang>0)',
|
||||
\'command! -bar -bang Maps call fzf#vim#maps("n", <bang>0)',
|
||||
\'command! -bar -bang Filetypes call fzf#vim#filetypes(<bang>0)',
|
||||
\'command! -bang -nargs=* History call s:history(<q-args>, fzf#vim#with_preview(), <bang>0)'])
|
||||
|
||||
function! s:history(arg, extra, bang)
|
||||
let bang = a:bang || a:arg[len(a:arg)-1] == '!'
|
||||
if a:arg[0] == ':'
|
||||
call fzf#vim#command_history(bang)
|
||||
elseif a:arg[0] == '/'
|
||||
call fzf#vim#search_history(bang)
|
||||
else
|
||||
call fzf#vim#history(a:extra, bang)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! fzf#complete(...)
|
||||
return call('fzf#vim#complete', a:000)
|
||||
endfunction
|
||||
|
||||
if (has('nvim') || has('terminal') && has('patch-8.0.995')) && (s:conf('statusline', 1) || s:conf('nvim_statusline', 1))
|
||||
function! s:fzf_restore_colors()
|
||||
if exists('#User#FzfStatusLine')
|
||||
doautocmd User FzfStatusLine
|
||||
else
|
||||
if $TERM !~ "256color"
|
||||
highlight default fzf1 ctermfg=1 ctermbg=8 guifg=#E12672 guibg=#565656
|
||||
highlight default fzf2 ctermfg=2 ctermbg=8 guifg=#BCDDBD guibg=#565656
|
||||
highlight default fzf3 ctermfg=7 ctermbg=8 guifg=#D9D9D9 guibg=#565656
|
||||
else
|
||||
highlight default fzf1 ctermfg=161 ctermbg=238 guifg=#E12672 guibg=#565656
|
||||
highlight default fzf2 ctermfg=151 ctermbg=238 guifg=#BCDDBD guibg=#565656
|
||||
highlight default fzf3 ctermfg=252 ctermbg=238 guifg=#D9D9D9 guibg=#565656
|
||||
endif
|
||||
setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:fzf_vim_term()
|
||||
if get(w:, 'airline_active', 0)
|
||||
let w:airline_disabled = 1
|
||||
autocmd BufWinLeave <buffer> let w:airline_disabled = 0
|
||||
endif
|
||||
autocmd WinEnter,ColorScheme <buffer> call s:fzf_restore_colors()
|
||||
|
||||
setlocal nospell
|
||||
call s:fzf_restore_colors()
|
||||
endfunction
|
||||
|
||||
augroup _fzf_statusline
|
||||
autocmd!
|
||||
autocmd FileType fzf call s:fzf_vim_term()
|
||||
augroup END
|
||||
endif
|
||||
|
||||
if !exists('g:fzf#vim#buffers')
|
||||
let g:fzf#vim#buffers = {}
|
||||
endif
|
||||
|
||||
augroup fzf_buffers
|
||||
autocmd!
|
||||
if exists('*reltimefloat')
|
||||
autocmd BufWinEnter,WinEnter * let g:fzf#vim#buffers[bufnr('')] = reltimefloat(reltime())
|
||||
else
|
||||
autocmd BufWinEnter,WinEnter * let g:fzf#vim#buffers[bufnr('')] = localtime()
|
||||
endif
|
||||
autocmd BufDelete * silent! call remove(g:fzf#vim#buffers, expand('<abuf>'))
|
||||
augroup END
|
||||
|
||||
inoremap <expr> <plug>(fzf-complete-word) fzf#vim#complete#word()
|
||||
if s:is_win
|
||||
inoremap <expr> <plug>(fzf-complete-path) fzf#vim#complete#path('dir /s/b')
|
||||
inoremap <expr> <plug>(fzf-complete-file) fzf#vim#complete#path('dir /s/b/a:-d')
|
||||
else
|
||||
inoremap <expr> <plug>(fzf-complete-path) fzf#vim#complete#path("find . -path '*/\.*' -prune -o -print \| sed '1d;s:^..::'")
|
||||
inoremap <expr> <plug>(fzf-complete-file) fzf#vim#complete#path("find . -path '*/\.*' -prune -o -type f -print -o -type l -print \| sed 's:^..::'")
|
||||
endif
|
||||
inoremap <expr> <plug>(fzf-complete-file-ag) fzf#vim#complete#path('ag -l -g ""')
|
||||
inoremap <expr> <plug>(fzf-complete-line) fzf#vim#complete#line()
|
||||
inoremap <expr> <plug>(fzf-complete-buffer-line) fzf#vim#complete#buffer_line()
|
||||
|
||||
nnoremap <silent> <plug>(fzf-maps-n) :<c-u>call fzf#vim#maps('n', 0)<cr>
|
||||
inoremap <silent> <plug>(fzf-maps-i) <c-o>:call fzf#vim#maps('i', 0)<cr>
|
||||
xnoremap <silent> <plug>(fzf-maps-x) :<c-u>call fzf#vim#maps('x', 0)<cr>
|
||||
onoremap <silent> <plug>(fzf-maps-o) <c-c>:<c-u>call fzf#vim#maps('o', 0)<cr>
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
43
.vim/bundle/vim-lucius/README.md
Normal file
43
.vim/bundle/vim-lucius/README.md
Normal file
@ -0,0 +1,43 @@
|
||||
vim-lucius
|
||||
==========
|
||||
|
||||
This repository has the Lucius color scheme for Vim. It is already organized
|
||||
under a "colors" directory, so you can clone the repo into your own vimfiles
|
||||
(or under bundle, if you use Pathogen).
|
||||
|
||||
The color scheme is available for other applications, as well. They can be
|
||||
found here:
|
||||
|
||||
https://github.com/jonathanfilip/lucius
|
||||
|
||||
Some sample screenshots of the different configurations:
|
||||
|
||||
### Dark
|
||||
![LuciusDark](http://i.imgur.com/LsZbF.png "LuciusDark (default)")
|
||||
|
||||
### Dark High Contrast
|
||||
![LuciusDarkHighContrast](http://i.imgur.com/e70i9.png "LuciusDarkHighContrast")
|
||||
|
||||
### Dark Low Contrast
|
||||
![LuciusDarkLowContrast](http://i.imgur.com/Hmw8s.png "LuciusDarkLowContrast")
|
||||
|
||||
### Black
|
||||
![LuciusBlack](http://i.imgur.com/iD4ri.png "LuciusBlack")
|
||||
|
||||
### Black High Contrast
|
||||
![LuciusBlackHighContrast](http://i.imgur.com/lHvTJ.png "LuciusBlackHighContrast")
|
||||
|
||||
### Black Low Contrast
|
||||
![LuciusBlackLowContrast](http://i.imgur.com/oZLkg.png "LuciusBlackLowContrast")
|
||||
|
||||
### Light
|
||||
![LuciusLight](http://i.imgur.com/soYD8.png "LuciusLight (light default)")
|
||||
|
||||
### Light Low Contrast
|
||||
![LuciusLightLowContrast](http://i.imgur.com/95I86.png "LuciusLightLowContrast")
|
||||
|
||||
### White
|
||||
![LuciusWhite](http://i.imgur.com/wDzkz.png "LuciusWhite")
|
||||
|
||||
### White Low Contrast
|
||||
![LuciusWhiteLowContrast](http://i.imgur.com/jlUf4.png "LuciusWhiteLowContrast")
|
805
.vim/bundle/vim-lucius/colors/lucius.vim
Normal file
805
.vim/bundle/vim-lucius/colors/lucius.vim
Normal file
@ -0,0 +1,805 @@
|
||||
" ============================================================================
|
||||
" Name: Lucius vim color scheme
|
||||
" Author: Jonathan Filip <jfilip1024@gmail.com>
|
||||
" Version: 8.1.7
|
||||
" ----------------------------------------------------------------------------
|
||||
"
|
||||
" Light and dark color scheme for GUI and 256 color terminal.
|
||||
"
|
||||
" There are several options available to customize the color scheme to your
|
||||
" own tastes. This is particularly useful when you have to work in different
|
||||
" environments at different times (home, work, day, night, etc).
|
||||
"
|
||||
" The GUI and 256 color terminal versions of this color scheme are identical.
|
||||
"
|
||||
" You can set up the color scheme by manually setting the options you want or
|
||||
" by choosing one of the presets defined. These presets are loaded after you
|
||||
" first source the color scheme file and are all commands that start with
|
||||
" 'Lucius'.
|
||||
"
|
||||
" I have also started to create color schemes for different applications. I
|
||||
" have been using them for PuTTY, iTerm2, and Visual Studio, but will keep
|
||||
" adding more as I go along. You can find the files for these on Github:
|
||||
"
|
||||
" https://github.com/jonathanfilip/lucius
|
||||
"
|
||||
" You can also clone the following repository if you use Pathogen or something
|
||||
" similar. It holds the vim color scheme in a 'colors' directory:
|
||||
"
|
||||
" https://github.com/jonathanfilip/vim-lucius
|
||||
"
|
||||
"
|
||||
"
|
||||
" Presets:
|
||||
"
|
||||
" There are several presets available that will set all the options for you.
|
||||
" There are screenshots of each preset below:
|
||||
"
|
||||
" * LuciusDark (dark default): http://i.imgur.com/LsZbF.png
|
||||
" * LuciusDarkHighContrast: http://i.imgur.com/e70i9.png
|
||||
" * LuciusDarkLowContrast: http://i.imgur.com/Hmw8s.png
|
||||
" * LuciusBlack: http://i.imgur.com/iD4ri.png
|
||||
" * LuciusBlackHighContrast: http://i.imgur.com/lHvTJ.png
|
||||
" * LuciusBlackLowContrast: http://i.imgur.com/oZLkg.png
|
||||
"
|
||||
" * LuciusLight (light default): http://i.imgur.com/soYD8.png
|
||||
" * LuciusLightLowContrast: http://i.imgur.com/95I86.png
|
||||
" * LuciusWhite: http://i.imgur.com/wDzkz.png
|
||||
" * LuciusWhiteLowContrast: http://i.imgur.com/jlUf4.png
|
||||
"
|
||||
" To use the presets, you just need to set the color scheme first. In your
|
||||
" vimrc, you can just do this:
|
||||
"
|
||||
" colorscheme lucius
|
||||
" LuciusBlack
|
||||
"
|
||||
" You can still just set the background variable and then set the color
|
||||
" scheme. This will default to LuciusDark for 'dark' and LuciusLight for
|
||||
" 'light'.
|
||||
"
|
||||
"
|
||||
" Options:
|
||||
"
|
||||
" The presets available cover most of the options. You can, however, customize
|
||||
" things by setting the following variables yourself:
|
||||
"
|
||||
" g:lucius_style (default: 'dark')
|
||||
"
|
||||
" Set this option to either 'light' or 'dark' for your desired color scheme.
|
||||
" It has the same effect as setting the background.
|
||||
"
|
||||
" g:lucius_contrast (default: 'normal')
|
||||
"
|
||||
" This option determines the contrast to use for text/ui elements. It can be
|
||||
" set to 'low', 'normal', or 'high'. At this time there is no 'high' for the
|
||||
" light scheme.
|
||||
"
|
||||
" g:lucius_contrast_bg (default: 'normal')
|
||||
"
|
||||
" Setting this option makes the background a higher contrast. Current settings
|
||||
" are 'normal' and 'high'.
|
||||
"
|
||||
" g:lucius_use_bold (default: 1)
|
||||
"
|
||||
" Setting this will cause the color scheme to use bold fonts for some items.
|
||||
"
|
||||
" g:lucius_use_underline (default: 1)
|
||||
"
|
||||
" Setting this will cause the color scheme to use underlined fonts for some
|
||||
" items.
|
||||
"
|
||||
" g:lucius_no_term_bg (default: 0)
|
||||
"
|
||||
" Setting this will cause the color scheme to not set a background color in
|
||||
" the terminal (useful for transparency or terminals with different background
|
||||
" colors).
|
||||
"
|
||||
" License:
|
||||
"
|
||||
" Copyright (c) 2015 Jonathan Filip
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
" of this software and associated documentation files (the "Software"), to deal
|
||||
" in the Software without restriction, including without limitation the rights
|
||||
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
" copies of the Software, and to permit persons to whom the Software is
|
||||
" furnished to do so, subject to the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be included in
|
||||
" all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
" THE SOFTWARE.
|
||||
"
|
||||
" ============================================================================
|
||||
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Options:
|
||||
" ============================================================================
|
||||
|
||||
unlet! g:colors_name
|
||||
hi clear
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
if exists("g:lucius_style")
|
||||
let s:style = g:lucius_style
|
||||
else
|
||||
let s:style = &background
|
||||
endif
|
||||
|
||||
if exists("g:lucius_contrast")
|
||||
let s:contrast = g:lucius_contrast
|
||||
else
|
||||
let s:contrast = "normal"
|
||||
endif
|
||||
|
||||
if exists("g:lucius_contrast_bg")
|
||||
let s:contrast_bg = g:lucius_contrast_bg
|
||||
else
|
||||
let s:contrast_bg = "normal"
|
||||
endif
|
||||
|
||||
if exists("g:lucius_use_bold")
|
||||
let s:use_bold = g:lucius_use_bold
|
||||
else
|
||||
let s:use_bold = 1
|
||||
endif
|
||||
|
||||
if exists("g:lucius_use_underline")
|
||||
let s:use_underline = g:lucius_use_underline
|
||||
else
|
||||
let s:use_underline = 1
|
||||
endif
|
||||
|
||||
if exists("g:lucius_no_term_bg")
|
||||
let s:no_term_bg = g:lucius_no_term_bg
|
||||
else
|
||||
let s:no_term_bg = 0
|
||||
endif
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Color Map:
|
||||
" ============================================================================
|
||||
|
||||
let s:color_map = {
|
||||
\ 'bg': 'bg', 'fg': 'fg', 'NONE': 'NONE',
|
||||
\ '#000000': '16', '#00005f': '17', '#000087': '18', '#0000af': '19',
|
||||
\ '#0000d7': '20', '#0000ff': '21', '#005f00': '22', '#005f5f': '23',
|
||||
\ '#005f87': '24', '#005faf': '25', '#005fd7': '26', '#005fff': '27',
|
||||
\ '#008700': '28', '#00875f': '29', '#008787': '30', '#0087af': '31',
|
||||
\ '#0087d7': '32', '#0087ff': '33', '#00af00': '34', '#00af5f': '35',
|
||||
\ '#00af87': '36', '#00afaf': '37', '#00afd7': '38', '#00afff': '39',
|
||||
\ '#00d700': '40', '#00d75f': '41', '#00d787': '42', '#00d7af': '43',
|
||||
\ '#00d7d7': '44', '#00d7ff': '45', '#00ff00': '46', '#00ff5f': '47',
|
||||
\ '#00ff87': '48', '#00ffaf': '49', '#00ffd7': '50', '#00ffff': '51',
|
||||
\ '#5f0000': '52', '#5f005f': '53', '#5f0087': '54', '#5f00af': '55',
|
||||
\ '#5f00d7': '56', '#5f00ff': '57', '#5f5f00': '58', '#5f5f5f': '59',
|
||||
\ '#5f5f87': '60', '#5f5faf': '61', '#5f5fd7': '62', '#5f5fff': '63',
|
||||
\ '#5f8700': '64', '#5f875f': '65', '#5f8787': '66', '#5f87af': '67',
|
||||
\ '#5f87d7': '68', '#5f87ff': '69', '#5faf00': '70', '#5faf5f': '71',
|
||||
\ '#5faf87': '72', '#5fafaf': '73', '#5fafd7': '74', '#5fafff': '75',
|
||||
\ '#5fd700': '76', '#5fd75f': '77', '#5fd787': '78', '#5fd7af': '79',
|
||||
\ '#5fd7d7': '80', '#5fd7ff': '81', '#5fff00': '82', '#5fff5f': '83',
|
||||
\ '#5fff87': '84', '#5fffaf': '85', '#5fffd7': '86', '#5fffff': '87',
|
||||
\ '#870000': '88', '#87005f': '89', '#870087': '90', '#8700af': '91',
|
||||
\ '#8700d7': '92', '#8700ff': '93', '#875f00': '94', '#875f5f': '95',
|
||||
\ '#875f87': '96', '#875faf': '97', '#875fd7': '98', '#875fff': '99',
|
||||
\ '#878700': '100', '#87875f': '101', '#878787': '102', '#8787af': '103',
|
||||
\ '#8787d7': '104', '#8787ff': '105', '#87af00': '106', '#87af5f': '107',
|
||||
\ '#87af87': '108', '#87afaf': '109', '#87afd7': '110', '#87afff': '111',
|
||||
\ '#87d700': '112', '#87d75f': '113', '#87d787': '114', '#87d7af': '115',
|
||||
\ '#87d7d7': '116', '#87d7ff': '117', '#87ff00': '118', '#87ff5f': '119',
|
||||
\ '#87ff87': '120', '#87ffaf': '121', '#87ffd7': '122', '#87ffff': '123',
|
||||
\ '#af0000': '124', '#af005f': '125', '#af0087': '126', '#af00af': '127',
|
||||
\ '#af00d7': '128', '#af00ff': '129', '#af5f00': '130', '#af5f5f': '131',
|
||||
\ '#af5f87': '132', '#af5faf': '133', '#af5fd7': '134', '#af5fff': '135',
|
||||
\ '#af8700': '136', '#af875f': '137', '#af8787': '138', '#af87af': '139',
|
||||
\ '#af87d7': '140', '#af87ff': '141', '#afaf00': '142', '#afaf5f': '143',
|
||||
\ '#afaf87': '144', '#afafaf': '145', '#afafd7': '146', '#afafff': '147',
|
||||
\ '#afd700': '148', '#afd75f': '149', '#afd787': '150', '#afd7af': '151',
|
||||
\ '#afd7d7': '152', '#afd7ff': '153', '#afff00': '154', '#afff5f': '155',
|
||||
\ '#afff87': '156', '#afffaf': '157', '#afffd7': '158', '#afffff': '159',
|
||||
\ '#d70000': '160', '#d7005f': '161', '#d70087': '162', '#d700af': '163',
|
||||
\ '#d700d7': '164', '#d700ff': '165', '#d75f00': '166', '#d75f5f': '167',
|
||||
\ '#d75f87': '168', '#d75faf': '169', '#d75fd7': '170', '#d75fff': '171',
|
||||
\ '#d78700': '172', '#d7875f': '173', '#d78787': '174', '#d787af': '175',
|
||||
\ '#d787d7': '176', '#d787ff': '177', '#d7af00': '178', '#d7af5f': '179',
|
||||
\ '#d7af87': '180', '#d7afaf': '181', '#d7afd7': '182', '#d7afff': '183',
|
||||
\ '#d7d700': '184', '#d7d75f': '185', '#d7d787': '186', '#d7d7af': '187',
|
||||
\ '#d7d7d7': '188', '#d7d7ff': '189', '#d7ff00': '190', '#d7ff5f': '191',
|
||||
\ '#d7ff87': '192', '#d7ffaf': '193', '#d7ffd7': '194', '#d7ffff': '195',
|
||||
\ '#ff0000': '196', '#ff005f': '197', '#ff0087': '198', '#ff00af': '199',
|
||||
\ '#ff00d7': '200', '#ff00ff': '201', '#ff5f00': '202', '#ff5f5f': '203',
|
||||
\ '#ff5f87': '204', '#ff5faf': '205', '#ff5fd7': '206', '#ff5fff': '207',
|
||||
\ '#ff8700': '208', '#ff875f': '209', '#ff8787': '210', '#ff87af': '211',
|
||||
\ '#ff87d7': '212', '#ff87ff': '213', '#ffaf00': '214', '#ffaf5f': '215',
|
||||
\ '#ffaf87': '216', '#ffafaf': '217', '#ffafd7': '218', '#ffafff': '219',
|
||||
\ '#ffd700': '220', '#ffd75f': '221', '#ffd787': '222', '#ffd7af': '223',
|
||||
\ '#ffd7d7': '224', '#ffd7ff': '225', '#ffff00': '226', '#ffff5f': '227',
|
||||
\ '#ffff87': '228', '#ffffaf': '229', '#ffffd7': '230', '#ffffff': '231',
|
||||
\ '#080808': '232', '#121212': '233', '#1c1c1c': '234', '#262626': '235',
|
||||
\ '#303030': '236', '#3a3a3a': '237', '#444444': '238', '#4e4e4e': '239',
|
||||
\ '#585858': '240', '#626262': '241', '#6c6c6c': '242', '#767676': '243',
|
||||
\ '#808080': '244', '#8a8a8a': '245', '#949494': '246', '#9e9e9e': '247',
|
||||
\ '#a8a8a8': '248', '#b2b2b2': '249', '#bcbcbc': '250', '#c6c6c6': '251',
|
||||
\ '#d0d0d0': '252', '#dadada': '253', '#e4e4e4': '254', '#eeeeee': '255',
|
||||
\ }
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Functions:
|
||||
" ============================================================================
|
||||
|
||||
function! s:AddCterm(name)
|
||||
exec "let l:gfg = synIDattr(synIDtrans(hlID('" . a:name .
|
||||
\ "')), 'fg', 'gui')"
|
||||
exec "let l:gbg = synIDattr(synIDtrans(hlID('" . a:name .
|
||||
\ "')), 'bg', 'gui')"
|
||||
let l:gfg = l:gfg == "" ? "NONE" : l:gfg
|
||||
let l:gbg = l:gbg == "" ? "NONE" : l:gbg
|
||||
exec "hi " . a:name . " ctermfg=" . s:color_map[l:gfg] .
|
||||
\ " ctermbg=" . s:color_map[l:gbg]
|
||||
endfunction
|
||||
|
||||
function! s:AddSpCterm(name)
|
||||
exec "let l:gsp = synIDattr(synIDtrans(hlID('" . a:name .
|
||||
\ "')), 'sp', 'gui')"
|
||||
let l:gsp = l:gsp == "" ? "NONE" : l:gsp
|
||||
exec "hi " . a:name . " ctermfg=" . s:color_map[l:gsp]
|
||||
endfunction
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Text Groups:
|
||||
" ============================================================================
|
||||
|
||||
let s:normal_items = [
|
||||
\ "ColorColumn", "Comment", "Conceal", "Constant", "Cursor", "CursorColumn",
|
||||
\ "CursorIM", "CursorLine", "CursorLineNr", "DiffAdd", "DiffChange",
|
||||
\ "DiffDelete", "Directory", "Error", "ErrorMsg", "Identifier",
|
||||
\ "IncSearch", "LineNr", "MatchParen", "ModeMsg", "MoreMsg",
|
||||
\ "NonText", "Pmenu", "PmenuSbar", "PmenuSel",
|
||||
\ "PmenuThumb", "PreProc", "Question", "Search", "SignColumn",
|
||||
\ "Special", "SpecialKey", "Statement", "StatusLineNC", "TabLine",
|
||||
\ "TabLineFill", "Todo", "Type", "VertSplit", "Visual",
|
||||
\ "WarningMsg", "WildMenu",
|
||||
\ ]
|
||||
|
||||
let s:bold_items = [
|
||||
\ "DiffText", "FoldColumn", "Folded", "StatusLine", "TabLineSel",
|
||||
\ "Title", "CursorLineNr",
|
||||
\ ]
|
||||
|
||||
let s:underline_items = [
|
||||
\ "Underlined", "VisualNOS"
|
||||
\ ]
|
||||
|
||||
let s:undercurl_items = [
|
||||
\ "SpellBad", "SpellCap", "SpellLocal", "SpellRare"
|
||||
\ ]
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Color Definitions:
|
||||
" ============================================================================
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" 'Normal' Colors:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi clear Normal
|
||||
hi Normal gui=none cterm=none term=none
|
||||
|
||||
if s:style == "light"
|
||||
if s:contrast == "high"
|
||||
hi Normal guifg=#000000
|
||||
elseif s:contrast == "low"
|
||||
hi Normal guifg=#626262
|
||||
else
|
||||
hi Normal guifg=#444444
|
||||
endif
|
||||
else
|
||||
if s:contrast == "high"
|
||||
hi Normal guifg=#eeeeee
|
||||
elseif s:contrast == "low"
|
||||
hi Normal guifg=#bcbcbc
|
||||
else
|
||||
hi Normal guifg=#d7d7d7
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:style == "light"
|
||||
if s:contrast_bg == "high"
|
||||
hi Normal guibg=#ffffff
|
||||
else
|
||||
hi Normal guibg=#eeeeee
|
||||
endif
|
||||
else
|
||||
if s:contrast_bg == "high"
|
||||
hi Normal guibg=#121212
|
||||
else
|
||||
hi Normal guibg=#303030
|
||||
endif
|
||||
endif
|
||||
|
||||
call s:AddCterm("Normal")
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Extra setup
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
exec "set background=" . s:style
|
||||
|
||||
" Clear default settings
|
||||
for s:item in s:normal_items + s:bold_items + s:underline_items + s:undercurl_items
|
||||
exec "hi " . s:item . " guifg=NONE guibg=NONE gui=none"
|
||||
\ . " ctermfg=NONE ctermbg=NONE cterm=none term=none"
|
||||
endfor
|
||||
|
||||
let g:colors_name="lucius"
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Text Markup:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
if s:style == "light"
|
||||
hi NonText guifg=#afafd7
|
||||
hi SpecialKey guifg=#afd7af
|
||||
if s:contrast == "low"
|
||||
hi Comment guifg=#9e9e9e
|
||||
hi Conceal guifg=#9e9e9e
|
||||
hi Constant guifg=#d78700
|
||||
hi Directory guifg=#00af87
|
||||
hi Identifier guifg=#00af00
|
||||
hi PreProc guifg=#00afaf
|
||||
hi Special guifg=#af00af
|
||||
hi Statement guifg=#0087d7
|
||||
hi Title guifg=#0087d7
|
||||
hi Type guifg=#0087af
|
||||
else
|
||||
hi Comment guifg=#808080
|
||||
hi Conceal guifg=#808080
|
||||
hi Constant guifg=#af5f00
|
||||
hi Directory guifg=#00875f
|
||||
hi Identifier guifg=#008700
|
||||
hi PreProc guifg=#008787
|
||||
hi Special guifg=#870087
|
||||
hi Statement guifg=#005faf
|
||||
hi Title guifg=#005faf
|
||||
hi Type guifg=#005f87
|
||||
endif
|
||||
else
|
||||
hi NonText guifg=#5f5f87
|
||||
hi SpecialKey guifg=#5f875f
|
||||
if s:contrast == "low"
|
||||
hi Comment guifg=#6c6c6c
|
||||
hi Conceal guifg=#6c6c6c
|
||||
hi Constant guifg=#afaf87
|
||||
hi Directory guifg=#87af87
|
||||
hi Identifier guifg=#87af5f
|
||||
hi PreProc guifg=#5faf87
|
||||
hi Special guifg=#af87af
|
||||
hi Statement guifg=#5fafd7
|
||||
hi Title guifg=#00afd7
|
||||
hi Type guifg=#5fafaf
|
||||
elseif s:contrast == "high"
|
||||
hi Comment guifg=#8a8a8a
|
||||
hi Conceal guifg=#8a8a8a
|
||||
hi Constant guifg=#ffffd7
|
||||
hi Directory guifg=#d7ffd7
|
||||
hi Identifier guifg=#d7ffaf
|
||||
hi PreProc guifg=#afffd7
|
||||
hi Special guifg=#ffd7ff
|
||||
hi Statement guifg=#afffff
|
||||
hi Title guifg=#87d7ff
|
||||
hi Type guifg=#afffff
|
||||
else
|
||||
hi Comment guifg=#808080
|
||||
hi Conceal guifg=#808080
|
||||
hi Constant guifg=#d7d7af
|
||||
hi Directory guifg=#afd7af
|
||||
hi Identifier guifg=#afd787
|
||||
hi PreProc guifg=#87d7af
|
||||
hi Special guifg=#d7afd7
|
||||
hi Statement guifg=#87d7ff
|
||||
hi Title guifg=#5fafd7
|
||||
hi Type guifg=#87d7d7
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Highlighting:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi Cursor guifg=bg
|
||||
hi CursorColumn guifg=NONE
|
||||
hi CursorIM guifg=bg
|
||||
hi CursorLine guifg=NONE
|
||||
hi Visual guifg=NONE
|
||||
hi VisualNOS guifg=fg guibg=NONE
|
||||
if s:style == "light"
|
||||
hi CursorColumn guibg=#dadada
|
||||
hi CursorLine guibg=#dadada
|
||||
hi IncSearch guifg=fg guibg=#5fd7d7
|
||||
hi MatchParen guifg=NONE guibg=#5fd7d7
|
||||
hi Search guifg=fg guibg=#ffaf00
|
||||
hi Visual guibg=#afd7ff
|
||||
if s:contrast == "low"
|
||||
hi Cursor guibg=#87afd7
|
||||
hi CursorIM guibg=#87afd7
|
||||
hi Error guifg=#d70000 guibg=#ffd7d7
|
||||
hi Todo guifg=#af8700 guibg=#ffffaf
|
||||
else
|
||||
hi Cursor guibg=#5f87af
|
||||
hi CursorIM guibg=#5f87af
|
||||
hi Error guifg=#af0000 guibg=#d7afaf
|
||||
hi Todo guifg=#875f00 guibg=#ffffaf
|
||||
endif
|
||||
else
|
||||
hi CursorColumn guibg=#444444
|
||||
hi CursorLine guibg=#444444
|
||||
hi IncSearch guifg=bg
|
||||
hi MatchParen guifg=fg guibg=#87af00
|
||||
hi Search guifg=bg
|
||||
hi Visual guibg=#005f87
|
||||
if s:contrast == "low"
|
||||
hi Cursor guibg=#5f87af
|
||||
hi CursorIM guibg=#5f87af
|
||||
hi Error guifg=#d75f5f guibg=#870000
|
||||
hi IncSearch guibg=#00afaf
|
||||
hi Search guibg=#d78700
|
||||
hi Todo guifg=#afaf00 guibg=#5f5f00
|
||||
elseif s:contrast == "high"
|
||||
hi Cursor guibg=#afd7ff
|
||||
hi CursorIM guibg=#afd7ff
|
||||
hi Error guifg=#ffafaf guibg=#af0000
|
||||
hi IncSearch guibg=#87ffff
|
||||
hi Search guibg=#ffaf5f
|
||||
hi Todo guifg=#ffff87 guibg=#87875f
|
||||
else
|
||||
hi Cursor guibg=#87afd7
|
||||
hi CursorIM guibg=#87afd7
|
||||
hi Error guifg=#ff8787 guibg=#870000
|
||||
hi IncSearch guibg=#5fd7d7
|
||||
hi Search guibg=#d78700
|
||||
hi Todo guifg=#d7d75f guibg=#5f5f00
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Messages:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi Question guifg=fg
|
||||
if s:style == "light"
|
||||
if s:contrast == "low"
|
||||
hi ErrorMsg guifg=#d70000
|
||||
hi ModeMsg guifg=#0087ff
|
||||
hi MoreMsg guifg=#0087ff
|
||||
hi WarningMsg guifg=#d78700
|
||||
else
|
||||
hi ErrorMsg guifg=#af0000
|
||||
hi ModeMsg guifg=#005faf
|
||||
hi MoreMsg guifg=#005faf
|
||||
hi WarningMsg guifg=#af5f00
|
||||
endif
|
||||
else
|
||||
if s:contrast == "low"
|
||||
hi ErrorMsg guifg=#d75f5f
|
||||
hi ModeMsg guifg=#87afaf
|
||||
hi MoreMsg guifg=#87afaf
|
||||
hi WarningMsg guifg=#af875f
|
||||
elseif s:contrast == "high"
|
||||
hi ErrorMsg guifg=#ff8787
|
||||
hi ModeMsg guifg=#afffff
|
||||
hi MoreMsg guifg=#afffff
|
||||
hi WarningMsg guifg=#ffaf87
|
||||
else
|
||||
hi ErrorMsg guifg=#ff5f5f
|
||||
hi ModeMsg guifg=#afd7d7
|
||||
hi MoreMsg guifg=#afd7d7
|
||||
hi WarningMsg guifg=#d7875f
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" UI:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi ColorColumn guifg=NONE
|
||||
hi Pmenu guifg=bg
|
||||
hi PmenuSel guifg=fg
|
||||
hi PmenuThumb guifg=fg
|
||||
hi StatusLine guifg=bg
|
||||
hi TabLine guifg=bg
|
||||
hi TabLineSel guifg=fg
|
||||
hi WildMenu guifg=fg
|
||||
if s:style == "light"
|
||||
hi ColorColumn guibg=#e4e4e4
|
||||
hi CursorLineNr guifg=#626262 guibg=#dadada
|
||||
hi FoldColumn guibg=#bcbcbc
|
||||
hi Folded guibg=#bcbcbc
|
||||
hi LineNr guifg=#9e9e9e guibg=#dadada
|
||||
hi PmenuSel guibg=#afd7ff
|
||||
hi SignColumn guibg=#d0d0d0
|
||||
hi StatusLineNC guifg=#dadada
|
||||
hi TabLineFill guifg=#dadada
|
||||
hi VertSplit guifg=#e4e4e4
|
||||
hi WildMenu guibg=#afd7ff
|
||||
if s:contrast == "low"
|
||||
hi FoldColumn guifg=#808080
|
||||
hi Folded guifg=#808080
|
||||
hi Pmenu guibg=#9e9e9e
|
||||
hi PmenuSbar guifg=#9e9e9e guibg=#626262
|
||||
hi PmenuThumb guibg=#9e9e9e
|
||||
hi SignColumn guifg=#808080
|
||||
hi StatusLine guibg=#9e9e9e
|
||||
hi StatusLineNC guibg=#9e9e9e
|
||||
hi TabLine guibg=#9e9e9e
|
||||
hi TabLineFill guibg=#9e9e9e
|
||||
hi TabLineSel guibg=#afd7ff
|
||||
hi VertSplit guibg=#9e9e9e
|
||||
else
|
||||
hi FoldColumn guifg=#626262
|
||||
hi Folded guifg=#626262
|
||||
hi Pmenu guibg=#808080
|
||||
hi PmenuSbar guifg=#808080 guibg=#444444
|
||||
hi PmenuThumb guibg=#9e9e9e
|
||||
hi SignColumn guifg=#626262
|
||||
hi StatusLine guibg=#808080
|
||||
hi StatusLineNC guibg=#808080
|
||||
hi TabLine guibg=#808080
|
||||
hi TabLineFill guibg=#808080
|
||||
hi TabLineSel guibg=#afd7ff
|
||||
hi VertSplit guibg=#808080
|
||||
endif
|
||||
else
|
||||
hi ColorColumn guibg=#3a3a3a
|
||||
hi CursorLineNr guifg=#9e9e9e guibg=#444444
|
||||
hi FoldColumn guibg=#4e4e4e
|
||||
hi Folded guibg=#4e4e4e
|
||||
hi LineNr guifg=#626262 guibg=#444444
|
||||
hi PmenuSel guibg=#005f87
|
||||
hi SignColumn guibg=#4e4e4e
|
||||
hi StatusLineNC guifg=#4e4e4e
|
||||
hi TabLineFill guifg=#4e4e4e
|
||||
hi VertSplit guifg=#626262
|
||||
hi WildMenu guibg=#005f87
|
||||
if s:contrast == "low"
|
||||
hi FoldColumn guifg=#a8a8a8
|
||||
hi Folded guifg=#a8a8a8
|
||||
hi Pmenu guibg=#8a8a8a
|
||||
hi PmenuSbar guifg=#8a8a8a guibg=#bcbcbc
|
||||
hi PmenuThumb guibg=#585858
|
||||
hi SignColumn guifg=#8a8a8a
|
||||
hi StatusLine guibg=#8a8a8a
|
||||
hi StatusLineNC guibg=#8a8a8a
|
||||
hi TabLine guibg=#8a8a8a
|
||||
hi TabLineFill guibg=#8a8a8a
|
||||
hi TabLineSel guibg=#005f87
|
||||
hi VertSplit guibg=#8a8a8a
|
||||
elseif s:contrast == "high"
|
||||
hi FoldColumn guifg=#c6c6c6
|
||||
hi Folded guifg=#c6c6c6
|
||||
hi Pmenu guibg=#bcbcbc
|
||||
hi PmenuSbar guifg=#bcbcbc guibg=#dadada
|
||||
hi PmenuThumb guibg=#8a8a8a
|
||||
hi SignColumn guifg=#bcbcbc
|
||||
hi StatusLine guibg=#bcbcbc
|
||||
hi StatusLineNC guibg=#bcbcbc
|
||||
hi TabLine guibg=#bcbcbc
|
||||
hi TabLineFill guibg=#bcbcbc
|
||||
hi TabLineSel guibg=#0087af
|
||||
hi VertSplit guibg=#bcbcbc
|
||||
else
|
||||
hi FoldColumn guifg=#bcbcbc
|
||||
hi Folded guifg=#bcbcbc
|
||||
hi Pmenu guibg=#b2b2b2
|
||||
hi PmenuSbar guifg=#b2b2b2 guibg=#d0d0d0
|
||||
hi PmenuThumb guibg=#808080
|
||||
hi SignColumn guifg=#b2b2b2
|
||||
hi StatusLine guibg=#b2b2b2
|
||||
hi StatusLineNC guibg=#b2b2b2
|
||||
hi TabLine guibg=#b2b2b2
|
||||
hi TabLineFill guibg=#b2b2b2
|
||||
hi TabLineSel guibg=#005f87
|
||||
hi VertSplit guibg=#b2b2b2
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Diff:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi DiffAdd guifg=fg
|
||||
hi DiffChange guifg=fg
|
||||
hi DiffDelete guifg=fg
|
||||
|
||||
if s:style == "light"
|
||||
hi DiffAdd guibg=#afd7af
|
||||
hi DiffChange guibg=#d7d7af
|
||||
hi DiffDelete guibg=#d7afaf
|
||||
hi DiffText guibg=#d7d7af
|
||||
if s:contrast == "low"
|
||||
hi DiffText guifg=#ff8700
|
||||
else
|
||||
hi DiffText guifg=#d75f00
|
||||
endif
|
||||
else
|
||||
hi DiffAdd guibg=#5f875f
|
||||
hi DiffChange guibg=#87875f
|
||||
hi DiffDelete guibg=#875f5f
|
||||
hi DiffText guibg=#87875f
|
||||
if s:contrast == "low"
|
||||
hi DiffText guifg=#d7d75f
|
||||
else
|
||||
hi DiffText guifg=#ffff87
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Spelling:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
if s:style == "light"
|
||||
hi SpellBad guisp=#d70000
|
||||
hi SpellCap guisp=#00afd7
|
||||
hi SpellLocal guisp=#d7af00
|
||||
hi SpellRare guisp=#5faf00
|
||||
else
|
||||
hi SpellBad guisp=#ff5f5f
|
||||
hi SpellCap guisp=#5fafd7
|
||||
hi SpellLocal guisp=#d7af5f
|
||||
hi SpellRare guisp=#5faf5f
|
||||
endif
|
||||
|
||||
|
||||
" ----------------------------------------------------------------------------
|
||||
" Miscellaneous:
|
||||
" ----------------------------------------------------------------------------
|
||||
|
||||
hi Ignore guifg=bg
|
||||
hi Underlined guifg=fg
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Text Emphasis:
|
||||
" ============================================================================
|
||||
|
||||
if s:use_bold == 1
|
||||
for s:item in s:bold_items
|
||||
exec "hi " . s:item . " gui=bold cterm=bold term=none"
|
||||
endfor
|
||||
endif
|
||||
|
||||
if s:use_underline == 1
|
||||
for s:item in s:underline_items
|
||||
exec "hi " . s:item . " gui=underline cterm=underline term=none"
|
||||
endfor
|
||||
for s:item in s:undercurl_items
|
||||
exec "hi " . s:item . " cterm=underline"
|
||||
endfor
|
||||
endif
|
||||
|
||||
for s:item in s:undercurl_items
|
||||
exec "hi " . s:item . " gui=undercurl term=none"
|
||||
endfor
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Cterm Colors:
|
||||
" ============================================================================
|
||||
|
||||
for s:item in s:normal_items + s:bold_items + s:underline_items
|
||||
call s:AddCterm(s:item)
|
||||
endfor
|
||||
|
||||
for s:item in s:undercurl_items
|
||||
call s:AddSpCterm(s:item)
|
||||
endfor
|
||||
|
||||
if s:no_term_bg == 1
|
||||
hi Normal ctermbg=NONE
|
||||
endif
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Alternative Bold Definitions:
|
||||
" ============================================================================
|
||||
|
||||
let s:alternative_bold_items = ["Identifier", "PreProc", "Statement",
|
||||
\ "Special", "Constant", "Type"]
|
||||
|
||||
for s:item in s:alternative_bold_items
|
||||
exec "let s:temp_gui_fg = synIDattr(synIDtrans(hlID('" . s:item .
|
||||
\ "')), 'fg', 'gui')"
|
||||
exec "let s:temp_cterm_fg = synIDattr(synIDtrans(hlID('" . s:item .
|
||||
\ "')), 'fg', 'cterm')"
|
||||
exec "hi B" . s:item . " guifg=" . s:temp_gui_fg . " ctermfg=" .
|
||||
\ s:temp_cterm_fg . " gui=bold cterm=bold term=none"
|
||||
endfor
|
||||
|
||||
|
||||
" ============================================================================
|
||||
" Plugin Specific Colors:
|
||||
" ============================================================================
|
||||
|
||||
" Tagbar:
|
||||
hi link TagbarAccessPublic Constant
|
||||
hi link TagbarAccessProtected Type
|
||||
hi link TagbarAccessPrivate PreProc
|
||||
|
||||
" Vimwiki:
|
||||
hi link VimwikiHeader1 BIdentifier
|
||||
hi link VimwikiHeader2 BPreProc
|
||||
hi link VimwikiHeader3 BStatement
|
||||
hi link VimwikiHeader4 BSpecial
|
||||
hi link VimwikiHeader5 BConstant
|
||||
hi link VimwikiHeader6 BType
|
||||
|
||||
" CoC:
|
||||
hi link CocErrorSign ErrorMsg
|
||||
hi link CocErrorFloat Pmenu
|
||||
hi link CocWarningSign WarningMsg
|
||||
hi link CocWarningFloat Pmenu
|
||||
hi link CocInfoSign MoreMsg
|
||||
hi link CocInfoFloat Pmenu
|
||||
hi link CocHintFloat Directory
|
||||
hi link CocHintFloat Pmenu
|
||||
|
||||
" ============================================================================
|
||||
" Preset Commands:
|
||||
" ============================================================================
|
||||
|
||||
function! SetLucius(style, contrast, contrast_bg)
|
||||
let g:lucius_style = a:style
|
||||
let g:lucius_contrast = a:contrast
|
||||
let g:lucius_contrast_bg = a:contrast_bg
|
||||
endfunction
|
||||
|
||||
command! LuciusLight call SetLucius("light", "normal", "normal")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusLightLowContrast call SetLucius("light", "low", "normal")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusLightHighContrast call SetLucius("light", "high", "normal")
|
||||
\ | colorscheme lucius
|
||||
|
||||
command! LuciusWhite call SetLucius("light", "normal", "high")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusWhiteLowContrast call SetLucius("light", "low", "high")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusWhiteHighContrast call SetLucius("light", "high", "high")
|
||||
\ | colorscheme lucius
|
||||
|
||||
command! LuciusDark call SetLucius("dark", "normal", "normal")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusDarkLowContrast call SetLucius("dark", "low", "normal")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusDarkHighContrast call SetLucius("dark", "high", "normal")
|
||||
\ | colorscheme lucius
|
||||
|
||||
command! LuciusBlack call SetLucius("dark", "normal", "high")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusBlackLowContrast call SetLucius("dark", "low", "high")
|
||||
\ | colorscheme lucius
|
||||
command! LuciusBlackHighContrast call SetLucius("dark", "high", "high")
|
||||
\ | colorscheme lucius
|
||||
|
||||
" vim: tw=78
|
574
.vim/vimrc
574
.vim/vimrc
@ -1,42 +1,29 @@
|
||||
" load plugins
|
||||
execute pathogen#infect()
|
||||
Helptags
|
||||
|
||||
set nocompatible
|
||||
set autochdir
|
||||
set shm+=I
|
||||
set path+=.,**
|
||||
set mouse=v
|
||||
set laststatus=2
|
||||
|
||||
" mouse support
|
||||
set mouse=
|
||||
|
||||
" real backspace, please
|
||||
set backspace=indent,eol,start
|
||||
|
||||
set nonumber
|
||||
" don't complain about $( )
|
||||
let g:is_posix=1
|
||||
|
||||
" colors
|
||||
set background=dark
|
||||
colorscheme lucius
|
||||
|
||||
set cursorline
|
||||
set scrolloff=3
|
||||
set spelllang=de,en
|
||||
|
||||
syntax off
|
||||
filetype on
|
||||
|
||||
set spelllang=de,en
|
||||
let mapleader = ","
|
||||
|
||||
" * and # are only highlighting
|
||||
" n searches in the direction of * or #
|
||||
" nnoremap * *``
|
||||
" nnoremap # #``
|
||||
" nnoremap n <S-n>
|
||||
|
||||
" SMOOTH SCROLLING
|
||||
set t_TI=[4?h
|
||||
set t_TE=[4?l
|
||||
|
||||
" INDENTATION
|
||||
set noautoindent
|
||||
set nosmartindent
|
||||
set nocindent
|
||||
|
||||
" DIFF
|
||||
set formatoptions=crolj
|
||||
"
|
||||
syntax on
|
||||
filetype plugin on
|
||||
set omnifunc=syntaxcomplete#Complete
|
||||
|
||||
" SEARCH
|
||||
set hlsearch
|
||||
@ -59,16 +46,38 @@ set list
|
||||
set listchars=tab:>_,trail:>
|
||||
set fillchars=vert:\|,eob:\
|
||||
|
||||
set showcmd
|
||||
set clipboard=unnamedplus
|
||||
set wildmenu
|
||||
set wildmode=longest:full,full
|
||||
|
||||
" C specific highlighting
|
||||
let c_space_errors=1
|
||||
let c_gnu=1
|
||||
let c_comment_strings=1
|
||||
let c_curly_error=1
|
||||
"set makeprg=cc\ -o\ %:r\ %
|
||||
set autowrite
|
||||
function! s:build_quickfix_list(lines)
|
||||
call setqflist(map(copy(a:lines), '{ "filename": v:val, "lnum": 1 }'))
|
||||
copen
|
||||
cc
|
||||
endfunction
|
||||
|
||||
" let g:fzf_history_dir = '~/.local/vim/fzf-history'
|
||||
let g:fzf_layout = { 'down': '40%' }
|
||||
nnoremap <c-p> :FZF -i -e --layout=reverse<CR>
|
||||
|
||||
let g:fzf_action = {
|
||||
\ 'ctrl-t': 'tab split',
|
||||
\ 'ctrl-x': 'split',
|
||||
\ 'ctrl-v': 'vsplit' }
|
||||
|
||||
function! CleverTab()
|
||||
if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
|
||||
return "\<Tab>"
|
||||
else
|
||||
return "\<C-N>"
|
||||
endif
|
||||
endfunction
|
||||
inoremap <tab> <C-R>=CleverTab()<CR>
|
||||
|
||||
" HIGHLIGHT SPECIAL WORDS
|
||||
match ErrorMsg '\(TODO:\|FIXME\|XXX\|workaround\|WTF\|: error:.*\|\s\+$\| \+\ze\t\)'
|
||||
|
||||
" DIFF
|
||||
set formatoptions=crolj
|
||||
|
||||
" TEMPORARY FILES
|
||||
set undofile
|
||||
@ -77,214 +86,8 @@ set backup
|
||||
set backupcopy=yes
|
||||
set backupdir=~/.local/vim/backup//
|
||||
set directory=~/.local/vim/swapfiles//
|
||||
set updatetime=2000
|
||||
set updatecount=100
|
||||
silent execute '!mkdir -p ~/.local/vim/backup ~/.local/vim/undo ~/.local/vim/swapfiles'
|
||||
|
||||
" TAB LINE
|
||||
set tabline=%!Tabline()
|
||||
function! Tabline() abort
|
||||
let l:line = ''
|
||||
for l:i in range(1, tabpagenr('$'))
|
||||
if l:i == tabpagenr()
|
||||
let l:line .= '%#TabLineSel#'
|
||||
else
|
||||
let l:line .= '%#TabLine#'
|
||||
endif
|
||||
let l:label = fnamemodify(
|
||||
\ bufname(tabpagebuflist(l:i)[tabpagewinnr(l:i) - 1]), ':t' )
|
||||
let l:line .= ' ' . l:label . ' '
|
||||
endfor
|
||||
let l:line .= '%#TabLineFill#'
|
||||
return l:line
|
||||
endfunction
|
||||
|
||||
" CREATE DIRECTORIES
|
||||
silent execute 'cs add ~/.dev/cscope.out'
|
||||
set csprg=cscope\ -C
|
||||
set cst
|
||||
set cspc=9
|
||||
|
||||
" LOOK N FEEL
|
||||
set t_Co=256
|
||||
set t_ut=
|
||||
set background=dark
|
||||
let g:is_posix=1
|
||||
|
||||
colorscheme goodwolf
|
||||
|
||||
|
||||
" HIGHLIGHT SPECIAL WORDS
|
||||
match ErrorMsg '\(TODO:\|FIXME\|XXX\|workaround\|WTF\|: error:.*\|\s\+$\| \+\ze\t\)'
|
||||
|
||||
" MY THEME
|
||||
hi ColorColumn ctermbg=234 ctermfg=249 cterm=NONE
|
||||
hi CursorLine ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi CursorLineNr ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi LineNr ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
hi Comment ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
hi Constant ctermbg=NONE ctermfg=251 cterm=italic
|
||||
hi Directory ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Error ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi ErrorMsg ctermbg=NONE ctermfg=196 cterm=NONE
|
||||
hi Folded ctermbg=NONE ctermfg=246 cterm=inverse
|
||||
hi Identifier ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Identifier ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi IncSearch ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
hi MatchParen ctermbg=NONE ctermfg=202 cterm=bold
|
||||
hi NonText ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Normal ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Pmenu ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
hi PmenuSel ctermbg=NONE ctermfg=251 cterm=bold
|
||||
hi PreProc ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
hi Search ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
hi SignColumn ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Special ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi SpecialComment ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi SpecialKey ctermbg=NONE ctermfg=239 cterm=NONE
|
||||
hi Statement ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
hi Statement ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi String ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
hi TODO ctermbg=NONE ctermfg=246 cterm=italic
|
||||
hi TabLine ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
hi TabLineFill ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
hi TabLineSel ctermbg=NONE ctermfg=249 cterm=NONE
|
||||
hi Title ctermbg=NONE ctermfg=246 cterm=bold
|
||||
hi Type ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Underlined ctermbg=NONE ctermfg=251 cterm=underline
|
||||
hi VisualNOS ctermbg=NONE ctermfg=246 cterm=NONE
|
||||
hi WarningMsg ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
hi Wildmenu ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
|
||||
" VIMDIFF COLORS
|
||||
hi DiffAdd ctermbg=22 ctermfg=NONE cterm=NONE
|
||||
hi DiffDelete ctermbg=234 ctermfg=NONE cterm=NONE
|
||||
hi DiffChange ctermbg=234 ctermfg=NONE cterm=NONE
|
||||
hi DiffText ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
|
||||
" SPLIT AND FOLD COLORS
|
||||
hi VertSplit ctermbg=NONE ctermfg=246 cterm=NONE
|
||||
hi FoldColumn ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
hi Folded ctermbg=233 ctermfg=251 cterm=NONE
|
||||
|
||||
" SPELL COLOR
|
||||
hi SpellBad ctermbg=52 ctermfg=NONE
|
||||
hi SpellCap ctermbg=22 ctermfg=NONE cterm=NONE
|
||||
hi SpellRare ctermbg=130 ctermfg=NONE
|
||||
|
||||
" C+PgUp/PgDown
|
||||
nnoremap gn :next<CR>
|
||||
nnoremap gp :prev<CR>
|
||||
|
||||
" NAVIGATE ON VISUAL LINES (SOFT WRAP)
|
||||
imap <silent> <Down> <C-o> gj
|
||||
imap <silent> <Up> <C-o> gk
|
||||
nmap <silent> <Down> gj
|
||||
nmap <silent> <Up> gk
|
||||
|
||||
" USE ARROW / VIM KEYS INSIDE OMNIBOX
|
||||
inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
|
||||
inoremap <expr> k pumvisible() ? '<C-p>' : 'k'
|
||||
inoremap <expr> <Down> pumvisible() ? '<C-n>' : '<Down>'
|
||||
inoremap <expr> <Up> pumvisible() ? '<C-p>' : '<Up>'
|
||||
|
||||
" NETRW
|
||||
let g:netrw_banner = 0
|
||||
let g:netrw_browse_split = 3
|
||||
let g:netrw_liststyle = 3
|
||||
let g:netrw_ctags = "ectags"
|
||||
let g:netrw_silent = 1
|
||||
let g:netrw_sftp_cmd = "sftp -q"
|
||||
let g:netrw_scp_cmd = "scp -q"
|
||||
|
||||
" STATUSLINE, AIRLINE/POWERLINE IS FOR NOOBS
|
||||
set statusline=%#VisualNOS#
|
||||
set statusline+=%F\ %{&filetype}
|
||||
set statusline+=%=
|
||||
set statusline+=%m%r%h%w%q
|
||||
set statusline+=\ %{&fileformat}/%{&fileencoding?&fileencoding:&encoding}
|
||||
set statusline+=\ dec:%b\ hex:%B
|
||||
" set statusline+=\ count:%{(mode()=='V')?wordcount().visual_words:wordcount().words}w
|
||||
" set statusline+=/%{(mode()=='V')?wordcount().visual_chars:wordcount().chars}c
|
||||
set statusline+=\ line:%l\ col:%c
|
||||
set statusline+=\ %p%%
|
||||
set statusline+=\
|
||||
|
||||
" ITALIC FIX
|
||||
set t_ZH=[3m
|
||||
set t_ZR=[23m
|
||||
|
||||
set wildmode=full
|
||||
|
||||
" OPEN FILE
|
||||
" nnoremap <C-t> :Texplore<CR>
|
||||
nnoremap <C-t> :Files<CR>
|
||||
inoremap <C-t> <ESC>:Files<CR>
|
||||
|
||||
" TAGS FILE
|
||||
set tags="~/.dev/tags"
|
||||
nnoremap gt :cs find 1 <C-R>=expand("<cword>")<CR><CR>
|
||||
nnoremap gs :cs find 4 <C-R>=expand("<cword>")<CR><CR>
|
||||
nnoremap gb <c-o>
|
||||
nnoremap gh :FSHere<CR>
|
||||
|
||||
nnoremap oo :browse oldfiles<CR>
|
||||
nnoremap XX :qall!<CR>
|
||||
|
||||
" PLUGIN: TAGBAR
|
||||
nmap <F12> :TagbarToggle<CR>
|
||||
let g:tagbar_ctags_bin = "ectags"
|
||||
|
||||
" PLUGIN: EASY ALIGN
|
||||
xmap ga <Plug>(EasyAlign)
|
||||
nmap ga <Plug>(EasyAlign)
|
||||
|
||||
" Compile Stuff
|
||||
nnoremap mm :call MyMake()<CR>
|
||||
nnoremap mr :!clear && %:p:r<CR>
|
||||
function MyMake()
|
||||
:silent !clear
|
||||
if filereadable("Makefile")
|
||||
:w! | !make
|
||||
else
|
||||
:w! | !cc -Wall -g -O0 -o %:p:r -lsndio %:p
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" CUSTOM: NO CLUTTER PASTE MODE
|
||||
nnoremap <silent> <Tab> :call TogglePaste()<CR>
|
||||
let g:paste=0
|
||||
function! TogglePaste()
|
||||
if (g:paste == 0)
|
||||
:set paste nolist nonumber |
|
||||
\ echo "-- PASTE --"
|
||||
let g:paste=1
|
||||
else
|
||||
:set nopaste list number |
|
||||
\ echo "-- NOPASTE --"
|
||||
let g:paste=0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" CUSTOM: COPY ACROSS VIM INSTANCES
|
||||
vnoremap vy :call VisualYank()<CR>
|
||||
nnoremap vp :call VisualPaste()<CR>
|
||||
let s:temp_file_path = $HOME . '/.cache/vim-snap'
|
||||
function! VisualYank()
|
||||
call writefile(getline(getpos("'<")[1],
|
||||
\ getpos("'>")[1]), s:temp_file_path)
|
||||
endfunction
|
||||
function! VisualPaste()
|
||||
let file_msg = readfile(s:temp_file_path)
|
||||
call append(line("."), file_msg)
|
||||
endfunction
|
||||
|
||||
" CUSTOM: HTMLENCODE WITHOUT PRE
|
||||
function! BlogEncode()
|
||||
:%s/>/\>/g | %s/</\</g | %s/<pre>/<pre>/g | %s/<\/pre>/<\/pre>/g
|
||||
endfunction
|
||||
|
||||
augroup mystuff
|
||||
au!
|
||||
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
||||
@ -292,3 +95,284 @@ augroup mystuff
|
||||
au BufRead,BufNewFile Makefile,/usr/src/*.c,/usr/src/*.h,*.gmk setl sw=8 sts=8 noet
|
||||
au BufWritePost vimrc so ~/.vim/vimrc
|
||||
augroup end
|
||||
|
||||
" set autochdir
|
||||
" set shm+=I
|
||||
" set path+=.,**
|
||||
" set mouse=v
|
||||
" set laststatus=2
|
||||
" set backspace=indent,eol,start
|
||||
"
|
||||
" set nonumber
|
||||
" set cursorline
|
||||
" set scrolloff=3
|
||||
" set spelllang=de,en
|
||||
"
|
||||
" syntax off
|
||||
" filetype on
|
||||
"
|
||||
" set spelllang=de,en
|
||||
" let mapleader = ","
|
||||
"
|
||||
" " * and # are only highlighting
|
||||
" " n searches in the direction of * or #
|
||||
" " nnoremap * *``
|
||||
" " nnoremap # #``
|
||||
" " nnoremap n <S-n>
|
||||
"
|
||||
" " SMOOTH SCROLLING
|
||||
" set t_TI=[4?h
|
||||
" set t_TE=[4?l
|
||||
"
|
||||
" " INDENTATION
|
||||
" set noautoindent
|
||||
" set nosmartindent
|
||||
" set nocindent
|
||||
"
|
||||
" " DIFF
|
||||
" set formatoptions=crolj
|
||||
"
|
||||
" " SEARCH
|
||||
" set hlsearch
|
||||
" set ignorecase
|
||||
" set smartcase
|
||||
"
|
||||
" " SPACES (TABS)
|
||||
" set tabstop=8
|
||||
" set shiftwidth=4
|
||||
" let &softtabstop=&shiftwidth
|
||||
"
|
||||
" set expandtab
|
||||
" set smarttab
|
||||
"
|
||||
" set textwidth=72
|
||||
" " set colorcolumn=72
|
||||
" set formatprg=par\ -w72q
|
||||
"
|
||||
" set list
|
||||
" set listchars=tab:>_,trail:>
|
||||
" set fillchars=vert:\|,eob:\
|
||||
"
|
||||
" set showcmd
|
||||
" set clipboard=unnamedplus
|
||||
"
|
||||
" " C specific highlighting
|
||||
" let c_space_errors=1
|
||||
" let c_gnu=1
|
||||
" let c_comment_strings=1
|
||||
" let c_curly_error=1
|
||||
" "set makeprg=cc\ -o\ %:r\ %
|
||||
" set autowrite
|
||||
"
|
||||
" " TEMPORARY FILES
|
||||
" set undofile
|
||||
" set undodir=~/.local/vim/undo//
|
||||
" set backup
|
||||
" set backupcopy=yes
|
||||
" set backupdir=~/.local/vim/backup//
|
||||
" set directory=~/.local/vim/swapfiles//
|
||||
" set updatetime=2000
|
||||
" set updatecount=100
|
||||
" silent execute '!mkdir -p ~/.local/vim/backup ~/.local/vim/undo ~/.local/vim/swapfiles'
|
||||
"
|
||||
" " TAB LINE
|
||||
" set tabline=%!Tabline()
|
||||
" function! Tabline() abort
|
||||
" let l:line = ''
|
||||
" for l:i in range(1, tabpagenr('$'))
|
||||
" if l:i == tabpagenr()
|
||||
" let l:line .= '%#TabLineSel#'
|
||||
" else
|
||||
" let l:line .= '%#TabLine#'
|
||||
" endif
|
||||
" let l:label = fnamemodify(
|
||||
" \ bufname(tabpagebuflist(l:i)[tabpagewinnr(l:i) - 1]), ':t' )
|
||||
" let l:line .= ' ' . l:label . ' '
|
||||
" endfor
|
||||
" let l:line .= '%#TabLineFill#'
|
||||
" return l:line
|
||||
" endfunction
|
||||
"
|
||||
" " CREATE DIRECTORIES
|
||||
" silent execute 'cs add ~/.dev/cscope.out'
|
||||
" set csprg=cscope\ -C
|
||||
" set cst
|
||||
" set cspc=9
|
||||
"
|
||||
" " LOOK N FEEL
|
||||
" set t_Co=256
|
||||
" set t_ut=
|
||||
" let g:is_posix=1
|
||||
"
|
||||
" set background=dark
|
||||
" colorscheme lucius
|
||||
"
|
||||
"
|
||||
"
|
||||
" " " MY THEME
|
||||
" " hi ColorColumn ctermbg=234 ctermfg=249 cterm=NONE
|
||||
" " hi CursorLine ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi CursorLineNr ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi LineNr ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
" " hi Comment ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
" " hi Constant ctermbg=NONE ctermfg=251 cterm=italic
|
||||
" " hi Directory ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Error ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi ErrorMsg ctermbg=NONE ctermfg=196 cterm=NONE
|
||||
" " hi Folded ctermbg=NONE ctermfg=246 cterm=inverse
|
||||
" " hi Identifier ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Identifier ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi IncSearch ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
" " hi MatchParen ctermbg=NONE ctermfg=202 cterm=bold
|
||||
" " hi NonText ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Normal ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Pmenu ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
" " hi PmenuSel ctermbg=NONE ctermfg=251 cterm=bold
|
||||
" " hi PreProc ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
" " hi Search ctermbg=NONE ctermfg=251 cterm=inverse
|
||||
" " hi SignColumn ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Special ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi SpecialComment ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi SpecialKey ctermbg=NONE ctermfg=239 cterm=NONE
|
||||
" " hi Statement ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
" " hi Statement ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi String ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
" " hi TODO ctermbg=NONE ctermfg=246 cterm=italic
|
||||
" " hi TabLine ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
" " hi TabLineFill ctermbg=NONE ctermfg=240 cterm=NONE
|
||||
" " hi TabLineSel ctermbg=NONE ctermfg=249 cterm=NONE
|
||||
" " hi Title ctermbg=NONE ctermfg=246 cterm=bold
|
||||
" " hi Type ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Underlined ctermbg=NONE ctermfg=251 cterm=underline
|
||||
" " hi VisualNOS ctermbg=NONE ctermfg=246 cterm=NONE
|
||||
" " hi WarningMsg ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
" " hi Wildmenu ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
"
|
||||
" " VIMDIFF COLORS
|
||||
" hi DiffAdd ctermbg=22 ctermfg=NONE cterm=NONE
|
||||
" hi DiffDelete ctermbg=234 ctermfg=NONE cterm=NONE
|
||||
" hi DiffChange ctermbg=234 ctermfg=NONE cterm=NONE
|
||||
" hi DiffText ctermbg=NONE ctermfg=NONE cterm=NONE
|
||||
"
|
||||
" " SPLIT AND FOLD COLORS
|
||||
" hi VertSplit ctermbg=NONE ctermfg=246 cterm=NONE
|
||||
" hi FoldColumn ctermbg=NONE ctermfg=251 cterm=NONE
|
||||
" hi Folded ctermbg=233 ctermfg=251 cterm=NONE
|
||||
"
|
||||
" " SPELL COLOR
|
||||
" hi SpellBad ctermbg=52 ctermfg=NONE
|
||||
" hi SpellCap ctermbg=22 ctermfg=NONE cterm=NONE
|
||||
" hi SpellRare ctermbg=130 ctermfg=NONE
|
||||
"
|
||||
" " C+PgUp/PgDown
|
||||
" nnoremap gn :next<CR>
|
||||
" nnoremap gp :prev<CR>
|
||||
"
|
||||
" " NAVIGATE ON VISUAL LINES (SOFT WRAP)
|
||||
" imap <silent> <Down> <C-o> gj
|
||||
" imap <silent> <Up> <C-o> gk
|
||||
" nmap <silent> <Down> gj
|
||||
" nmap <silent> <Up> gk
|
||||
"
|
||||
" " USE ARROW / VIM KEYS INSIDE OMNIBOX
|
||||
" inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
|
||||
" inoremap <expr> k pumvisible() ? '<C-p>' : 'k'
|
||||
" inoremap <expr> <Down> pumvisible() ? '<C-n>' : '<Down>'
|
||||
" inoremap <expr> <Up> pumvisible() ? '<C-p>' : '<Up>'
|
||||
"
|
||||
" " NETRW
|
||||
" let g:netrw_banner = 0
|
||||
" let g:netrw_browse_split = 3
|
||||
" let g:netrw_liststyle = 3
|
||||
" let g:netrw_ctags = "ectags"
|
||||
" let g:netrw_silent = 1
|
||||
" let g:netrw_sftp_cmd = "sftp -q"
|
||||
" let g:netrw_scp_cmd = "scp -q"
|
||||
"
|
||||
" " " STATUSLINE, AIRLINE/POWERLINE IS FOR NOOBS
|
||||
" " set statusline=%#VisualNOS#
|
||||
" " set statusline+=%F\ %{&filetype}
|
||||
" " set statusline+=%=
|
||||
" " set statusline+=%m%r%h%w%q
|
||||
" " set statusline+=\ %{&fileformat}/%{&fileencoding?&fileencoding:&encoding}
|
||||
" " set statusline+=\ dec:%b\ hex:%B
|
||||
" " " set statusline+=\ count:%{(mode()=='V')?wordcount().visual_words:wordcount().words}w
|
||||
" " " set statusline+=/%{(mode()=='V')?wordcount().visual_chars:wordcount().chars}c
|
||||
" " set statusline+=\ line:%l\ col:%c
|
||||
" " set statusline+=\ %p%%
|
||||
" " set statusline+=\
|
||||
" "
|
||||
" " " ITALIC FIX
|
||||
" " set t_ZH=[3m
|
||||
" " set t_ZR=[23m
|
||||
"
|
||||
"
|
||||
" " OPEN FILE
|
||||
" " nnoremap <C-t> :Texplore<CR>
|
||||
" nnoremap <C-t> :Files<CR>
|
||||
" inoremap <C-t> <ESC>:Files<CR>
|
||||
"
|
||||
" " TAGS FILE
|
||||
" set tags="~/.dev/tags"
|
||||
" nnoremap gt :cs find 1 <C-R>=expand("<cword>")<CR><CR>
|
||||
" nnoremap gs :cs find 4 <C-R>=expand("<cword>")<CR><CR>
|
||||
" nnoremap gb <c-o>
|
||||
" nnoremap gh :FSHere<CR>
|
||||
"
|
||||
" nnoremap oo :browse oldfiles<CR>
|
||||
" nnoremap XX :qall!<CR>
|
||||
"
|
||||
" " PLUGIN: TAGBAR
|
||||
" nmap <F12> :TagbarToggle<CR>
|
||||
" let g:tagbar_ctags_bin = "ectags"
|
||||
"
|
||||
" " PLUGIN: EASY ALIGN
|
||||
" xmap ga <Plug>(EasyAlign)
|
||||
" nmap ga <Plug>(EasyAlign)
|
||||
"
|
||||
" " Compile Stuff
|
||||
" nnoremap mm :call MyMake()<CR>
|
||||
" nnoremap mr :!clear && %:p:r<CR>
|
||||
" function MyMake()
|
||||
" :silent !clear
|
||||
" if filereadable("Makefile")
|
||||
" :w! | !make
|
||||
" else
|
||||
" :w! | !cc -Wall -g -O0 -o %:p:r -lsndio %:p
|
||||
" endif
|
||||
" endfunction
|
||||
"
|
||||
" " CUSTOM: NO CLUTTER PASTE MODE
|
||||
" nnoremap <silent> <Tab> :call TogglePaste()<CR>
|
||||
" let g:paste=0
|
||||
" function! TogglePaste()
|
||||
" if (g:paste == 0)
|
||||
" :set paste nolist nonumber |
|
||||
" \ echo "-- PASTE --"
|
||||
" let g:paste=1
|
||||
" else
|
||||
" :set nopaste list number |
|
||||
" \ echo "-- NOPASTE --"
|
||||
" let g:paste=0
|
||||
" endif
|
||||
" endfunction
|
||||
"
|
||||
" " CUSTOM: COPY ACROSS VIM INSTANCES
|
||||
" vnoremap vy :call VisualYank()<CR>
|
||||
" nnoremap vp :call VisualPaste()<CR>
|
||||
" let s:temp_file_path = $HOME . '/.cache/vim-snap'
|
||||
" function! VisualYank()
|
||||
" call writefile(getline(getpos("'<")[1],
|
||||
" \ getpos("'>")[1]), s:temp_file_path)
|
||||
" endfunction
|
||||
" function! VisualPaste()
|
||||
" let file_msg = readfile(s:temp_file_path)
|
||||
" call append(line("."), file_msg)
|
||||
" endfunction
|
||||
"
|
||||
" " CUSTOM: HTMLENCODE WITHOUT PRE
|
||||
" function! BlogEncode()
|
||||
" :%s/>/\>/g | %s/</\</g | %s/<pre>/<pre>/g | %s/<\/pre>/<\/pre>/g
|
||||
" endfunction
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user