Show Marks plugin causes marks to 'pop in' after around 4 seconds
-
13-04-2021 - |
Frage
I am using the Show Marks plugin in vim to display where the marks are. The displayed marks can be toggled on/off with the \mt
command. When I first open a document the marks are off like so:
Then about 4 seconds later with absolutely no action on my part, the left hand mark margin pops in like so:
I have three questions:
- What are those default marks?
- Why is it taking several seconds for it to get displayed?
- How can I force the mark margin to activate/deactivate at start up?
Here is .vimrc file (I know it's messy, but in the words of Colonel Walter E. Kurtz: "You have a right to kill me...but you have no right to judge me.")
set modeline "These two lines display the file name at the bottom
set ls=2
set undodir=~/.vim/undodir
set undofile
set undolevels=100 "maximum number of changes that can be undone
set undoreload=10000 "maximum number lines to save for undo on a buffer reload
"Keep undo history when switching buffers
set hidden
set nocompatible "Don't use vi-compatibility mode
set backspace=2 "Use the smart version of backspace
set expandtab "Tab-related settings
set number "Line Numbers
set shiftwidth=4
set showcmd
"set ts=4 "4 columns for tabs
set smarttab
set smartindent "Indent every time you press enter
set scrolloff=999 "Cursor Always in middle
set ruler "Always display row/column info
set tabpagemax=100 "I want a lot of tabs
set tags=tags;/
imap jj <Esc> "Map jj to escape
map <S-j> :bp<CR> "Map F7 to previous tab
map <S-k> :bn<CR> "Map F7 to next tab
map <Space> <PageDown> "Map space bar to next page down
set hlsearch "Highlight search strings
"map <S-u> <C-u> "Map page movement keys to shift as well
"map <S-d> <C-d> "Map page movement keys to shift as well
"map <S-b> <C-b> "Map page movement keys to shift as well
"map <S-f> <C-f> "Map page movement keys to shift as well
map <F2> :NERDTreeToggle<CR> "Toggle Nerd Tree on/off
syntax on
"for Syntastic
function! BufSel(pattern)
let bufcount = bufnr("$")
let currbufnr = 1
let nummatches = 0
let firstmatchingbufnr = 0
while currbufnr <= bufcount
if(bufexists(currbufnr))
let currbufname = bufname(currbufnr)
if(match(currbufname, a:pattern) > -1)
echo currbufnr . ": ". bufname(currbufnr)
let nummatches += 1
let firstmatchingbufnr = currbufnr
endif
endif
let currbufnr = currbufnr + 1
endwhile
if(nummatches == 1)
execute ":buffer ". firstmatchingbufnr
elseif(nummatches > 1)
let desiredbufnr = input("Enter buffer number: ")
if(strlen(desiredbufnr) != 0)
execute ":buffer ". desiredbufnr
endif
else
echo "No matching buffers"
endif
endfunction
"Bind the BufSel() function to a user-command
command! -nargs=1 Bs :call BufSel("<args>")
call pathogen#infect()
"For syntax checking (syntastic)
let g:syntastic_auto_loc_list=1
let g:syntastic_disabled_filetypes=['html']
let g:syntastic_enable_signs=1
"set statusline=%{SyntasticStatuslineFlag()}
set statusline=%<\ %n:%f\ %m%r%y%{SyntasticStatuslineFlag()}%=line:\ %l\ of\ %L\ (%p%%),\ col:\ %c%V\ \ \ \ \ Modified:\ %{Time()}
function! Time()
return strftime("%c", getftime(bufname("%")))
endfunction
"For jsbeautify
map <F9> :call g:Jsbeautify()<CR>
"Check PHP Syntax
:autocmd FileType php noremap <C-L> :!php -l %<CR>
"Beautify PHP Syntax In 4 steps
"1) reduce all multiple blank lines to a single blank line
"2) change all blank lines to something unique like 'if(true)echo('it puts the lotion on the skin');'
"3) apply beautifier
"4) change unique quote back to new line
func! ParsePHP()
:exe 'g/^\_$\n\_^$/d'
:%s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge
:exe '%!php_beautifier --filters "ArrayNested() IndentStyles(style=k&r)"'
:%s/$x = 'It puts the lotion on the skin';//ge
endfunc
map <F8> :call ParsePHP()<CR>
Lösung
From the help files:
let g:showmarks_enable=0
The default marks could be things like your last changed line.
:h `[
But they look like numerical marks, you may have just set them during a previous edit? I'm guessing they will go away if you type :delmarks 0 1 2 3 4 5 6 7
etc
Edit: This is also in the help files which probably explains the opening after 4 seconds:
ShowMarks is activated by the |CursorHold| |autocommand| which is triggered
every |updatetime| milliseconds. This is set to 4000(4 seconds) by default.
If this is too slow, setting it to a lower value will make it more responsive.
Andere Tipps
Those marks are special marks, which Joachim mentioned.
To only show the marks you have set yourself, i.e. the "normal marks", add this to your .vimrc file:
let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
I was also looking for these marks that I didn't set. This link
http://vim.wikia.com/wiki/Using_marks
explains at the bottom of the page the built-in marks. Look for "Special marks".