Perintah Vim sederhana yang Anda ingin Anda ketahui sebelumnya [ditutup]


378

Saya belajar perintah baru di Vim sepanjang waktu, tapi saya yakin semua orang belajar sesuatu yang baru sesekali. Saya baru saja belajar tentang ini:

zz, zt, zb - kursor posisi di tengah, atas, atau bawah layar

Apa saja perintah lain yang berguna atau anggun yang Anda harap Anda pelajari beberapa waktu yang lalu?


46
secara teknis, zz, zt, zb memposisikan layar dengan kursor di tengah / atas / bawah. untuk memposisikan kursor di tengah / atas / bawah gunakan M, H, atau L. Kedua set perintah berguna!
Peter

1
Membaca posting ini berbulan-bulan atau setahun yang lalu telah membantu saya setiap hari. dap adalah sesuatu yang saya gunakan untuk memindahkan paragraf beberapa kali dalam satu jam, terima kasih untuk posting ini.
Funkodebat

33
Saya tidak pernah mengambil begitu banyak trik dari halaman yang telah ditandai sebagai tidak konstruktif :) Terima kasih semua.
Tasos Bitsios

Jawaban:


315

Saya benar-benar berharap saya tahu bahwa Anda dapat menggunakan CtrlCalih-alih Escberalih dari mode insert. Itu merupakan peningkatan produktivitas nyata bagi saya.


93
Saya memetakan kembali Caps-Lock saya ke Esc. Itu baik lebih mudah daripada Esc normal dan Ctrl-C
Kasper

114
Omong kosong 15 tahun vi dan saya tidak pernah tahu ini ...
Chris K

31
Populer lainnya adalah menggunakan 'jj' untuk ESC. Saya suka pendekatan ini sejauh ini. :peta! jj <ESC>
claytron

