VIM в OpenVms, Backspace не работает

759
lamwaiman1988

Я telnet с использованием OpenVms и vim по умолчанию не было. Я должен портировать vim в OpenVms самостоятельно. У меня нет контроля над самой машиной.

Я скачал копию vim72 для OpenVms и разархивировал ее в каталог, а затем определил символ для ссылки на VIM.EXE.

TGSM_OPR> sh sym vim VIM == "$GSMACPTUSER:[USER.TGSM_OPR.AXP.RAYMOND_LAM.VIM72]VIM.EXE" 

Я скопировал файл vimrc в каталог sys $ login и начал использовать vim.

Я обнаружил, что не могу использовать клавишу возврата, ни Ctrl + H не работают в некоторых сценариях. Если я начинаю новый документ, Backspace работает, и я могу Backspace, когда захочу. Однако, если я открою уже существующий файл, в котором есть какой-то текст, я не смогу вернуть его назад.

Я не знаю, какой .vimrc он использует.

Я обнаружил, что есть GSMACPTUSER: [USER.TGSM_OPR.AXP.RAYMOND_LAM.VIM72] VIMRC.; 6. Но после редактирования, скажем, добавьте строку «set number», это не даст эффекта (без номера).

Редактировать: я копирую содержимое vimrc. в .vimrc внутри sys $ login, и некоторые функции работают, но некоторые нет. Showmode работает, номер строки не работает, backspace не работает, хотя я могу использовать REPLACE (дважды нажать insert), чтобы перезаписать слова.

Вот содержимое .vimrc, которое я создал в sys $ login:

" An example for a vimrc file. " " Maintainer: Bram Moolenaar <Bram@vim.org> " Last change: 2008 Jul 02 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc " for Amiga: s:.vimrc " for MS-DOS and Win32: $VIM\_vimrc " for OpenVMS: sys$login:.vimrc  " When started as "evim", evim.vim will already have done these settings.  set showmode set number set tabstop=8 set shiftwidth=8  if v:progname =~? "evim" finish endif  " Use Vim settings, rather then Vi settings (much better!). " This must be first, because it changes other options as a side effect. set nocompatible  " allow backspacing over everything in insert mode set backspace=indent,eol,start set backspace=2  if has("vms") set nobackup " do not keep a backup file, use versions instead hi search ctermbg=LightBlue let Tlist_Ctags_Cmd="vim:ctags.exe" " for taglist plugin else set backup " keep a backup file endif set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands set incsearch " do incremental searching  " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries " let &guioptions = substitute(&guioptions, "t", "", "g")  " Don't use Ex mode, use Q for formatting map Q gq  " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, " so that you can undo CTRL-U after inserting a line break. inoremap <C-U> <C-G>u<C-U>  " In many terminal emulators the mouse works just fine, thus enable it. if has('mouse') set mouse=a endif  " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif  " Only do this part when compiled with support for autocommands. if has("autocmd")  " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. " Also load indent files, to automatically do language-dependent indenting. filetype plugin indent on  " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au!  " For all text files set 'textwidth' to 78 characters. autocmd FileType text setlocal textwidth=78  " 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  augroup END  else  set autoindent " always set autoindenting on  endif " has("autocmd")  " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. " Only define it when not defined already. if !exists(":DiffOrig") command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis \ | wincmd p | diffthis endif 
2

2 ответа на вопрос

1
garyjohn

Чтобы найти места, где ваш Vim ищет файлы vimrc, выполните

:version 

и посмотрите на строки примерно на половину или две трети пути вниз по странице. Чтобы увидеть, какие файлы Vim на самом деле читает при запуске, выполните

:scriptnames 

А vimrcдолжен быть наверху этого списка. Чтобы увидеть, установлена ​​ли конкретная опция из вашего vimrc, скажем, «число», например, выполните

:verbose set number? 

Эта команда покажет значение опции, и если она была установлена ​​из какого-либо файла запуска, она скажет: «Последний набор из <имя файла>».

Поведение клавиши Backspace отличается в обычном режиме и в режиме вставки. Если у вас все еще есть проблемы, это поможет вам точно знать, какие шаги вы предпринимаете и каковы результаты.

Когда во вставке, возврат не перемещается, когда он встречает уже существующее слово. Для нормального режима, я забыл, я проверю это в следующий понедельник. lamwaiman1988 13 лет назад 0
Как вы, вероятно, знаете, возврат по существующему слову в режиме вставки контролируется опцией 'backspace', и установка этого значения в вашем vimrc должна позволять это, так что это еще один признак того, что ваш vimrc не читается. garyjohn 13 лет назад 0
: scriptname дайте мне sys $ login: .vimrc, и в этом vimrc уже есть "backspace = 2" .... lamwaiman1988 13 лет назад 0
Что печатает `: verbose backspace?`? Это скажет вам, если параметр в .vimrc переопределяется и может сказать вам, если параметр в .vimrc игнорируется. garyjohn 13 лет назад 0
Backspace = (ничего) lamwaiman1988 13 лет назад 0
Если это все, что было напечатано, и не было сообщения, начинающего «Last set from», то либо ваш .vimrc не читается, либо вы назвали vim чем-то, содержащим «evim». Я не понимаю, почему `: scriptnames` показывает, что ваш .vimrc читается еще`: verbose set backspace? `Предполагает, что он не читается. Поскольку я ничего не знаю об OpenVMS, я не знаю, что может произойти. garyjohn 13 лет назад 0
Я не использовал evim. Спасибо за вашу помощь. lamwaiman1988 13 лет назад 0
0
lamwaiman1988

Решение было разделено. Я не знаю причину, но приведенные ниже настройки просто работают. Он появился после попытки многих разных настроек для вызова VIM.EXE.

  1. Предположим, что vim.exe находится в папке $ GSMACPTUSER: [USER.TGSM_OPR.AXP.RAYMOND_LAM.VIM72], должен быть пример файла vimrc, в данном случае его имя VIMRC_EXAMPLE.VIM; 1, это чистый копия vimrc

  2. Скопируйте VIMRC_EXAMPLE.VIM; 1 в sys $ login как .VIMRC. В моем случае sys $ Login - это $ GSMACPTUSER: [USER.TGSM_OPR.AXP]

  3. Используйте dcl для определения символа, необходимого для vim. Например: login.com

  4. В файле dcl есть 2 строки:

    $ VIM: == $ GSMACPTUSER: [USER.TGSM_OPR.AXP.RAYMOND_LAM.VIM72] VIM.EXE

Это должно определить VIM.EXE, чтобы мы могли вызывать VIM через "vim [file-spec]".

$ VIMRUNTIME :== $GSMACPTUSER:[USER.TGSM_OPR.AXP.RAYMOND_LAM.VIM72] 

Я считаю, что этот символ говорит VIM, где искать некоторые конфигурации. Это очень важно.

  1. Запустите dcl один раз, и все работает! Редактировать файл .vimrc можно в sys $ login.