เมื่อฉันพยายามใช้ปุ่มลูกศรในโหมดแทรกในตัวvi
แก้ไขมีการแทรกอักขระต่อไปนี้ในตัวแก้ไข:
- สำหรับ↓ฉันได้ B
- สำหรับ↑ฉันได้รับ
- สำหรับ←ฉันได้ D
- สำหรับ→ฉันได้รับซี
โปรดช่วยฉันแก้ไขปัญหานี้
เมื่อฉันพยายามใช้ปุ่มลูกศรในโหมดแทรกในตัวvi
แก้ไขมีการแทรกอักขระต่อไปนี้ในตัวแก้ไข:
โปรดช่วยฉันแก้ไขปัญหานี้
คำตอบ:
หากคุณยังไม่มี.vimrc
ไฟล์ในโฮมไดเร็กตอรี่ของคุณสร้างไฟล์โดยใช้สิ่งนี้:
vim ~/.vimrc
เพิ่มบรรทัดนี้ไปที่ด้านบนของไฟล์:
set nocompatible
บันทึกไฟล์และสิ่งนี้จะแก้ไขปัญหาให้คุณ :)
vi
แทนคุณvim
ต้องทำการกำหนดค่าเดียวกัน แต่ใน~/.exrc
ไฟล์
ติดตั้งเป็นกลุ่ม -> สิ่งนี้จะแก้ไขปัญหา
sudo apt-get install vim
มีบทช่วยสอน vim / vi ที่ดีมากมายบน youtube หรือเว็บทั่วไป สำหรับปัญหาของคุณดูที่นี่
จากนั้นเปิดไฟล์ต่อตามปกติ :
vi desired-file
ด้วยvi
เมื่อคลิกที่iคุณเปิดใช้งานคำสั่งเพื่อแทรกข้อความ
คำสั่งนี้ช่วยให้คุณสามารถแทรกข้อความในไฟล์ของคุณ
และถูกต้องเมื่อคลิก:
จนกว่าคุณจะปิดใช้งานคำสั่งนี้
หากต้องการปิดใช้งานคำสั่งในvi
: เพียงคลิกที่Esc
จากนั้นคุณจะได้รับการใช้ปุ่มลูกศรของคุณตามปกติ:
FYI นี่คือvi
คำสั่งบางส่วน:
จากแหล่งนี้
:x
Return ออกจาก vi , เขียนไฟล์ที่แก้ไขแล้วไปยังไฟล์ที่มีชื่อในการเรียกเดิม
:wq
Return ออกจาก vi , เขียนออกไฟล์ที่แก้ไขไปยังไฟล์ที่มีชื่อในการร้องขอเดิม
:q
Return ออกจาก (หรือออก) vi
:q!
Return ออกจาก viแม้ว่าจะไม่มีการบันทึกการเปลี่ยนแปลงล่าสุดสำหรับการโทร vi นี้
↓ เลื่อนเคอร์เซอร์ลงหนึ่งบรรทัด
↓ เลื่อนเคอร์เซอร์ขึ้นหนึ่งบรรทัด
← เลื่อนเคอร์เซอร์ซ้ายหนึ่งอักขระ
→ เลื่อนเคอร์เซอร์ขวาหนึ่งอักขระ
u
ยกเลิกสิ่งที่คุณเพิ่งทำ สลับง่าย
.
ทำซ้ำสิ่งที่คุณเพิ่งทำ
i
แทรกข้อความก่อนเคอร์เซอร์จนกระทั่งEscตี
I
แทรกข้อความที่จุดเริ่มต้นของบรรทัดปัจจุบันจนกระทั่งEscตี
a
ท้ายข้อความหลังเคอร์เซอร์จนกระทั่งEscตี
A
ท้ายข้อความถึงปลายบรรทัดปัจจุบันจนกระทั่งEscตี
o
เปิดและใส่ข้อความในบรรทัดใหม่ด้านล่างบรรทัดปัจจุบันจนกระทั่งEscตี
O
เปิดและ ใส่ข้อความในบรรทัดใหม่เหนือบรรทัดปัจจุบันจนกระทั่งEscกด
r
แทนที่อักขระเดี่ยวภายใต้เคอร์เซอร์ (ไม่Escจำเป็น)
cw
เปลี่ยนคำปัจจุบันด้วยข้อความใหม่เริ่มต้นด้วยอักขระภายใต้เคอร์เซอร์จนกระทั่งEscกดปุ่ม
x
ลบอักขระเดี่ยวภายใต้เคอร์เซอร์
Nx
ลบ N ตัวอักษรเริ่มต้นด้วยอักขระใต้เคอร์เซอร์
dw
ลบคำเดียวที่เริ่มต้นด้วยอักขระภายใต้เคอร์เซอร์
C
เปลี่ยน (แทนที่) ตัวอักษรในบรรทัดปัจจุบันจนกระทั่งEscตี
D
ลบที่เหลือของเส้นที่เริ่มต้นด้วยตำแหน่งเคอร์เซอร์ปัจจุบัน
dd
ลบบรรทัดปัจจุบันทั้ง
Ndd
ลบ N บรรทัดที่เริ่มต้นด้วยบรรทัดปัจจุบัน; เช่น 5dd ลบ
yy
สำเนา 5 บรรทัด(งัดตัด) บรรทัดปัจจุบันลงใน
Nyy
สำเนาบัฟเฟอร์(ดึงตัด) บรรทัด N ถัดไปรวมถึงบรรทัดปัจจุบันลงในบัฟเฟอร์
p
วางบรรทัด (s) ในบัฟเฟอร์ลงในข้อความหลังจาก บรรทัดปัจจุบัน
0
(ศูนย์) ย้ายเคอร์เซอร์ไปยังจุดเริ่มต้นของบรรทัดปัจจุบัน (หนึ่งกับเคอร์เซอร์)
$
ย้ายเคอร์เซอร์ไปยังจุดสิ้นสุดของบรรทัดปัจจุบัน
w
ย้ายเคอร์เซอร์ไปยังจุดเริ่มต้นของคำถัดไป
b
ย้ายเคอร์เซอร์กลับไปยังจุดเริ่มต้นของก่อนคำ
:0
Returnหรือ1G
ย้ายเคอร์เซอร์ไปยังบรรทัดแรกในไฟล์
:n
ReturnหรือnG
ย้ายเคอร์เซอร์ กับสาย n
:$
ReturnหรือG
ย้ายเคอร์เซอร์ไปที่บรรทัดสุดท้ายในแฟ้ม
/string
ค้นหาไปข้างหน้าสำหรับการเกิดขึ้นของสตริงในข้อความ
?string
ค้นหาย้อนหลังสำหรับการเกิดขึ้นของสตริงในการ
n
ย้ายข้อความไปยังการเกิดขึ้นครั้งต่อไปของการค้นหาสตริง
N
ย้ายไปที่การเกิดขึ้นครั้งต่อไปของสตริงการค้นหาในทิศทางตรงกันข้าม
:help compatible
: "โดยค่าเริ่มต้นตัวเลือกนี้จะเปิดอยู่และค่าเริ่มต้นของ Vi จะถูกใช้สำหรับ ตัวเลือกค่าเริ่มต้นนี้ถูกเลือกสำหรับผู้ที่ต้องการใช้ Vim เช่นเดียวกับ Vi และไม่รู้จัก (ต้องการ) เกี่ยวกับตัวเลือก 'ที่เข้ากันได้'
หากต้องการปิดใช้งานการพิมพ์ตัวอักษรบนลูกศรกดในโหมดแก้ไขคุณสามารถทำตามได้
vi $HOME/.exrc
(สร้างไฟล์หากไม่มีอยู่) จากนั้นเพิ่มบรรทัดset nocompatible
ลงในไฟล์และบันทึก
:version
การสั่งซื้อโหลด ( :h .exrc
หรือยัง:h init
) ฉันคิดว่าบางคนอาจต้องการการตั้งค่าที่จะใช้ทั้งใน vi และเสียงเรียกเข้าหรืออาจเป็นแรงของนิสัยที่แท้จริง
มีสามโหมดในโปรแกรมแก้ไข vi คือ:
เมื่อคุณเปิดไฟล์คุณจะอยู่ในโหมดเริ่มต้น ตอนนี้ถ้าคุณต้องการที่จะไปยังตำแหน่งที่ระบุในข้อความของคุณเพียงแค่ใช้ปุ่มลูกศรหรือการใช้งานh, j, k, lคีย์ โปรดทราบว่านี้จะทำงานเฉพาะเมื่อคุณไม่ได้กดi(หรือคำสั่งเข้าสู่โหมดการป้อนข้อมูลอื่น ๆ เช่นa, A, I)
สาเหตุของ 'B' อาจเป็นเพราะปุ่มลูกศรในโหมดป้อนข้อมูลไม่ทำงานเป็นปุ่มลูกศรดังนั้นเพียงกดEscเพื่อเข้าสู่โหมดเริ่มต้นได้ตลอดเวลา เมื่อจะเปลี่ยนโหมดการรับสัญญาณกดiหรือaและจะนำทางเพียงแค่กดiปุ่มที่สำคัญและใช้ลูกศรหรือh, j, ,kl
ฉันมีปัญหาเดียวกันที่แน่นอน แต่ไม่เพียง แต่ในเครื่องท้องถิ่นของฉัน แต่ยังเกี่ยวกับการเชื่อมต่อผ่าน putty บนเครื่อง sles ใน Win7 VM ผ่านเครื่องรับ citrix ทั้งโฮสต์ท้องถิ่นและโฮสต์ระยะไกลแสดงหลังจากติดตั้ง Ubuntu ที่มีปัญหาเดียวกัน
หลังจากพบว่า
$ localectl list-keymaps
Couldn't find any console keymaps.
ทำให้พฤติกรรม VI ที่แปลกประหลาดนี้ฉันติดตั้งแพคเกจคอนโซลข้อมูลซึ่งแก้ปัญหาได้!
sudo apt-get install console-data
บันทึก:
มีข้อมูลที่ดีในโพสต์อื่น ๆ แต่ไม่มีโพสต์ใดพยายามอธิบายว่าทำไมพฤติกรรมนี้จึงเกิดขึ้น หลายคนคงต้องเจอกับสิ่งนี้ในอนาคต นอกจากนี้คุณสามารถทำเครื่องหมายคำถามนี้ว่าแก้ไขได้เนื่องจากมีโพสต์ก่อนหน้านี้ที่อาจช่วยคุณได้หรือไม่
นี่คือคำอธิบาย :
Viเป็นบรรณาธิการที่มีมานานแล้วโดยมีรากฐานกลับสู่ระบบ Unix มันเป็นเครื่องมือที่ดี แต่มันได้รับการทำซ้ำแล้วและตอนนี้ก็ยังดีกว่า เป็นกลุ่มที่เขียนในภายหลังและเป็นซ้ำที่ ผู้คนมักอ้างถึง vi ว่า 'vim-minimal' และ vim เป็นรุ่นปรับปรุง "ของ vi" คุณสามารถคิดเช่นนี้: vi เป็นแกนกลางและกลุ่มที่ขยายตัวในนั้น
มีแนวโน้มว่าคุณค้นพบพฤติกรรมอย่างไร :
เพื่อให้คุณค้นพบปัญหานี้คุณกด " i " เพื่อเข้าสู่โหมดแทรกแล้วใช้ปุ่มลูกศรเพื่อนำทางไปยังบรรทัดที่ถูกต้องและจุดแก้ไข นี่คือสิ่งที่ทำให้เกิดปัญหาถ่านที่ไม่คาดคิดของคุณ
โซลูชันที่ 1 หรือ 2
1) vi someFile
ในขณะที่ใช้viก่อนอื่นให้ย้ายไปที่จุดแก้ไขจากนั้นเข้าสู่โหมดแทรก
2) vim someFile
เพียงใช้เสียงเรียกเข้าตั้งแต่เริ่มต้น
ฉันไม่สามารถเครียดพอที่จะอ่านคู่มือ (man pages) หรือใช้ -h เพื่อขอความช่วยเหลือ เมื่อคุณปรับให้เข้ากับรูปแบบในเชลล์หน้าคนกลายเป็นเพื่อนที่ดีที่สุดของคุณ ตัวอย่าง: man vi
หรือman vim
ตรวจสอบว่ามีการติดตั้งเป็นกลุ่ม
เปิดหน้าต่างคอนโซลและดำเนินการ:
dpkg --list | grep 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
หากพร้อมต์คำสั่งส่งคืนโดยไม่มีอะไรแสดงว่า vim ไม่ถูกติดตั้ง ใช้ตัวอย่างด้านล่างเพื่ออัพเดตที่เก็บของคุณจากนั้นติดตั้ง vim
sudo apt-get update
sudo apt-get install vim
ในโอกาสที่คุณใช้ vi หรือ vim เมื่อค้นหาบนอินเทอร์เน็ตถึงวิธีการแก้ไขบางอย่างและคุณลืมพิมพ์vim
มีวิธีหนึ่งที่คุณสามารถแก้ไขได้ในอนาคต ฉันเตือนคุณให้ใส่ใจ คุณสามารถใช้นามแฝงเพื่อเขียนทับ vi โดยมีการอ้างอิงถึงกลุ่มเพื่อไม่ว่าคุณจะพิมพ์อะไรในอนาคตไม่บ่อยนักคุณจะได้รับกลุ่มโดยไม่ต้องใช้ "โอ๊ะโอ!" ขณะ คุณสามารถลบชื่อแทนได้ในภายหลัง
ประเภทvim .bashrc
. เลื่อนลงไปที่บรรทัดว่างโดยมีเพียง a ~
(หรือไปยังบรรทัดอื่น ๆ ที่ขึ้นต้นด้วยalias
(ดังนั้นพวกเขาจึงรวมกลุ่มกัน) จากนั้นกดปุ่มiเพื่อเข้าสู่โหมด -insert- ในบรรทัดแยกของตัวเอง
alias vi='vim'
กดแล้วพิมพ์Esc
:wq
ตอนนี้คุณต้องโหลดไฟล์ซ้ำ พิมพ์source .bashrc
เชลล์อื่น ๆ ที่เปิดขึ้นหลังจากที่คุณทำการแก้ไขเหล่านี้จะโหลดไฟล์. bashrc โดยอัตโนมัติ
คำอธิบายทั้งหมดที่ได้รับเป็นบิตที่แปลกประหลาด ฉันมี vi แต่ไม่ติดตั้งเป็นกลุ่ม
การตรวจสอบทางเลือก: /etc/alternatives/vi
→/usr/bin/vim.tiny
ดังนั้นvi
มีและใช้vim.tiny
/etc/vim/vimrc.tiny
และในvimrc.tiny
คุณจะพบบรรทัดต่อไปนี้:
set compatible
ซึ่งเกือบเป็นสิ่งเดียวในไฟล์นี้ โปรดสังเกตว่าในจะใช้/etc/vim/vimrc
nocompatible
ดังนั้นควรติดตั้งเป็นกลุ่มหรือเปลี่ยนvimrc.tiny
ไฟล์หรือสร้างไฟล์ของคุณเอง~/.vimrc
ซึ่งควรมีบรรทัด:
set nocompatible
~/.vimrc
และการตั้งค่าnocompatible
: askubuntu.com/a/353944/158442หรือ 3. แก้ไขไฟล์ระบบ เฉพาะคำแนะนำในการแก้ไขเท่านั้นที่/etc/vim/vimrc.tiny
เป็นของใหม่และคุณเรียกคำตอบที่แปลกประหลาดขณะที่แนะนำสิ่งเดียวกันกับพวกเขา
เครื่องมือแก้ไข vi ดั้งเดิมไม่รู้จักปุ่มลูกศร (... afair) มีสองวิธีแก้ไข:
นี่อาจเป็นเพราะTERM
ตัวแปร ตั้งค่าสำหรับตัวอย่างเช่นนี้:
export TERM=xterm
ในบางระบบnocompatible
ตัวเลือกไม่พร้อมใช้งานหรืออาจไม่สามารถแก้ไขปัญหาได้หากปลั๊กอินแบ่งการทำงานของปุ่มลูกศร นี่เป็นวิธีแก้ปัญหา ...
แก้ไข.exrc
ไฟล์เพื่อรวมบรรทัดต่อไปนี้:
map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
หรือหากปัญหามีอยู่ในโหมดปกติเท่านั้นคุณสามารถเปลี่ยนnmap
และข้ามสิ่งต่อไปนี้a
ได้ดังนี้:
nmap! ^[OA ^[k
และอื่น ๆ
นี่คือชุดค่าผสมที่สำคัญที่จำเป็นในการสร้าง (แสดงเฉพาะรายการแรก):
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
โหมดการแก้ไขนี้หนีออกมาเคลื่อนไปในทิศทางที่ต้องการและโหมดแก้ไขอีกครั้ง นี่เป็นสิ่งจำเป็นในการเอาชนะ Vi ที่อ่านลำดับหนีเป็นลำดับของตัวอักษร <ESC> <O> <A> เป็นต้น
สำหรับ VI ให้สร้างหรือแก้ไขไฟล์ "~ / .exrc" หรือ VIM สร้างหรือแก้ไขไฟล์ "~ / .vimrc" ตั้งค่าหรือเพิ่มในบรรทัด
set nocompatible
ในช่วงเวลาของการเขียนนี้มีการยกย่องในรายการที่โหวตมากที่สุดที่สองที่สงสัยว่าทำไมพวกเขาไม่ยอมรับรายการ เหตุผลก็คือมีโฮสต์ที่ไม่อนุญาตให้ติดตั้งโปรแกรมแก้ไขอื่น ๆ ถึงอย่างนั้นบางครั้งก็มีเอฟเฟกต์เหมือนกันดังนั้นจึงมีข้อมูลที่สามารถใช้งานได้จากสองรายการแรก ฉันไม่สามารถแสดงความคิดเห็นได้ แต่หวังว่านี่จะเป็นการล้างสาเหตุที่ทำให้ไม่มีใครถูกต้อง 100% 100% ของเวลา
บนเครื่องนี้ฉันต้องทำอย่างmake sure
นั้น
set nocompatible
last entry in ~/.vimrc
เป็น หรืออย่างน้อยหนึ่งในรายการสุดท้ายโดยเฉพาะอย่างยิ่งไม่มีการโหลดปลั๊กอินเพิ่มเติมหลังจากนั้น
HTH
ด้วยเหตุผลบางอย่างอูบุนตูจึงละเว้นการเริ่มต้น envvar HOME สำหรับผู้ใช้รูทบน 18.04 VPS ใหม่ของฉัน หากเป็นกรณีนี้ vi ไม่พบไฟล์. vimrc ปัญหาไม่เกิดขึ้นสำหรับผู้ใช้ปกติ (ใน / home /)
วิธีตรวจสอบตัวแปร:
echo $HOME
หากสิ่งนี้ส่งผลให้บรรทัดว่างเปล่าตัวแปรจะไม่ถูกตั้งค่า ปัญหาหายไปหลังจาก
export HOME=/root
ฉันย้ายคำสั่งไปยังไฟล์ /root/.bashrc (ฉันไม่รู้ว่าจะตั้งค่าไว้ที่ไหน)