27
Anda juga dapat menggunakan CTRL- [(yang saya suka karena itu kedua jari kecil ... hanya sedikit rotasi kedua tangan).
Jason Down

42
gunakan 'jk' sebagai varian pada @ claytron's. jika Anda tanpa sadar sudah dalam mode INSERT, jk meninggalkan Anda di tempat Anda berada, sehingga Anda dapat menekannya kapan saja (kredit: orang lain ... bukan ide saya).
Kyle

197

Trik "wow" terbaru yang saya pelajari adalah metode melakukan pencarian-dan-ganti yang rumit. Cukup sering di masa lalu, saya memiliki regexp yang sangat rumit untuk melakukan penggantian dan itu tidak berfungsi. Ada cara yang lebih baik:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

"Trik" di sini (untuk menginginkan kata yang lebih baik) adalah cara Anda dapat menggunakan pencarian untuk membuat regexp (dan 'incsearch' menyorotinya saat Anda memasukkan karakter) dan kemudian menggunakan pola kosong di substitusi: kosong default pola ke pola pencarian terakhir.

Contoh:

/blue\(\d\+\)
:%s//red\1/

Setara dengan:

:%s/blue\(\d\+\)/red\1/

Lihat:

:help 'incsearch'
:help :substitute

1
wow ... Saya sudah mencari sesuatu seperti ini
figurassa

1
ya, aku berharap aku tahu tentang ini lebih cepat. Tetapi sekali lagi, itulah yang saya katakan tentang semua yang saya pelajari yang baru di vim.
Robert Massaioli

26
Bagi siapa pun yang benar-benar mencintai ini, coba tekan <Ctrl-R>/untuk memasukkan kueri pencarian terakhir. (Lihat :help i_CTRL-R) Sangat berguna untuk mirip dengan di atas, tetapi Anda ingin menangkap bagian dari hasil pencarian. (seperti ini: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...juga berfungsi dengan *(mencari kata di bawah kursor). Plugin yang disebut visual-star-search memperluas fungsionalitas *untuk mencocokkan seluruh teks dari pilihan visual yang membuatnya mudah untuk mencari & mengganti teks yang dipilih, misalnya v3e(pilih secara visual 3 kata) *(pencarian) dan :%s//replacement/g(ganti semua kejadian dengan " penggantian"). Saya menggunakan ini begitu sering bahwa saya memiliki pemetaan untuk perintah substitusi global yang: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity

1
@idbrii karena orang yang membaca mungkin adalah Vim noobs (saya), %s:seharusnya :%s, dan untuk sistem saya, saya membutuhkannya \(\)daripada\\(\\)
Charlie Gorichanaz

155

Saya membuat referensi ini dari perintah saya yang paling sering digunakan untuk seorang teman saya:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

Anda daftar "~ X" untuk pergi ke tanda dengan nama X. Itu tidak berhasil bagi saya - sebagai gantinya saya menggunakan "'X" (kutipan tunggal).

Wow. Anda benar sekali. Ketika saya mengetik panduan, saya kira mata saya hanya melihat tilde dan dipoleskan pada centang belakang. Saya akan memperbarui yang sesuai. Terimakasih atas peringatannya.
brian newman

5
daftar ini bagus, tetapi saya benar-benar ingin tahu bagaimana Anda menggambar tabel ini? dengan VIM? plugin yang mana? Saya sedang mencari satu saat ini.
Kent

6
Saya menggunakan VIM, tetapi tidak ada plugin. Namun; menggunakan fitur blok pilih membuatnya relatif mudah. Senang Anda menemukan daftar berguna! ~ brian
newman brian

11
Ctrl-Q untuk pemilihan blok adalah kekhususan mswin.vim yang memungkinkan CTRL-V untuk menempel. Sebagian besar pengguna vim akan menganggap ini jahat dan menonaktifkan mswin.vim. "+ P atau Ctrl-R + tidak terlalu sulit untuk mengetik untuk memasukkan konten clipboard.
Benoit

144

gi beralih ke mode penyisipan, menempatkan kursor di lokasi yang sama seperti sebelumnya.


29
Saya sangat senang ketika tahu tentang g;sekarang ini membuat saya menangis :-)
Patrick Oscity

@longdeqidao tidak sama sekali. Ia kembali ke titik penyisipan terakhir. Jadi Anda dapat menggulir isi isi hati Anda dan itu akan menarik Anda kembali ke tempat Anda memasukkan terakhir.
Cyber ​​Oliveira

9
FYI, g; (yang @PatrickOscity disebut di atas) menempatkan kursor di tempat pengeditan dibuat. Anda dapat menggunakannya beberapa kali untuk kembali dalam sejarah. Memperhatikan hal ini di sini karena bantuan vim saya tidak menyebutkan ini karena beberapa alasan aneh.
PonyEars

13
Keintiman Vim tidak pernah berhenti mengesankan saya. Karena @PonyEars menyebutkan g;saya mencoba jika "lawannya" adalah g,dan lihatlah, kita bisa maju dan mundur!
Cyber ​​Oliveira

alebih pendek. :) Tetapi gimemang sangat intuitif, dengan gbiasanya menjadi operasi yang berlawanan.
Erwin Rooijakkers

105
: q!

Saya berharap saya tahu itu sebelum saya mulai vi untuk pertama kalinya.


23
sebagai seorang cowok emacs, itu adalah komentar terlucu yang pernah saya baca. tidak yakin Anda memang begitu. Kamu membuatku bahagia hari ini.
pjammer

29
Saya ingat mencoba vim dan emacs untuk pertama kalinya pada hari yang sama, tidak tahu cara keluar juga. Aku berpikir dalam hati, apa yang salah dengan orang-orang ini !?
physicsmichael

13
+1. Pertama kali Anda memulai vim, pesan defaultnya adalah "tulis: q untuk keluar". Saya akan menghemat banyak waktu lol
José Ramón

2
@ JoséRamón Tapi itu tidak menunjukkan di layar secara default jika Anda memasukkan vim tanpa membuka file. Apakah ini ditambahkan baru-baru ini? Saya ingat dengan jelas mencoba vim tahun yang lalu dan sudah ada di sana. Ini juga memberi tahu Anda untuk menggunakan :q!jika Anda mencoba berhenti tanpa menyimpan buffer.
mechalynx

5
@ivy_lynx ya, Anda mungkin benar, tetapi hanya jika Anda membuka vim tanpa file. Biasanya, pertama kali Anda membuka vim adalah karena Anda perlu mengedit file config di Unix, jadi Anda menulis "$ vim file" dan Anda tidak dapat menemukan jalan keluar. Atau hanya aku satu-satunya?
José Ramón

56

^ XF selesai menggunakan nama file dari direktori saat ini. Tidak ada lagi menyalin / menempel dari terminal atau memeriksa ganda menyakitkan.

^ XP selesai menggunakan kata-kata dalam file saat ini

: set scrollbind memaksa satu buffer untuk menggulir di samping buffer lain. misalnya, membagi jendela Anda menjadi dua panel vertikal. Muat satu file di masing-masing (mungkin versi berbeda dari file yang sama). Lakukan :set scrollbinddi masing-masing. Sekarang saat Anda menggulir dalam satu, kedua panel akan menggulir bersama. Ideal untuk membandingkan file.


Bagaimana cara menonaktifkan scrollbind setelah saya mengaktifkannya?
Amjith

2
jinxed_coder : :set noscbuntuk mematikannya dan gunakan :set scbuntuk menyalakannya (tidak :scrollbind). :h scrollbind
jmdeldin

Aduh. Dikoreksi untuk ': atur scrollbind'.
Brian Agnew

7
^ XP dilengkapi dengan preferensi untuk kata-kata sebelumnya dalam file, ^ XN dengan preferensi untuk kata-kata berikutnya dalam file.
u0b34a0f6ae

Anda juga dapat melakukan diff file dengan membuka file1 dan menjalankan :diffsplit file2atau hanya memulai dengan vim -d file1 file2. Vim secara otomatis menggulir kedua file.
Brian McCutchon

51

