vim na FreeBSD nie reaguje poprawnie na klawisze strzałek i inne zachowania podobne do vi

9

Próbowałem użyć vima na FreeBSD (przez ssh na terminalu kompatybilnym z Linux xterm). Jednak vim zachowuje się podobnie jak vi po wyjęciu z pudełka. Na przykład nie reaguje na klawisz usuwania, wstawia znak F zamiast przechodzić w górę w trybie wstawiania itp.

Na FreeBSD X11 nie jest zainstalowany.

Edycja : zgodnie z prośbą publikujęvim --version

# vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 28 2010 11:48:54)
Included patches: 1-6, 8-35, 37-48, 50-70, 73, 75-87, 90-92, 94-100, 102-137, 139-149, 151-171,     173-190, 192-193, 195-203, 206-211, 213-215, 217-218, 220-232, 234-246, 251-259, 261-301, 303-319, 321-322, 324-335, 337-351, 353-361, 363, 366-371, 373, 375-376, 378-383, 385-387, 389-398, 401-402, 404-411
Compiled by [email protected]
Big version without GUI.  Features included (+) or not (-):
+arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent 
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+cryptv +cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic 
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path 
+float +folding -footer +fork() -gettext -hangul_input +iconv +insert_expand 
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap 
+menu +mksession +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm 
-mouse_jsbterm +mouse_netterm +mouse_sysmouse +mouse_xterm +multi_byte 
+multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra -perl +postscript 
+printer -profile -python +quickfix +reltime +rightleft -ruby +scrollbind 
+signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax 
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse 
+textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual 
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup 
-X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save 
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/local/share/vim"
Compilation: cc -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -O2 -pipe -fno-strict-aliasing  -D_FORTIFY_SOURCE=1        
Linking: cc   -L/usr/local/lib -o vim       -lm -ltermlib -liconv  
Maciej Piechotka
źródło
Jakiej mapy klawiszy używasz na Linux-ie?
gvkv
uk (ustawiony w /etc/conf.d/keymaps). W X11 uk + trochę modyfikacji. Używam terminala gnome.
Maciej Piechotka,
Czy jest jakiś powód do głosowania?
Maciej Piechotka

Odpowiedzi:

8

Jest to ogólnie problem z ustawieniem terminala. Sprawdź zmienną środowiskową $ TERM po stronie FreeBSD i sprawdź ustawienia lokalnego terminala. Jest to prawie na pewno problem z klawiszami strzałek.

Oprócz tego upewnij się, że zastosowano standardowy zestaw ustawień „unbreak my vim” .vimrc.

set nocompat
set backspace=eol,start,indent

Jeśli jesteś pewien, że ustawienia terminala są prawidłowe, ale nadal masz problemy z backspace, spójrz na pomoc vima

:help fixdel
użytkownik455
źródło
7

Niedawno skonfigurowałem serwer FreeBSD 8.2 po większości pracy z Linuksem i miałem taką samą frustrację z VI. Problem polega na tym, że FreeBSD ma zupełnie inne ustawienia domyślne dla VI niż większość dystrybucji Linuksa.

Dzięki natknięciu się na tę stronę: http://jmcpherson.org/vimrc.html , oto jak skonfigurowałem mój plik .vimrc, aby VI działał tak, jak zwykle:

set nocompatible
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
set virtualedit=all
set bs=2

Do utworzenia pliku użyłem edytora nano, ponieważ VI sprawiał mi tyle kłopotów.

Dla każdego, kto nie zna VI, po prostu utwórz plik tekstowy w swoim katalogu domowym o nazwie .vimrc, wklej zawartość pola kodu powyżej i zapisz. Możesz też wypróbować dowolną z tych opcji bezpośrednio w VI, wpisując :opcję a następnie, :set rulernaciskając klawisz Enter.

Ben Baron
źródło
Gdy interpretuję to pytanie, wygląda na to, że nie pytał on tylko o klawisz usuwania lub po prostu klawisze strzałek wpisujących litery w trybie wstawiania. Wydaje mi się, że jest użytkownikiem Linuksa korzystającym z FreeBSD po raz pierwszy i jest sfrustrowany wartościami domyślnymi VI w porównaniu ze standardowymi wartościami domyślnymi używanymi w większości dystrybucji Linuksa. Opcje, które zamieściłem, sprawią, że VI będzie działał tak jak zwykle w Linuksie podczas instalowania vima. Myślę więc, że to dobry dodatek do zaakceptowanej odpowiedzi, a ponadto nie ma potrzeby bałagania się przy ustawieniach terminalu (przynajmniej nie musiałem). Mam nadzieję, że moje informacje pomagają innym.
Ben Baron
3

Czy piszesz „vim”, czy zakładasz, że pisanie „vi” uruchamia Vima?

Na FreeBSD polecenie „vi” najprawdopodobniej otrzyma nvi .

Warren Young
źródło
Piszę vim.
Maciej Piechotka,
W terminalu użyj: wpisz -a vi i wpisz -a vim Następnie: ls -ld / usr / bin / vi i ls -ld / usr / bin / vim, aby sprawdzić, czy istnieje dowiązanie symboliczne.
bitek
which vim-> /usr/local/bin/vim, which vi-> /usr/bin/vi. Nie mam type-> żadnego takiego polecenia. Żadne nie jest dowiązaniem symbolicznym.
Maciej Piechotka,
„typ” jest wbudowanym Bash. „type -p” to to samo, co „which”, a „type -a” po prostu to przedłuża. Czy możesz opublikować wynik „vim --version”?
Warren Young,
opublikowany w głównym poście
Maciej Piechotka,
1

przypuszczam, że przyczyną tego problemu może być:

  1. Może być przez pomyłkę w twoim pliku vimrc. Ktoś ustawił, że vim zachowuje się jak vi.
    set compatible
  2. Twój vim wskazuje na oryginalny plik binarny vi.
Hemant
źródło
Jak już wspomniano, nie wskazuje. Nie mam żadnego vimrcani podobnego pliku.
Maciej Piechotka,
@Maciej, ale czy freebsd ustawia wartości domyślne. Gdybym miał nikiel dla każdej dystrybucji, która zepsuła domyślne ustawienia vima ... czy przeczytałeś: h zgodny? czy sprawdziłeś plik vimrc, który prawdopodobnie ma freebsd?
ksenoterrakid
@Maciej: sprawdziłeś .vimrc?
Hemant,
Nie mam .vimrc
Maciej Piechotka
1

Pierwszą rzeczą, którą robię po zainstalowaniu vima:

cp ${LOCALBASE:-"/usr/local"}/share/vim/vim*/vimrc_example.vim ~/.vimrc

To ma najbardziej rozsądne ustawienia domyślne, z tym wyjątkiem, że ustawiam background = dark.

Mel
źródło
Dzięki za to. Naprawiono dla mnie wiele rzeczy. Oczywiście ma wiele dodatkowych rzeczy, ale to dobry punkt wyjścia.
beatgammit