내 우분투 LTS 12.04에는 vim 편집기가 있습니다. 파일을 열고 단락으로 이동하여 vim을 다시 열면 커서가 항상 파일의 시작 부분으로 이동합니다.
이것은 예상 된 동작이 아닙니다. vim은 파일을 닫은 후 마지막 읽기 위치를 어떻게 기억합니까?
나는 vi
또한 시도 했지만 결과는 동일합니다.
내 우분투 LTS 12.04에는 vim 편집기가 있습니다. 파일을 열고 단락으로 이동하여 vim을 다시 열면 커서가 항상 파일의 시작 부분으로 이동합니다.
이것은 예상 된 동작이 아닙니다. vim은 파일을 닫은 후 마지막 읽기 위치를 어떻게 기억합니까?
나는 vi
또한 시도 했지만 결과는 동일합니다.
답변:
해결 :
/ etc / vim / vimrc
필요한 기능이 이미 포함되어 있습니다. 주석 처리를 제거하면됩니다.
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
(실제로 /usr/share/vim/vim73/vimrc_example.vim을 참조 할 수도 있습니다)
-rw-r--r-- 1 root root
; 그게 문제가 될까요?
나는이 같은 문제가 있었고 내 홈 디렉토리의 .viminfo 파일의 소유권이 잘못되었다는 것이 밝혀졌습니다. root : root가 소유했습니다.
파일 소유권을 자신으로 변경하여 파일 소유권을 수정 한 후 파일 위치를 기억하면 다시 작동하기 시작했습니다.
sudo
. 환경을 변경하지는 않습니다 (적어도 대부분) : running을 시도 sudo bash -c 'echo $HOME'
하면 루트 디렉토리 대신 홈 디렉토리를 얻을 수 있습니다.
이 위키 게시가 해결책을 제공 할 수 있다고 생각합니다. 나는 위치를 회복하는 것이 예상되는 행동이라고 믿지 않습니다. http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session
vim-lastplace (저는 저자입니다) 라는 플러그인이 있습니다 . 일반적으로 새 메시지를 편집하고 커밋 메시지 파일의 맨 위에서 시작하기 때문에 커밋 메시지를 무시하여 위의 제안을 개선합니다.
Lunar Mushrooms 솔루션에 실수가 있습니다. 수정 사항은 다음과 같습니다.
if has("autocmd")
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" Also don't do it when the mark is in the first line, that is the default
" position when opening a file.
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
endif
vim
합니다. 분명히 이것은 문제를 해결했습니다. 오류는 어디에 있습니까?
"
주석을 해제하려면 줄의 시작 부분에서 문자 를 삭제하면 됩니다. "첫 번째 솔루션을 복사 / 붙여 넣기"할 필요가 없습니다.