Anda dapat menggunakan seluruh rangkaian perintah untuk mengubah teks di dalam tanda kurung / tanda kurung / tanda kutip / tag. Sangat berguna untuk menghindari keharusan menemukan awal dan akhir grup. Coba ci(, ci{, ci<, ci", ci', cttergantung pada objek apa yang ingin Anda ubah. Dan ca(, ca{, ...varian menghapus tanda kurung / tanda kutip juga.

Mudah diingat: ubah pernyataan di dalam tanda kurung / ubah pernyataan tanda kurung.


16
ini bukan hanya untuk c. Anda dapat melakukan ini dengan dmenghapus (misalnya di (atau da (), yuntuk menarik, vuntuk memilih dll.)
Nathan Fellman

Halo! Saya ingin tahu ada dokumentasi yang digunakan untuk ini :help? Saya tidak dapat menemukannya di mana pun. > _ <
Matej

1
@ Peter Saya sudah memeriksa yang sebelumnya, tetapi tidak dapat menemukan menyebutkan perilaku "pembatas +" aneh. Ternyata berada di :help motion.txt! Terima kasih!
Matej

2
tip ini adalah satu-satunya alasan mengapa saya beralih ke vi di tempat pertama :)
Justin L.

1
Jika Anda mengedit HTML atau XML, Anda dapat menggunakan cituntuk mengubah konten dari tag saat ini. Misalnya dalam <span>Some text</span>, jika kursor Anda lebih dari "m" yang dapat Anda lakukan dituntuk mendapatkan <span></span>.
Jonathan Potter

47
  1. Jangan Escpernah menekan . Lihat jawaban ini untuk mempelajari alasannya . Seperti disebutkan di atas, Ctrl+ Cadalah alternatif yang lebih baik. Saya sangat menyarankan memetakan Caps Lockkunci Anda untuk melarikan diri.

  2. Jika Anda mengedit bahasa yang kompatibel dengan Ctags , menggunakan file tag dan :ta, Ctrl+ ], dll. Adalah cara yang hebat untuk menavigasi kode, bahkan di banyak file. Juga, Ctrl+ Ndan Ctrl+ Ppenyelesaian menggunakan file tag adalah cara yang bagus untuk mengurangi penekanan tombol.

  3. Jika Anda mengedit garis yang dibungkus karena lebih lebar dari buffer Anda, Anda dapat bergerak naik / turun menggunakan gk dan gj.

  4. Cobalah untuk fokus pada penggunaan perintah gerak yang efektif sebelum Anda mempelajari kebiasaan buruk. Hal-hal seperti menggunakan 'dt' atau 'd3w' alih-alih menekan xa berkali-kali. Pada dasarnya, setiap kali Anda menemukan diri Anda menekan tombol yang sama berulang kali, mungkin ada cara yang lebih baik / lebih cepat / lebih ringkas untuk mencapai hal yang sama.


11
Jangan gunakan Escape? Itu bid'ah. Melarikan diri adalah teman baik Anda, baik di dalam maupun di luar pekerjaan.
xcramps

28
jika itu teman yang baik, mengapa begitu jauh di keyboard?
anthony

karena 99% orang tidak pernah menggunakannya.
Stefano Borini

5
Escape dipisahkan dari tombol lain dengan beberapa inci pada keyboard saya. Anda tidak bisa melewatkannya.
Brian Carper

15
# 3 mengagumkan! Masih belajar hal-hal baru ...
brian newman

45

Tombol tanda bintang *,, akan mencari kata di bawah kursor.

[+ Tabakan membawa Anda ke definisi fungsi C yang ada di bawah kursor Anda. (Namun, itu tidak selalu berhasil.)


1
Coba 'man ctags' jika Anda menggunakan * nix untuk mempelajari cara membuat file "tag" yang memberitahu vim cara menemukan definisi fungsi atau variabel dalam banyak bahasa selain C. Gunakan ctrl +] untuk menemukan definisi dari token di bawah kursor Anda, atau gunakan: tag tokenToFind untuk menemukan token yang diketahuinya. Anda bahkan dapat memulai vim dengan "vim -t tokenToFind" untuk membuka file yang sesuai dan posisikan kursor pada fungsi yang perlu Anda edit.
Adam Liss

23
tombol # akan mencari arah sebaliknya untuk kata di bawah kursor
Funkodebat

github.com/bronson/vim-visual-star-search memungkinkan pencarian bintang untuk pemilihan visual. Saya tidak ingin ketinggalan lagi.
Patrick Oscity

[ + Tab akan bekerja selalu ketika Anda memperpanjang pathdengan folder yang diperlukan sepertiset path+=path/to/files
dlmeetei

43

ZZ(bekerja seperti :wq)

Dan tentang posisi kursor: Saya menemukan bahwa kursor yang selalu berada di tengah layar keren -

set scrolloff=9999

2
Tidak tahu itu. :xmelakukan itu juga
sa125

18
Tidak sepenuhnya akurat. Bekerja seperti :x, yang hanya menyimpan file jika ada perubahan, sedangkan:wq selalu menyimpan file.
Erik B

ZQ (berfungsi seperti: q!)
xialu

42

Beberapa tambahan terbaru saya untuk Vim brainstore saya:

  • ^wi: Langsung ke tag di bawah kursor dengan memisahkan jendela.
  • cib/ciB: Ubah teks di dalam set kurung () atau kurung {}, masing-masing saat ini.
  • :set listchars=tab:>-,trail:_ list: Tampilkan tab / spasi tambahan yang secara visual berbeda dari spasi lainnya. Ini sangat membantu dengan pengkodean Python.

4
Ini membutuhkan lebih banyak suara! cibbagus.
Matt Parker

juga: ciw untuk mengubah kata saat ini (atau gak, yang sama tetapi hanya tangan kiri) ciW untuk mengubah W saat ini = o. (rd) Sames dengan v bukannya c akan memilih dalam visual bukannya mengganti
lajarre

5
cib setara dengan mengetikkan "ci (". Anda juga dapat melakukan "ci [", "ci {", atau (jika vimrc Anda diatur dengan benar) "ci <", untuk jenis kurung lain.
Tom Lord

2
Juga, "cit" untuk mengubah teks di dalam tag. Sangat berguna saat bekerja dengan XML / HTML.
Walter

Anda juga harus menyebutkan bahwa Anda dapat menggunakan suffix dengan brace penutup, jika Anda menginginkannya. juga, saya baru saja belajar tentang ci}& cit- wow, ini akan sangat berguna. vi[m]membuktikan program yang sangat menarik!
underscore_d


34

: shell untuk meluncurkan konsol shell dari Vim. Berguna ketika misalnya Anda ingin menguji skrip tanpa berhenti Vim. Cukup tekan ^ d ketika Anda selesai dengan konsol shell, dan kemudian Anda kembali ke Vim dan file yang diedit.


Saya kira :!shitu terlalu sulit. Saya lebih suka itu karena lebih mudah untuk membuat baris perintah menggunakan register / penyelesaian dari buffer saat ini atau misalnya menggunakan %/ %:huntuk nama file / dirname saat ini dll
lihat

1
Yang ini sangat keren. Saya menggunakannya setiap hari .. Sebelum itu,: wq, lakukan hal-hal cli, buka kembali vim dengan file yang sama .. Optimasi hebat
Flashin

7
Ctrl-Z untuk beralih ke shell dan fg <ENTER> untuk kembali ke vim.
Mario G.

Masukan map <Esc>! :shell<CR>dalam Anda .vimrc, dan Anda dapat memulai shell hanya dengan Alt + !, atau Alt + Shift + 1. (Mnemonic: :!{cmd}dieksekusi {cmd}dengan shell.)
musiphil

:shellakan memulai level shell bersarang baru. Padahal ctrl-ztidak.
wisbucky


31

enkripsi

vim -x filename.txt

Anda akan diminta untuk memasukkan frasa sandi, mengedit dan menyimpan. Sekarang setiap kali Anda membuka file in vi lagi Anda harus memasukkan kata sandi untuk dilihat.


Sinkronkan ini dengan dropbox Anda dan Anda mendapatkan pengelola kata sandi yang sangat bagus ;-)
Luis Nell

