Vim에서 일반적으로 가지고있는 문제는 윈도우에서 버퍼를 바꿀 때 (:[n]b
또는 MiniBufExpl 중 하나 일 때) 커서 위치는 그대로 유지되지만 윈도우는 항상 커서가있는 행이 중간에 있습니다.Vim은 버퍼를 바꿀 때 윈도우 위치를 유지합니다.
커서가 창 중간에 위치해야하는 곳이 아닌 창 상단/하단이 어디에 있는지 시각적으로 기억하기 때문에 정말 짜증이납니다.
버퍼를 통해 창 위치를 유지하기 위해 변경할 수있는 설정이 있습니까?
Vim에서 일반적으로 가지고있는 문제는 윈도우에서 버퍼를 바꿀 때 (:[n]b
또는 MiniBufExpl 중 하나 일 때) 커서 위치는 그대로 유지되지만 윈도우는 항상 커서가있는 행이 중간에 있습니다.Vim은 버퍼를 바꿀 때 윈도우 위치를 유지합니다.
커서가 창 중간에 위치해야하는 곳이 아닌 창 상단/하단이 어디에 있는지 시각적으로 기억하기 때문에 정말 짜증이납니다.
버퍼를 통해 창 위치를 유지하기 위해 변경할 수있는 설정이 있습니까?
귀하의 질문을 읽어주기 전까지는 문제가되지 않았습니다.
이 시도 :
if v:version >= 700
au BufLeave * let b:winview = winsaveview()
au BufEnter * if(exists('b:winview')) | call winrestview(b:winview) | endif
endif
@dnets 게시 한 해당 스크립트는 항상 파일의 동일한 위치에 불구하고, 나를 위해 화면 상단에 커서를 설정합니다.
나는 ( http://vim.wikia.com/wiki/Avoid_scrolling_when_switch_buffers에서 복사)이" Save current view settings on a per-window, per-buffer basis.
function! AutoSaveWinView()
if !exists("w:SavedBufView")
let w:SavedBufView = {}
endif
let w:SavedBufView[bufnr("%")] = winsaveview()
endfunction
" Restore current view settings.
function! AutoRestoreWinView()
let buf = bufnr("%")
if exists("w:SavedBufView") && has_key(w:SavedBufView, buf)
let v = winsaveview()
let atStartOfFile = v.lnum == 1 && v.col == 0
if atStartOfFile && !&diff
call winrestview(w:SavedBufView[buf])
endif
unlet w:SavedBufView[buf]
endif
endfunction
" When switching buffers, preserve window view.
if v:version >= 700
autocmd BufLeave * call AutoSaveWinView()
autocmd BufEnter * call AutoRestoreWinView()
endif
로 변경 그리고 지금은 화면의 커서 위치 저장, 원하는대로 작동합니다.
나도 귀찮게하지 않았다. 그러나이 맵핑을 사용 했었습니다 :'nmap : bn '' ' –
tungd
좋은 작업, @poisonedbit, VIM 용 프로그래밍 매뉴얼을 추천 해 주시겠습니까? – Art
@Art Vim에서'h usr_41.txt'을 시도하십시오; Steve Losh의 [Vimscript 어려운 길을 배우십시오] (http://learnvimscriptthehardway.stevelosh.com/). – echristopherson