Для файла, расположенного по длинному пути, я заметил, что
положение курсора (из предыдущего сеанса редактирования / открытия) не является постоянным.
После предпринятых действий, о которых сообщается здесь и здесь , проблема все еще появляется.
Запуск этого script.sh
- это минимальный рабочий пример, который позволит вам воспроизвести ту же проблему:
#!/bin/bash
# We create a `test.txt` file:
echo "Hello,
this is line
this is line 5
this is line 7
" > test_file.txt
# We declare a long path directory:
long_path_dir=testing_long_path/mksj/jfhgbus/jfhgdbhsio/kjihu_ijku_okjih/kjhui__okjikol__kjhikjn__/kjnjkmloipokl/polkjioplkmn/lkjiopk/llkkmjilpoi/kkklmn__kojuo/klkjoip_plko/ppplkojiun/klklkjmkiolp___okjn/mnhgfvghbjuio/lkmnjko/MKJNKIL_l/kjhgbhnjmki__jdjdm/kFGESCE_igjhdjd/JDJDKCNS_jdjd/jfjfj_KAJK/lkdjwnmckdjcnm/lsksjiowp___HSNKAL/mCNSJSIEO/ksjcnmsjs/KJSIL/jfhns_OSKL/ksmcmkfjnv_lksjCKSL/kfjdhnbjk_KJSH/KSJAILMK_opoijt/kdjkflmsnkjdu_LALALKJSN/NJNJKS_kskslkmcnbsm/ksjskjnjc/kioikrjsnm/kioikjui/jshncmsjkl/klkopo/NCBCNMA/mkmjnks/ksksmk/klkjh/kioskmnxl/lolOIJS/LOKSJNK/jsojs/mkmcnjkjsu/lolwos/kmkmJKJS/LOLOSPLS/lolskija/lskjmcml/lolksjfh/kjdjskn/LOLXnjijs/laSHHS/lsksmcl/lslsopolsn/lmknf/KSJAO/lolfngi/LOLSNL/lolsnzzjs/mkmdnaj/ldldpokng/lsksiks/lomxkksjm/KSLSKML/kdjdnxjfjfnk/mkmsj
# We create this directory (first remove it, in case it exists):
rm -Rf $long_path_dir
mkdir -p $long_path_dir
# We move the test_file.txt to that directory:
mv test_file.txt $long_path_dir
После запуска этого скрипта мы открываем test_file.txt
:
vim testing_long_path/.../.../test_file.txt
и перейдите к 5-й строке:
Когда мы закрываем файл :q
и открываем его снова, курсор больше не находится в 5-й строке, а в 1-й строке:
Это также происходит с emacs
.
My /etc/vim/vimrc
раскомментировал эти строки:
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
Обновление 1: Использование @Sergio 1-е предложение:
У меня не было файла ~/.vimrc
. Я создал один, в котором я написал следующее:
" Tell vim to remember certain things when we exit
" '10 : marks will be remembered for up to 10 previously edited files
" "100 : will save up to 100 lines for each register
" :20 : up to 20 lines of command-line history will be remembered
" % : saves and restores the buffer list
" n... : where to save the viminfo files
set viminfo='10,\"100,:20,%,n~/.viminfo
function! ResCur()
if line("'\"") <= line("$")
normal! g`"
return 1
endif
endfunction
augroup resCur
autocmd!
autocmd BufWinEnter * call ResCur()
augroup END
При закрытии и открытии снова с помощью vim testing_long_path/.../.../test_file.txt
положение курсора не запоминается.
Обновление 2: Использование @Sergio 2-е предложение:
Вывод :scriptnames
является следующим, в котором /etc/vim/vimrc
не указан.
Обновление 3: При открытии файла через vim testing_long_path/.../.../test_file.txt
и запросе :autocmd BufWinEnter
я получаю: