ฉันรู้วิธีย้ายไปรอบ ๆ ในโหมดคำสั่งโดยเฉพาะการกระโดดไปที่บรรทัดเป็นต้น แต่คำสั่งใดที่จะข้ามไปยังจุดสิ้นสุดของบรรทัดที่ฉันยังอยู่
vimtutor
ถูก อาจเป็นไปได้ว่าพวกเขาไม่รู้เกี่ยวกับมัน?
ฉันรู้วิธีย้ายไปรอบ ๆ ในโหมดคำสั่งโดยเฉพาะการกระโดดไปที่บรรทัดเป็นต้น แต่คำสั่งใดที่จะข้ามไปยังจุดสิ้นสุดของบรรทัดที่ฉันยังอยู่
vimtutor
ถูก อาจเป็นไปได้ว่าพวกเขาไม่รู้เกี่ยวกับมัน?
คำตอบ:
เพียงแค่คีย์$ (เครื่องหมายดอลลาร์) คุณสามารถใช้Aเพื่อเลื่อนไปยังจุดสิ้นสุดของบรรทัดและเปลี่ยนเป็นโหมดแก้ไข (ผนวก) จะกระโดดอักขระที่ไม่ว่างเปล่าสุดท้ายคุณสามารถกดgแล้ว_ปุ่ม
ตรงกันข้ามAคือI(โหมดแทรกที่จุดเริ่มต้นของบรรทัด) เป็นส่วน ๆ การกดปุ่ม^จะเป็นการวางเคอร์เซอร์ของคุณที่อักขระที่ไม่ใช่ white-space แรกของบรรทัด
g_
g_
รูปแบบที่ไม่รวมอักขระว่าง
อย่างที่ผู้คนมากมายพูดว่า:
แต่ยัง:
|
คำสั่งpipe สามารถนับได้เช่น 3 | เพื่อข้ามไปยังคอลัมน์ที่สาม
g _ ไปที่อักขระที่ไม่ใช่ช่องว่างสุดท้าย
g $ ไปที่จุดสิ้นสุดของบรรทัดหน้าจอ (เมื่อบรรทัดบัฟเฟอร์ถูกล้อมรอบหลายบรรทัดหน้าจอ)
b
ไปที่จุดเริ่มต้นของคำก่อนหน้าซึ่งไม่เหมือนกันเลย $ge
มันเป็นประมาณเทียบเท่ากับ
_
และg_
สำหรับ visual / yanking เช่นเดียวกับ$
จะคัดลอก / ลบอักขระบรรทัดใหม่ (LN)
g_
เป็นวิธีเดียวที่ฉันพบว่าไปถึงจุดสิ้นสุดจริงของบรรทัด
$
ไปที่จุดสิ้นสุดของบรรทัดแม้ว่าจะห่อให้ฉันก็ตาม ฉันรู้ว่าไม่มีการตั้งค่าเพื่อปรับพฤติกรรมของมัน บางทีอาจเป็นเพราะคุณ. vimrc เชื่อมต่อใหม่g$
หรือ
คำถามหลัก - จุดสิ้นสุดของบรรทัด
$ ไปที่ท้ายบรรทัดยังคงอยู่ในโหมดคำสั่ง
A ไปที่จุดสิ้นสุดของบรรทัดสลับไปยังโหมดแทรก
ตรงกันข้าม - จุดเริ่มต้นของบรรทัด (โดยเทคนิคคืออักขระที่ไม่ใช่ช่องว่างตัวแรก)
^ ไปที่จุดเริ่มต้นของบรรทัดยังคงอยู่ในโหมดคำสั่ง
I (i ตัวพิมพ์ใหญ่ i) ไปที่จุดเริ่มต้นของบรรทัดสลับไปยังโหมดแทรก
เพิ่มเติม - จุดเริ่มต้นของบรรทัด (โดยเทคนิคคอลัมน์แรกโดยไม่คำนึงถึงช่องว่าง )
0 (ศูนย์) ไปที่จุดเริ่มต้นของบรรทัดยังคงอยู่ในโหมดคำสั่ง
0i (ศูนย์ตามด้วยตัวพิมพ์เล็ก i) ไปที่จุดเริ่มต้นของบรรทัดสลับไปยังโหมดแทรก
สำหรับผู้ที่เริ่มต้นเรียนรู้ vi ต่อไปนี้เป็นคำแนะนำที่ดีสำหรับ vi โดยการแสดงรายการคำสั่งเคียงข้างกับการเคลื่อนย้ายเคอร์เซอร์และปุ่มลัดของ Windows GUI Editor โดยทั่วไป
I
ไม่ใช่0
แต่^
เป็นทั้งสองอย่างI
และ^
ไปที่อักขระที่ไม่ใช่ช่องว่างตัวแรกของบรรทัด แต่0
ไปที่คอลัมน์ศูนย์ (ตามที่ชื่อบอกเป็นนัย)
0
จะเป็นอย่างไร (ไปที่ตัวอักษรตัวแรก (= คอลัมน์ 0) ของสายและไปที่โหมดแทรก)
0i
เพียงคนเดียวที่ฉันรู้คือ :-)
หากบรรทัดปัจจุบันของคุณล้อมรอบหน้าจอที่มองเห็นได้บนบรรทัดถัดไปคุณสามารถใช้g $เพื่อไปยังจุดสิ้นสุดของบรรทัดหน้าจอ
gw
และgq
เป็นคำสั่งที่ฟอร์แมตข้อความ (ดู:h gw
และ:h gq
) สิ่งที่อาจเกิดขึ้นคือคุณทำgw{motion}
และเปลี่ยนแปลงข้อความบางส่วนเพื่อให้เส้นหน้าจอตรงกับบรรทัดจริง
เครื่องหมายดอลลาร์: $
ในหลายกรณีเมื่อเราอยู่ในสตริงเราจะถูกล้อมรอบด้วยเครื่องหมายคำพูดคู่หรือในขณะที่เขียนคำสั่งเราไม่ต้องการที่จะกดหลบหนีและไปที่จุดสิ้นสุดของบรรทัดนั้นด้วยปุ่มลูกศรและกดเครื่องหมายอัฒภาค ( ;
) เพียงเพื่อสิ้นสุด เส้น. เขียนบรรทัดต่อไปนี้ในไฟล์vimrcของคุณ:
imap <C-l> <Esc>$a
สายพูดว่าอะไร? มันแม็พ Ctrl + l กับชุดคำสั่ง มันเทียบเท่ากับคุณกดEsc(โหมดคำสั่ง), $(จุดสิ้นสุดของบรรทัด), a(ผนวก) ในครั้งเดียว
vim
แน่นอนช่วยให้คุณทำมากขึ้นในเวลาน้อยลงด้วยสิ่งต่าง ๆ เช่นนี้ @razorxpress จะมีการปรับเล็กน้อยimap <C-l> <Esc>A
ซึ่งทำให้ Ctrl + l เทียบเท่ากับการกดEsc
(ออกจากโหมดแทรก) จากนั้นA
(ต่อท้ายจนจบบรรทัด)
inoremap <C-l> <C-o>A
ข้อดีของปุ่ม 'End' คือสามารถใช้งานได้ทั้งโหมดปกติและโหมดแทรก
'$' ใช้งานได้ในโหมดปกติ / คำสั่งเท่านั้น แต่ยังใช้งานได้ในเครื่องมือแก้ไข vi คลาสสิก (ควรรู้เมื่อไม่มีเสียงเรียกเข้า)
นอกจากนี้ยังทราบความแตกต่างระหว่างบรรทัด (หรือบางทีอาจจะสายกายภาพ) และสายหน้าจอ บรรทัดถูกยกเลิกโดยอักขระ End Of Line ("\ n") บรรทัดหน้าจอคือสิ่งที่เกิดขึ้นที่จะแสดงเป็นอักขระหนึ่งแถวในเทอร์มินัลหรือในหน้าจอของคุณ ทั้งสองแยกออกจากกันหากคุณมีเส้นทางกายภาพยาวกว่าความกว้างหน้าจอซึ่งเป็นเรื่องปกติมากเมื่อเขียนอีเมลและเช่นนั้น
ความแตกต่างปรากฏขึ้นในคำสั่งท้ายบรรทัดเช่นกัน
หากคุณชอบพฤติกรรมที่ตามหลังมาตลอดคุณสามารถทำการแมปกุญแจดังนี้:
:noremap 0 g0
:noremap $ g$
g_
เป็นช่องว่างทางกายภาพของบรรทัดสุดท้าย วิธีการเกี่ยวกับสายหน้าจอ?
กดAเพื่อเข้าสู่โหมดแก้ไขเริ่มต้นที่ท้ายบรรทัด
หรือมีคำตอบที่ชัดเจน: ใช้Endปุ่มเพื่อไปยังจุดสิ้นสุดของบรรทัด
ฉันไม่เห็นปุ่มลัดสำหรับ macbook สำหรับใช้เป็นกลุ่มในเทอร์มินัลมาตรฐาน หวังว่ามันจะช่วยใครซักคน สำหรับผู้ใช้ macOS (ทดสอบบน macbook pro 2018):
fn+ ← - ย้ายไปที่บรรทัดเริ่มต้น
fn+ → - เลื่อนไปยังบรรทัดสุดท้าย
fn+ ↑ - เลื่อนหน้าขึ้น
fn+ ↓ - เลื่อนหน้าลง
fn+ g - เลื่อนเคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นของเอกสาร
fn+ shift + g - เลื่อนเคอร์เซอร์ไปที่ท้ายเอกสาร
สำหรับสองคำสั่งสุดท้ายบางครั้งจำเป็นต้องแตะสองครั้ง
อาจไม่เกี่ยวข้องกัน แต่ถ้าคุณต้องการเริ่มบรรทัดใหม่หลังจากบรรทัดปัจจุบันคุณสามารถใช้ o ใดก็ได้ในบรรทัด
$ตัวเลือกที่ง่ายที่สุดจะสำคัญในการ หากคุณทำงานกับกลุ่มข้อความคุณอาจชื่นชมคำสั่ง{และ}เพื่อเลื่อนย่อหน้าไปข้างหน้าและไปข้างหน้าตามลำดับ
ฉันคุ้นเคยกับ Home / End ทำให้ฉันเริ่มต้นและสิ้นสุดบรรทัดในโหมดแทรก (จากการใช้ใน Windows และฉันคิดว่า Linux) ซึ่ง Mac ไม่รองรับ สิ่งนี้น่ารำคาญเป็นพิเศษเพราะเมื่อฉันใช้ vim บนระบบระยะไกลฉันก็ไม่สามารถทำได้อย่างง่ายดาย หลังจากการลองผิดลองถูกและเจ็บปวดฉันขึ้นมาด้วย.vimrc
เส้นเหล่านี้ซึ่งทำสิ่งเดียวกัน แต่ผูกกับ Ctrl-A สำหรับการเริ่มต้นของบรรทัดและ Ctrl-D สำหรับจุดสิ้นสุดของบรรทัด (ด้วยเหตุผลบางอย่าง Ctrl-E ฉันเดาว่าสงวนไว้หรืออย่างน้อยก็หาวิธีผูกมันไม่ได้) เพลิดเพลิน
:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>
มีแผนภูมิที่ดีสำหรับรหัสอักขระควบคุม ASCII ที่นี่สำหรับผู้อื่นเช่นกัน:
http://www.physics.udel.edu/~watson/scen103/ascii.html
นอกจากนี้คุณยังสามารถทำ Ctrl-V + Ctrl- ได้เช่นกัน แต่ก็ไม่ได้วางเช่นกันกับสถานที่เช่นนี้