Khi tôi cố gắng sử dụng các phím mũi tên trong chế độ chèn trong vi
trình chỉnh sửa, các ký tự sau sẽ được chèn vào trình chỉnh sửa:
- cho ↓tôi nhận B,
- vì ↑tôi được A
- vì ←tôi nhận được D,
- vì →tôi nhận được C.
Xin hãy giúp tôi giải quyết vấn đề này.
Khi tôi cố gắng sử dụng các phím mũi tên trong chế độ chèn trong vi
trình chỉnh sửa, các ký tự sau sẽ được chèn vào trình chỉnh sửa:
Xin hãy giúp tôi giải quyết vấn đề này.
Câu trả lời:
Nếu bạn chưa có .vimrc
tệp trong thư mục chính của mình, hãy tạo một tệp bằng cách này:
vim ~/.vimrc
Thêm dòng này vào đầu tập tin:
set nocompatible
Lưu tập tin và điều này sẽ khắc phục vấn đề cho bạn. :)
vi
thay vì vim
, bạn phải thực hiện cùng một cấu hình nhưng trong ~/.exrc
tệp.
Cài đặt vim -> Điều này sẽ khắc phục vấn đề.
sudo apt-get install vim
Có rất nhiều hướng dẫn vim / vi tốt trên youtube, hoặc web nói chung. Đối với vấn đề của bạn, xem ở đây
Sau đó tiếp tục mở tệp như bình thường :
vi desired-file
Với vi
, khi nhấp vào, ibạn kích hoạt lệnh để Chèn văn bản.
Lệnh này cho phép bạn chèn văn bản trong tệp của bạn.
Và đúng, khi nhấp vào:
Cho đến khi bạn hủy kích hoạt lệnh này.
Để hủy kích hoạt lệnh trong vi
: chỉ cần nhấp vào Esc
Và sau đó bạn sẽ lấy lại sử dụng bình thường các phím mũi tên của mình:
FYI, đây là một số vi
lệnh:
Từ nguồn này .
:x
Return bỏ vi , viết ra tập tin sửa đổi để tập tin có tên trong thỉnh nguyện ban đầu
:wq
Return bỏ vi , viết ra tập tin sửa đổi để tập tin có tên trong thỉnh nguyện ban đầu
:q
Return bỏ (hoặc exit) vi
:q!
Return bỏ vi mặc dù thay đổi mới nhất chưa được lưu cho cuộc gọi vi này
↓ di chuyển con trỏ xuống một dòng
↓ di chuyển con trỏ lên một dòng
← di chuyển con trỏ sang trái một ký tự
→ di chuyển con trỏ sang phải một ký tự
u
hoàn tác bất cứ điều gì bạn vừa làm; một cách đơn giản để
.
làm lại bất cứ điều gì bạn vừa làm
i
chèn văn bản trước con trỏ, cho đến khi Escnhấn
I
chèn văn bản ở đầu dòng hiện tại, cho đến khi Escnhấn văn bản
a
nối sau con trỏ, cho đến khi Escnhấn văn bản
A
nối vào cuối dòng hiện tại, cho đến khi Escnhấn
o
mở và đặt văn bản vào một dòng mới bên dưới dòng hiện tại, cho đến khi Escnhấn
O
mở và đặt văn bản trong một dòng mới trên dòng hiện tại, cho đến khi Escnhấn
r
thay thế một ký tự dưới con trỏ (không Esccần thiết)
cw
thay đổi từ hiện tại bằng văn bản mới, bắt đầu bằng ký tự dưới con trỏ, cho đến khi Escnhấn
x
xóa ký tự đơn dưới con trỏ
Nx
xóa N ký tự, bắt đầu bằng ký tự dưới con trỏ
dw
xóa từ đơn bắt đầu bằng ký tự
C
thay đổi con trỏ (thay thế) các ký tự trong dòng hiện tại, cho đến khi Escnhấn
D
xóa phần còn lại của dòng, bắt đầu với vị trí con trỏ hiện tại
dd
xóa toàn bộ dòng hiện tại
Ndd
xóa N dòng, bắt đầu với dòng hiện tại; ví dụ: 5dd xóa 5 dòng
yy
sao chép (yank, cắt) dòng hiện tại vào
Nyy
bản sao bộ đệm (yank, cắt) các dòng N tiếp theo, bao gồm cả dòng hiện tại, vào bộ đệm
p
dán (các) dòng trong bộ đệm vào văn bản sau dòng hiện tại
0
(không) di chuyển con trỏ đến đầu dòng hiện tại (con trỏ có con trỏ)
$
di chuyển con trỏ đến cuối dòng hiện tại
w
di chuyển con trỏ đến đầu từ tiếp theo
b
di chuyển con trỏ trở lại đầu từ trước
:0
Returnhoặc 1G
di chuyển con trỏ đến dòng đầu tiên trong tệp
:n
Returnhoặc nG
di chuyển con trỏ đến dòng n
:$
Returnhoặc G
di chuyển con trỏ đến dòng cuối cùng trong tệp
/string
tìm kiếm về phía trước sự xuất hiện của chuỗi trong
?string
tìm kiếm văn bản ngược về sự xuất hiện của chuỗi trong văn bản
n
di chuyển đến lần xuất hiện tiếp theo của chuỗi tìm kiếm
N
di chuyển đến sự xuất hiện tiếp theo của chuỗi tìm kiếm theo hướng ngược lại
:help compatible
: "Theo mặc định, tùy chọn này được bật và mặc định Vi được sử dụng cho tùy chọn. Mặc định này được chọn cho những người muốn sử dụng Vim giống như Vi và thậm chí không (muốn) biết về tùy chọn 'tương thích'. "
Để vô hiệu hóa in chữ khi nhấn mũi tên trong chế độ chỉnh sửa, bạn có thể làm như sau
vi $HOME/.exrc
(tạo tập tin nếu nó không tồn tại) và sau đó thêm dòng set nocompatible
vào nó và lưu lại.
:version
thứ tự tải (cũng :h .exrc
hoặc :h init
). Tôi cho rằng ai đó có thể muốn một cài đặt áp dụng trong cả vi và vim, hoặc có thể là một thói quen tuyệt đối.
Có ba chế độ trong vi soạn thảo là:
Khi bạn mở một tập tin, bạn đang ở chế độ mặc định. Bây giờ nếu bạn muốn đi đến một vị trí cụ thể trong văn bản của bạn, chỉ cần sử dụng các phím mũi tên hoặc sử dụng h, j, k, lphím. Lưu ý rằng điều này sẽ chỉ làm việc khi bạn chưa ép i(hoặc bất kỳ chế độ đầu vào khác vào lệnh như a, A, I).
Lý do cho 'B' có thể là do các phím mũi tên ở chế độ đầu vào không hoạt động như các phím mũi tên, vì vậy chỉ cần nhấn Escđể chuyển sang chế độ mặc định bất cứ lúc nào. Khi chuyển sang chế độ đầu vào báo chí ihay a, và để di chuyển chỉ cần nhấn iphím quan trọng và sử dụng mũi tên hoặc h, j, k, l.
Tôi đã có cùng một vấn đề nhưng không chỉ trên máy cục bộ của tôi mà còn về các kết nối thông qua putty trên máy sles trong máy ảo Win7 qua máy thu citrix. Cả máy chủ cục bộ và máy chủ từ xa đều hiển thị sau khi cài đặt lại Ubuntu có cùng một vấn đề.
Sau khi phát hiện ra rằng
$ localectl list-keymaps
Couldn't find any console keymaps.
Gây ra hành vi VI kỳ lạ này, tôi đã cài đặt gói dữ liệu bảng điều khiển để giải quyết vấn đề!
sudo apt-get install console-data
Ghi chú:
Có thông tin tốt trong các bài viết khác nhưng không có bài viết nào cố gắng giải thích tại sao hành vi này xảy ra. Nhiều người chắc chắn sẽ vấp ngã trong tương lai này. Ngoài ra, bạn có thể đánh dấu câu hỏi này là đã được giải quyết vì bất kỳ bài đăng nào trước đây có thể hỗ trợ bạn không?
Đây là một lời giải thích :
Vi là một trình soạn thảo đã có từ rất lâu, với nguồn gốc từ các hệ thống Unix. Đó là một công cụ tốt nhưng nó đã được lặp đi lặp lại và bây giờ thì tốt hơn. Vim đã được viết sau đó và đó là lặp đi lặp lại. Mọi người thường gọi vi là 'vim-Minimal' và vim là phiên bản "cải tiến" của vi. Bạn có thể nghĩ về nó như thế này: vi là cốt lõi và vim mở rộng trên nó.
Có khả năng bạn phát hiện ra hành vi :
Để bạn phát hiện ra vấn đề này, bạn nhấn " i " để vào chế độ chèn và sau đó sử dụng các phím mũi tên để điều hướng đúng dòng và chỉnh sửa điểm. Đây là những gì gây ra vấn đề char bất ngờ của bạn.
Giải pháp 1 hoặc 2
1) vi someFile
Trong khi sử dụng vi , trước tiên hãy di chuyển đến điểm chỉnh sửa, sau đó vào chế độ chèn.
2) vim someFile
Đơn giản chỉ cần sử dụng vim từ đầu.
Tôi không thể nhấn mạnh đủ để đọc hướng dẫn (trang nam) hoặc sử dụng -h để được giúp đỡ. Khi bạn điều chỉnh các mẫu trong trình bao, các trang man sẽ trở thành người bạn tốt nhất của bạn. Ví dụ: man vi
hoặcman vim
Xác thực rằng Vim đã được cài đặt .
Mở một cửa sổ giao diện điều khiển và thực hiện:
dpkg --list | grep vim
Nếu bạn nhận được một cái gì đó tương tự như vậy, thì bạn có thể bắt đầu sử dụng vim.
~ $ dpkg --list | grep vim
ii vim 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor
ii vim-common 2:7.4.052-1ubuntu3 amd64 Vi IMproved - Common files
ii vim-runtime 2:7.4.052-1ubuntu3 all Vi IMproved - Runtime files
ii vim-tiny 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor - compact version
Nếu dấu nhắc lệnh trả về không có gì, thì vim không được cài đặt. Sử dụng các ví dụ dưới đây để cập nhật kho lưu trữ của bạn và sau đó cài đặt vim.
sudo apt-get update
sudo apt-get install vim
Nếu bạn chỉ sử dụng vi hoặc vim khi tìm kiếm trên internet cách khắc phục điều gì đó và bạn quên không gõ vim
, có một cách bạn có thể khắc phục trong tương lai. Tôi cảnh báo bạn phải chú ý. Bạn có thể sử dụng một bí danh để ghi đè vi với tham chiếu đến vim để cho dù bạn nhập gì trong tương lai không thường xuyên, bạn sẽ nhận được vim mà không có "oops!" chốc lát. Bạn luôn có thể xóa một bí danh sau này.
Loại vim .bashrc
. Di chuyển xuống dòng trống chỉ có một ~
(hoặc bất kỳ dòng nào khác bắt đầu bằng alias
(vì vậy chúng được nhóm lại với nhau) và sau đó nhấn phím i để vào chế độ -insert- Trên dòng riêng của nó, hãy nhập như sau:
alias vi='vim'
Nhấn Esc
và sau đó gõ :wq
. Bây giờ bạn cần tải lại tập tin. Nhập source .bashrc
Bất kỳ shell nào khác mở sau khi bạn thực hiện các chỉnh sửa này sẽ tự động tải tệp .bashrc.
Tất cả những lời giải thích được đưa ra là một chút kỳ quái. Tôi có vi nhưng chưa cài đặt vim.
Kiểm tra thay thế: /etc/alternatives/vi
→/usr/bin/vim.tiny
Vì vậy, vi
là vim.tiny
, và nó sử dụng /etc/vim/vimrc.tiny
.
Và trong vimrc.tiny
bạn tìm thấy dòng sau:
set compatible
Đó gần như là điều duy nhất trong tập tin này. Lưu ý rằng trong /etc/vim/vimrc
nó đang sử dụng nocompatible
.
Vì vậy, hoặc cài đặt vim, hoặc thay đổi vimrc.tiny
tệp, hoặc tạo tệp của riêng bạn ~/.vimrc
nên chứa dòng:
set nocompatible
~/.vimrc
và cài đặt nocompatible
: askubfox.com/a3533944/158442 hoặc 3. chỉnh sửa tệp hệ thống. Chỉ có gợi ý để chỉnh sửa /etc/vim/vimrc.tiny
là mới, nhưng bạn gọi những câu trả lời kỳ quái trong khi đề xuất điều tương tự như chúng.
Trình chỉnh sửa vi truyền thống không nhận ra các phím mũi tên (... afair). Có hai giải pháp:
Điều này cũng có thể là do TERM
biến; đặt ví dụ như thế này:
export TERM=xterm
Trên một số hệ thống, các nocompatible
tùy chọn không có sẵn, hoặc nó có thể không giải quyết được vấn đề nếu bị vỡ cắm mũi tên các chức năng chính. Đây là một cách giải quyết ...
Chỉnh sửa .exrc
tệp để bao gồm các dòng sau:
map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
Hoặc, nếu sự cố chỉ tồn tại ở chế độ bình thường, bạn có thể thay đổi nmap
và bỏ qua những điều sau đây a
, như sau:
nmap! ^[OA ^[k
vân vân
Đây là các kết hợp chính cần thiết để sản xuất chúng (chỉ hiển thị đầu tiên):
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
Điều này thoát khỏi chế độ chỉnh sửa, di chuyển theo hướng mong muốn và bật lại chế độ chỉnh sửa. Điều này là cần thiết để khắc phục Vi đọc chuỗi thoát như một chuỗi chữ <ESC> <O> <A>, v.v.
Đối với VI, hãy tạo hoặc chỉnh sửa tệp "~ / .exrc" hoặc VIM tạo hoặc chỉnh sửa tệp "~ / .vimrc" được đặt hoặc thêm vào dòng.
set nocompatible
Tại thời điểm viết bài này, có những lời khen ngợi về hạng mục được bình chọn nhiều thứ hai đang tự hỏi tại sao mục nhập của họ không được chấp nhận. Lý do là có những máy chủ không cho phép cài đặt các trình soạn thảo khác. Thậm chí sau đó vim đôi khi có các hiệu ứng tương tự, vì vậy có một loạt các thông tin có thể sử dụng từ hai mục hàng đầu. Tôi không thể bình luận tuy nhiên hy vọng điều này làm sáng tỏ lý do tại sao không ai đúng 100% 100% thời gian.
Vì một số lý do, Ubuntu đã bỏ qua việc khởi tạo envvar HOME cho người dùng root trên VPS 18.04 mới của tôi. Nếu đó là trường hợp, vi không thể tìm thấy tệp .vimrc. Vấn đề không xảy ra đối với người dùng bình thường (trong / nhà /).
Để kiểm tra biến:
echo $HOME
Nếu điều này dẫn đến một dòng trống, biến không được đặt. Vấn đề đã biến mất sau
export HOME=/root
Tôi đã chuyển lệnh vào tệp /root/.bashrc (Tôi không biết nơi này thường được đặt).