Klawisze strzałek vi w Linuksie zepsute w trybie wstawiania

95

Moje klawisze strzałek nie działają w domu w trybie wstawiania w vi, po prostu wstawiają nową linię i wielką literę, jak „A”. Czy jest sposób, aby to naprawić?

Josh
źródło
3
Mam na myśli dystrybucję Linuksa?
Miquel
Czy pracują poza domem? :-)
Brian Agnew
4
Oczywiście rozwiązaniem jest emacs. Oczywiście.
Paul Nathan
38
@Paul Nathan - Jeśli rozwiązaniem jest emacs, to nie chcę wiedzieć, w czym jest problem.
Chas. Owens

Odpowiedzi:

107

Zakładam, że używasz Vima, ponieważ jest on oznaczony jako Linux. Próbować:

:set nocompatible

(Możesz skonfigurować swój plik .vimrc z tym, dodając do niego to polecenie. Utwórz nowy plik .vimrc, jeśli nie jest jeszcze obecny w katalogu domowym, uruchom, echo $HOMEaby sprawdzić ścieżkę katalogu domowego.)

Brian Agnew
źródło
7
Upewnij się, że uruchamiasz vi poleceniem, vima nie vi. Większość zaawansowanych i przydatnych funkcji programu vimjest domyślnie wyłączona, chyba że uruchomisz ją za pomocą vim.
pkt
1
@pts - tylko w zepsutych systemach. Uruchamianie vima jako vi na wszystkich moich komputerach działa dobrze; jednak jest kilka okien CentOS, których użyłem, które pokazują zachowanie, o którym mówisz.
Chas. Owens
Czy ktoś może edytować tę odpowiedź, aby uwzględnić jej wygląd w pliku vimrc?
Stephan,
1
@Stephan Add set nocompatiblewe własnej linii w .vimrc
Matthew Wilcoxson
W Ubuntu rozwiązałem to, po prostu instalując vim (sudo apt install vim) od tego momentu na vi działa dobrze z klawiszami strzałek w trybie wstawiania. Edycja: Widzę, że Han już o tym wspomniał poniżej.
pizzamonster
74

Ubuntu jest domyślnie dostarczane z vim-tiny, które nie ma wszystkich dzwonków i gwizdków, które ma vim.

Zrób szybko, sudo apt-get install vimaby uzyskać wszystkie soczyste funkcje, o których wszyscy mówią.

Han
źródło
1
To było dokładnie to, czego potrzebowałem w miętowym Linuksie. Po zainstalowaniu vima nadal mogłem zacząć używać "vi" i całe podświetlanie kodu było teraz włączone. Cóż za fantastyczna wiedza o Linuksie :)
wired00
1
To zadziałało dla mojego Raspberry Pi (Jessie Lite). Doświadczyłem tego problemu, gdy chciałem zabezpieczyć powłokę, ale teraz został on całkowicie rozwiązany :-)
JakeD
35

:set term=builtin_ansi

naprawiłem to dla mnie. Możesz wkleić to do vima w trybie ucieczki (tryb bleep) lub dodać na końcu ~ / .vimrc bez początkowego ":"

Alexx Roche
źródło
: set term = xterm również może działać (i jest łatwiejszy do zapamiętania).
Alexx Roche
FYI :set term=builtin_ansipracował dla mnie. :set term=xtermnie.
FractalSpace
na jednym z moich Linux-ów, których używam export TERM=xtermw wierszu poleceń przed wywołaniem vi, a następnie :set term=xtermw vim 7.2 działa dla mnie
Alexx Roche
Działa idealnie! Dziękuję Ci!
Achmedzianov Danilian
Działa to, aby umożliwić nawigację za pomocą klawiszy strzałek, ale całkowicie zabiło kodowanie kolorami w terminalu.
Ken Ingram
16

vi nie obsługuje klawiszy strzałek w trybie wstawiania. Użyj vim. Chociaż twoje vi może być po prostu linkiem do vima, może być skonfigurowane tak, aby zachowywało się jak "oryginalne" vi i tym samym wyłącza klawisze strzałek. Po prostu wywołaj vim bezpośrednio.

lothar
źródło
Chociaż nie jest to rozwiązanie, jest to najlepsze wyjaśnienie zachowania (imo), wyjaśniające różnicę między vii vim. Ale na moim pudełku vimodbitki command not found: D
Daniel W.
@DanFromGermany Może masz zainstalowany tylko vi, a nie vim. Spróbuj zainstalować vim za pośrednictwem menedżera pakietów systemu Linux, jeśli chcesz go używać.
lothar
:set term=ansipracował dla mnie dzięki Raz . mówisz, że „nie obsługuje”. Zastanawiam się, czy powiedziałeś to, ponieważ vim-tinypakiet ubuntu - używam - różni się od wanilii, viczy też ustawienie terminów będzie działać w tym?
n611x007
8

Jeszcze jedna odmiana: ten problem pojawił się u mnie po kilku zmianach w pliku .vimrc. Wspólne poszukiwania ostatecznie ujawniły, że moje sprytne ponowne odwzorowanie ESC w trybie normalnym nie było dobrym pomysłem. Usunięcie go rozwiązało problem:

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc
Stabledog
źródło
Próbowałem wszystkiego po napotkaniu tego problemu i właśnie tego szukałem, dzięki!
Dan Bartlett
Dzięki za poprawkę, szukałem wszędzie. Masz jakiś pomysł, dlaczego ponowne odwzorowanie ucieczki powoduje problemy?
nonphoto
6

Jedyną rzeczą, która zadziałała, było „: set term = ansi”

Raz
źródło
1
Wydaje się, że to również zadziałało dla mnie przy użyciu kontenera Docker.
ohlando
1
Ten też działał dla mnie. Używam cmd.exe w
systemie
@ CodeCodeO-1-O-log-n, więc z której strony korzystałeś vipo stronie systemu Windows, czy po stronie Ubuntu? :)
n611x007
W systemie Windows uruchomiłem cmd.exe, a następnie włączyłem ssh do serwera ubuntu, a następnie vi do serwera. Ale później zacząłem używać Putty i nie muszę już tego robić, a Putty działa świetnie.
codelogn
3

Miałem ten sam problem z klawiszami strzałek, ale kiedy użyłem tego ustawienia nocp lub nocompatible, mój backspace nie działał poprawnie

z jakiegoś powodu, kiedy instalowałem vima z sudo apt-get install vim, vi nie miał już żadnych problemów ze strzałkami lub backspace

Night5talker
źródło
1

Właśnie miałem problem z klawiszami strzałek po przełączeniu się na używanie git w .vim.

Zainstalowałem to repozytorium - https://github.com/sunaku/.vim

i po godzinnym kopaniu odkryłem, że wtyczka AutoClose (która i tak się nie podobała) złamała klawisze strzałek.

Dokumentacja wtyczki sugeruje, że należy ustawić ttimeoutlen = 100, ale to nie zadziałało! (używając urxvt + screen lub urxvt, a nawet xterm)

Więc usunąłem wtyczkę na końcu.

errordeveloper
źródło
0

Możesz także spróbować „noesckeys”


źródło
0

Miałem ten sam problem podczas używania vim w systemie Windows 8.1 z Cygwin.

Rozwiązanie zadziałało dla mnie, po prostu uruchom następujące polecenie w terminalu Cygwin:

cp vimrc_example.vim ~/.vimrc
nufal
źródło
-1

W linii poleceń wpisz:

EXINIT="set nocompatible"; export EXINIT
Soheil
źródło
1
proszę dodać krótki opis swojego rozwiązania
Raidri obsługuje Monikę