15
Tetapi perhatikan bahwa kecuali Anda set cryptmethod=blowfish(hanya tersedia dalam 7,3+) itu akan menggunakan algoritma dengan kekuatan menggelikan. Lihat help encryptionuntuk lebih detail.
AB

3
Tolong jangan gunakan enkripsi vim, ini bukan enkripsi yang baik, dan keamanan yang buruk lebih buruk daripada tidak sama sekali. Info lebih lanjut: github.com/neovim/neovim/issues/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish meta-tldr: "diperbaiki di Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , untuk alasan kompatibilitas yang dibutuhkannya untuk menjadi cryptmethod baru, jadi gunakan :set cm=blowfish2"
underscore_d

28

Bangun dan debug kode Anda dari dalam Vim!

Konfigurasi

Tidak banyak, sungguh. Anda memerlukan Makefiledi direktori saat ini.

Untuk Mengkompilasi

Saat Anda berada di Vim, ketikkan :makeuntuk memanggil shell dan buat program Anda. Jangan khawatir ketika output bergulir; cukup tekanEnter ketika sudah selesai untuk kembali ke Vim.

Sihir

Kembali dalam Vim, Anda memiliki perintah berikut yang Anda inginkan:

  1. :cl daftar kesalahan, peringatan, dan pesan lainnya.
  2. :ccmenampilkan pesan kesalahan / peringatan saat ini di bagian bawah layar dan melompat ke baris yang menyinggung dalam kode Anda.
  3. :cc nmelompat ke pesan nth .
  4. :cn maju ke pesan berikutnya.
  5. :cp melompat ke pesan sebelumnya.

