เมื่อฉันพยายามใช้ปุ่มลูกศรในโหมดแทรกในตัว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คำสั่งบางส่วน:
จากแหล่งนี้
:xReturn ออกจาก vi , เขียนไฟล์ที่แก้ไขแล้วไปยังไฟล์ที่มีชื่อในการเรียกเดิม
:wqReturn ออกจาก vi , เขียนออกไฟล์ที่แก้ไขไปยังไฟล์ที่มีชื่อในการร้องขอเดิม
:qReturn ออกจาก (หรือออก) 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 ย้ายเคอร์เซอร์กลับไปยังจุดเริ่มต้นของก่อนคำ
:0Returnหรือ1G ย้ายเคอร์เซอร์ไปยังบรรทัดแรกในไฟล์
:nReturnหรือ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/vimrcnocompatible
ดังนั้นควรติดตั้งเป็นกลุ่มหรือเปลี่ยน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 (ฉันไม่รู้ว่าจะตั้งค่าไว้ที่ไหน)