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.
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.
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.
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.
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.
^ 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.
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
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.
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.
Jika Anda mengedit garis yang dibungkus karena lebih lebar dari buffer Anda, Anda dapat bergerak naik / turun menggunakan gk dan gj.
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.
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
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.
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
37
gv memulai mode visual dan secara otomatis memilih apa yang sebelumnya Anda pilih.
: 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.
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
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:
:cl daftar kesalahan, peringatan, dan pesan lainnya.
:ccmenampilkan pesan kesalahan / peringatan saat ini di bagian bawah layar dan melompat ke baris yang menyinggung dalam kode Anda.
:cc nmelompat ke pesan nth .
:cn maju ke pesan berikutnya.
:cp melompat ke pesan sebelumnya.
Masih ada lagi; jika Anda tertarik, ketikkan :help :ccdari dalam Vim.
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.
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.
: 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 ^ 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:
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 .
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.
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.
: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.
Anda dapat menggunakan karakter selain /(garis miring) untuk memisahkan pola substitusi. Dengan cara ini Anda tidak perlu melarikan diri dari tebasan jalur file.
Jawaban:
Saya benar-benar berharap saya tahu bahwa Anda dapat menggunakan CtrlCalih-alih Escberalih dari mode insert. Itu merupakan peningkatan produktivitas nyata bagi saya.
sumber
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:
"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:
Setara dengan:
Lihat:
sumber
<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
):%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, misalnyav3e
(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>
.%s:
seharusnya:%s
, dan untuk sistem saya, saya membutuhkannya\(\)
daripada\\(\\)
Saya membuat referensi ini dari perintah saya yang paling sering digunakan untuk seorang teman saya:
sumber
gi beralih ke mode penyisipan, menempatkan kursor di lokasi yang sama seperti sebelumnya.
sumber
g;
sekarang ini membuat saya menangis :-)g;
saya mencoba jika "lawannya" adalahg,
dan lihatlah, kita bisa maju dan mundur!a
lebih pendek. :) Tetapigi
memang sangat intuitif, dengang
biasanya menjadi operasi yang berlawanan.Saya berharap saya tahu itu sebelum saya mulai vi untuk pertama kalinya.
sumber
:q!
jika Anda mencoba berhenti tanpa menyimpan buffer.^ 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 scrollbind
di masing-masing. Sekarang saat Anda menggulir dalam satu, kedua panel akan menggulir bersama. Ideal untuk membandingkan file.sumber
:set noscb
untuk mematikannya dan gunakan:set scb
untuk menyalakannya (tidak:scrollbind
).:h scrollbind
:diffsplit file2
atau hanya memulai denganvim -d file1 file2
. Vim secara otomatis menggulir kedua file.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', ct
tergantung pada objek apa yang ingin Anda ubah. Danca(, ca{, ...
varian menghapus tanda kurung / tanda kutip juga.Mudah diingat: ubah pernyataan di dalam tanda kurung / ubah pernyataan tanda kurung.
sumber
c
. Anda dapat melakukan ini dengand
menghapus (misalnya di (atau da (),y
untuk menarik,v
untuk memilih dll.):help
? Saya tidak dapat menemukannya di mana pun. > _ <:help motion.txt
! Terima kasih!cit
untuk mengubah konten dari tag saat ini. Misalnya dalam<span>Some text</span>
, jika kursor Anda lebih dari "m" yang dapat Anda lakukandit
untuk mendapatkan<span></span>
.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.
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.Jika Anda mengedit garis yang dibungkus karena lebih lebar dari buffer Anda, Anda dapat bergerak naik / turun menggunakan gk dan gj.
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.
sumber
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.)
sumber
[ + Tab
akan bekerja selalu ketika Anda memperpanjangpath
dengan folder yang diperlukan sepertiset path+=path/to/files
ZZ
(bekerja seperti:wq
)Dan tentang posisi kursor: Saya menemukan bahwa kursor yang selalu berada di tengah layar keren -
sumber
:x
melakukan itu juga:x
, yang hanya menyimpan file jika ada perubahan, sedangkan:wq
selalu menyimpan file.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.sumber
cib
bagus.ci}
&cit
- wow, ini akan sangat berguna.vi[m]
membuktikan program yang sangat menarik!gv memulai mode visual dan secara otomatis memilih apa yang sebelumnya Anda pilih.
sumber
: 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.
sumber
:!sh
itu terlalu sulit. Saya lebih suka itu karena lebih mudah untuk membuat baris perintah menggunakan register / penyelesaian dari buffer saat ini atau misalnya menggunakan%
/%:h
untuk nama file / dirname saat ini dllmap <Esc>! :shell<CR>
dalam Anda.vimrc
, dan Anda dapat memulai shell hanya dengan Alt + !, atau Alt + Shift + 1. (Mnemonic::!{cmd}
dieksekusi{cmd}
dengan shell.):shell
akan memulai level shell bersarang baru. Padahalctrl-z
tidak.Ini selalu menghiburku:
sumber
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.
sumber
set cryptmethod=blowfish
(hanya tersedia dalam 7,3+) itu akan menggunakan algoritma dengan kekuatan menggelikan. Lihathelp encryption
untuk lebih detail.:set cm=blowfish2
"Bangun dan debug kode Anda dari dalam Vim!
Konfigurasi
Tidak banyak, sungguh. Anda memerlukan
Makefile
di direktori saat ini.Untuk Mengkompilasi
Saat Anda berada di Vim, ketikkan
:make
untuk 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:
:cl
daftar kesalahan, peringatan, dan pesan lainnya.:cc
menampilkan pesan kesalahan / peringatan saat ini di bagian bawah layar dan melompat ke baris yang menyinggung dalam kode Anda.:cc n
melompat ke pesann
th .:cn
maju ke pesan berikutnya.:cp
melompat ke pesan sebelumnya.Masih ada lagi; jika Anda tertarik, ketikkan
:help :cc
dari dalam Vim.sumber
^ 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 .
sumber
:help jump-motions
dll dalam jawaban Anda jika ada yang ingin informasi lebih lanjut.Tekan
%
ketika kursor berada pada kutipan, tanda kurung, kurung, atau kurung untuk menemukan pasangannya.sumber
Hingga [karakter] (
t
). Ini berguna untuk perintah apa pun yang menerima rentang. Favorit saya adalahct;
atauct)
yang menghapus semuanya hingga tanda koma / tanda kurung penutup dan kemudian menempatkan Anda dalam mode sisipkan.Juga,
G
dangg
berguna (masing-masing Ke bawah dan atas).sumber
f
alih-aliht
, yang akan [beraksi] melalui karakter itu; misalnya, memiliki kursor di awal argumen fungsi,df,
akan menghapusnya (dalam bahasa yang sesuai, tentu saja).^r^w
untuk menempelkan kata di bawah kursor dalam mode perintah.Ini sangat berguna saat menggunakan grep atau mengganti perintah.
sumber
Mengetik nomor baris diikuti oleh
gg
akan membawa Anda ke baris itu.sumber
<number>go
pergi ke<number>
karakter th dalam file.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 text
dan tekanEsc untuk memasukkan teks di depan blok pada setiap baris.Gunakan
A
sebagai 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,
d
tentu saja.sumber
^ y akan menyalin karakter di atas kursor.
sumber
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.
sumber
q
hal-hal yang disederhanakan, tetapi Anda tidak diharuskan untuk menggunakannya: cukup simpan ke dalam buffer yang dinamai perintah buffer"
- misalnya, menggunakan buffera
-"ad$
...q
merekam makro; makro dapat berisi perintah, bukan hanya teks, jadi"ad$
berbeda dariqa
.qa
tidak menjalankannya;qa
mencatat dan@a
menjalankannya. Memang benar bahwa Anda dapat menulis makro dalam teks biasa, menyimpannya dalam registera
dengan 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.Membuka banyak file menggunakan tab
Menavigasi antara file yang terbuka
Simpan sesi terbuka sehingga Anda bisa kembali ke daftar file yang terbuka nanti
Buka sesi yang dibuat
Tutup semua file sekaligus
Perintah lain yang saya pelajari baru-baru ini
Ini memungkinkan Anda untuk menjalankan perintah pada suatu acara, jadi Anda bisa misalnya menjalankan perintah make ketika Anda menyimpan file menggunakan sesuatu seperti:
sumber
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 .
sumber
Saya harus mengatakan bahwa salah satu favorit saya adalah meletakkan jendela bantuan di tab baru:
Ini membuka bantuan di tab baru dan, sebagai orang yang menyukai tab Vim, ini sangat berguna.
sumber
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.
sumber
: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 wildmenu
juga sangat membantu. Ini memungkinkan penyelesaian tab lengkap untuk mode-perintah, serta menu gaya ncurses yang sangat membantu dari semua kemungkinan kecocokan saat menggunakannya.sumber
:% 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.sumber
sed
memiliki ini, tetapi tidakvim
. Semakin banyak Anda tahu ♒ ☆