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ć?


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.)


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ą.


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 ":"


: 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.


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

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”


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


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.


0

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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.