Masih ada lagi; jika Anda tertarik, ketikkan :help :ccdari dalam Vim.


1
bekerja dengan lebih dari sekedar kompilasi kode. Yaitu setiap tugas yang ditulis dalam makefile sangat berguna untuk ini.
Dwight Spencer

25

^ P dan ^ N

Isi teks sebelumnya (^ P) atau berikutnya (^ N).

^ O dan ^ I

Pergi ke lokasi sebelumnya (^ O - "O" untuk yang lama) atau ke yang berikutnya (^ I - "I" di dekat "O").

Saat Anda melakukan pencarian, mengedit file, dll., Anda dapat menavigasi melalui "lompatan" ini maju dan mundur.

Tanda

Tekan ma (tanda m , a - nama merek). Kemudian untuk kembali ke posisi, ketik `a .


1
Wow, saya tidak tahu tentang ^ O dan ^ I: itu mengagumkan. Mungkin bernilai termasuk :help jump-motionsdll dalam jawaban Anda jika ada yang ingin informasi lebih lanjut.
DrAl

lihat ShowMarks vim.org/scripts/script.php?script_id=152 . Ini akan membantu Anda mengingat di mana dan apa semua tanda Anda berada di buffer. Anda dapat mengaktifkan dan menonaktifkan visualisasi dengan \ mt
tester

Saya tidak mendapatkan perbedaan antara ^ P dan ^ N ...
lajarre

@ lajarre mereka menelusuri daftar penyelesaian yang tersedia di arah yang berlawanan
Patrick Oscity

2
Saya sering menggunakan ^ O ^ O ketika membuka Vim setelah saya perhatikan bahwa saya ingin mengedit file yang terakhir diedit lagi. Penghemat waktu yang sangat besar!
Patrick Oscity

24

Tekan %ketika kursor berada pada kutipan, tanda kurung, kurung, atau kurung untuk menemukan pasangannya.


20
Jika kursor tidak melebihi salah satu dari itu, ia bergeser ke kanan sampai menyentuh salah satunya.
Cyber ​​Oliveira

@ Léo: Terima kasih atas tip bonusnya!
Adam Liss

22

Hingga [karakter] ( t). Ini berguna untuk perintah apa pun yang menerima rentang. Favorit saya adalah ct;atau ct)yang menghapus semuanya hingga tanda koma / tanda kurung penutup dan kemudian menempatkan Anda dalam mode sisipkan.

Juga, Gdan ggberguna (masing-masing Ke bawah dan atas).


yang terbaik di sini, meskipun beberapa yang lain juga berguna, saya baru tahu tentang mereka semua
Funkodebat

1
Juga falih-alih t, yang akan [beraksi] melalui karakter itu; misalnya, memiliki kursor di awal argumen fungsi, df,akan menghapusnya (dalam bahasa yang sesuai, tentu saja).
Actorclavilis

t dan f sangat bagus untuk mengedit bagian dari variabel camelCase. Misalnya, jika Anda hanya menduplikasi baris dan perlu mengubah firstVariable ke secondVariable, posisikan kursor Anda di awal firstVariable, lalu ctV
Greg

1
T dan F juga berfungsi, tetapi berlawanan arah.
Fede

20

^r^w untuk menempelkan kata di bawah kursor dalam mode perintah.

Ini sangat berguna saat menggunakan grep atau mengganti perintah.


Jika itu satu-satunya kata yang Anda inginkan, maka * dalam mode normal akan mencari kata di bawah kursor.
idbrii

17

Mengetik nomor baris diikuti oleh ggakan membawa Anda ke baris itu.


31
: diikuti oleh nomor baris melakukan hal yang sama: 42 pergi ke nomor baris 42
Anti Veeranna

12
Mengetik nomor baris diikuti oleh G memiliki efek yang sama.
Cyber ​​Oliveira

3
<number>gopergi ke <number>karakter th dalam file.
Actorclavilis

17

Saya berharap saya tahu hal-hal modus blok visual dasar sebelumnya. Bahkan jika Anda tidak menggunakan Vim untuk hal lain, itu bisa menghemat waktu untuk membuka file di Vim hanya untuk beberapa operasi blok. Saya cukup yakin saya membuang banyak waktu melakukan hal semacam ini secara manual.

Contoh yang saya temukan sangat berguna, ketika, katakanlah, refactoring daftar nama konstanta simbolis secara konsisten:

Masuk ke mode Blok Visual ( Ctrl+ Quntuk saya di Windows, bukan Ctrl+ V)

Gerakkan kursor untuk menyorot blok yang diinginkan.

Lalu, I whatever textdan tekanEsc untuk memasukkan teks di depan blok pada setiap baris.

Gunakan Asebagai gantiI agar teks dimasukkan setelah blok pada setiap baris.

Juga - hanya dengan mengganti kasus pemilihan visual dengan ~bisa menjadi penghemat waktu yang besar.

Dan menghapus kolom juga, dtentu saja.


15

^ y akan menyalin karakter di atas kursor.


6
... dan ^ E akan memasukkan karakter di bawah kursor
terlalu banyak php

tidak berfungsi untuk saya, itu hanya memindahkan kursor ke awal teks
Alex

14

q <letter> - merekam makro.

dan

@ <same-letter> - memutarnya kembali.

Sejauh ini, ini adalah perintah yang paling berguna di Vim karena Anda dapat membuat komputer melakukan banyak pekerjaan untuk Anda, dan Anda bahkan tidak perlu menulis program atau apa pun.


Penggunaan qhal-hal yang disederhanakan, tetapi Anda tidak diharuskan untuk menggunakannya: cukup simpan ke dalam buffer yang dinamai perintah buffer "- misalnya, menggunakan buffer a- "ad$...
Mei

@Mei qmerekam makro; makro dapat berisi perintah, bukan hanya teks, jadi "ad$berbeda dari qa.
Brian McCutchon

@Sortofabeginner Itu tidak relevan di sini. Perintah "ad $ menempatkan teks ke dalam buffer a dan qa menjalankannya.
Mei

2
@Mei qatidak menjalankannya; qamencatat dan @amenjalankannya. Memang benar bahwa Anda dapat menulis makro dalam teks biasa, menyimpannya dalam register adengan sesuatu seperti "ad$, dan kemudian menjalankannya dengan @a, tetapi ini sedikit lebih banyak pekerjaan. Ada perbedaan mendasar antara cut-and-paste dan record-and-run.
Brian McCutchon

Doh! Saya tahu itu. Terima kasih atas koreksi
Mei

13

Membuka banyak file menggunakan tab

:tabe filepath

Menavigasi antara file yang terbuka

gt and gT or :tabn and :tabp

Simpan sesi terbuka sehingga Anda bisa kembali ke daftar file yang terbuka nanti

:mksession session_file_name.vim

Buka sesi yang dibuat

vim -S session_file_name.vim

Tutup semua file sekaligus

:qa

Perintah lain yang saya pelajari baru-baru ini

autocmd

Ini memungkinkan Anda untuk menjalankan perintah pada suatu acara, jadi Anda bisa misalnya menjalankan perintah make ketika Anda menyimpan file menggunakan sesuatu seperti:

:autocmd BufWritePost *.cpp :make

12

qx akan mulai merekam penekanan tombol. Anda dapat melakukan hampir semua tugas pengeditan dan Vim mengingatnya. Tekan q lagi saat Anda selesai, dan tekan @x untuk memutar ulang penekanan tombol Anda. Ini bagus untuk pengeditan berulang yang terlalu rumit untuk menulis pemetaan. Anda dapat memiliki banyak rekaman dengan menggunakan karakter selain x .


5
Juga karakter yang sama 'x' dibagi antara perintah makro 'q' record dan clipboard bernama ("x ...). Anda dapat meninggalkan potongan makro di sekitar file Anda dan menyalinnya ke clipboard bernama (misalnya" xyy ) dan kemudian putar kembali (@x).
Cyber ​​Oliveira

Dan jika Anda pernah membuat makro awesomist, Anda dapat melewati clipboard itu ke _vimrc Anda dengan 'let @x = ""' (meletakkan makro di "") dan simpan selamanya!
Kearns

11

Saya harus mengatakan bahwa salah satu favorit saya adalah meletakkan jendela bantuan di tab baru:

:tab help <help_topic>

Ini membuka bantuan di tab baru dan, sebagai orang yang menyukai tab Vim, ini sangat berguna.


2
Buffer adalah tab vim. Mereka lebih baik didukung oleh alur kerja vim. Saya menduga tab hanya ditambahkan ke vim karena terlalu banyak orang tidak mengerti buffer.
still_dreaming_1

Ok jadi segera setelah mengatakan itu, saya menemukan penggunaan untuk tab di vim. Memang benar bahwa jika Anda menggunakan satu buffer per tab, Anda perlu belajar tentang buffer. Bukan itu cara tab dimaksudkan untuk digunakan dalam vim. Sebagian besar pengguna vim canggih menggunakan buffer seperti cara tab digunakan di sebagian besar program. Banyak orang berpikir tab seharusnya dinamai tata letak di vim. Mereka sebagian besar karena memiliki koleksi jendela yang berbeda terbuka di tab yang berbeda. Anda juga dapat memiliki buffer spesifik yang Anda buka kembali banyak di satu tab, dan menggunakan tab lain untuk melihat semua buffer lainnya.
still_dreaming_1

9

cw

Ubah kata - menghapus kata di bawah kursor dan menempatkan Anda dalam mode masukkan untuk mengetik yang baru. Tentu saja ini berfungsi dengan tombol gerakan lain, sehingga Anda dapat melakukan hal-hal seperti c $ untuk mengubah ke akhir baris.

karakter f +

Menemukan kemunculan karakter berikutnya pada baris saat ini. Jadi Anda dapat melakukan vft untuk memilih semua teks hingga "t" berikutnya pada baris saat ini. Ini adalah tombol gerakan lain, jadi itu berfungsi dengan perintah lain juga.


9

:b [any portion of a buffer name]untuk mengganti buffer. Jadi, jika Anda memiliki dua buffer, "somefile1.txt", dan "someotherfile2.txt", Anda dapat beralih ke yang kedua dengan sederhana ":b 2.t<enter>". Ini juga mendukung penyelesaian tab, meskipun tidak diperlukan.

Berbicara tentang penyelesaian tab, pengaturannya :set wildmode=full wildmenujuga sangat membantu. Ini memungkinkan penyelesaian tab lengkap untuk mode-perintah, serta menu gaya ncurses yang sangat membantu dari semua kemungkinan kecocokan saat menggunakannya.


9

:% s, / cari, / ganti,

Anda dapat menggunakan karakter selain /(garis miring) untuk memisahkan pola substitusi. Dengan cara ini Anda tidak perlu melarikan diri dari tebasan jalur file.


2
oh sial ya. Saya tahu sedmemiliki ini, tetapi tidak vim. Semakin banyak Anda tahu ♒ ☆
beerbajay
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.