Advertisement
  1. Code
  2. General

10 Kesalahan Teratas Saat Beralih ke Vim

Scroll to top
Read Time: 13 min

() translation by (you can also view the original English article)

Akui saja: setiap kali Anda melihat seseorang menggunakan Vim, Anda mempertimbangkan kemungkinan bahwa mereka tahu sesuatu yang tidak Anda lakukan. Mengapa lagi mereka akan menggunakan editor yang, dalam pikiran Anda, adalah tanggal, sampah sumber terbuka? Pikirkan apa yang Anda inginkan, tetapi ada alasan mengapa pengembang top bersumpah dengan Vim.

Tutorial yang dipublikasi ulang

Setiap beberapa minggu, kami mengunjungi kembali beberapa posting favorit pembaca kami dari sepanjang sejarah situs. Tutorial ini pertama kali diterbitkan pada Februari 2011.

Sampai Anda menghabiskan setidaknya satu bulan bekerja setiap hari dengan editor, Anda pasti akan membencinya! Ini khususnya mengapa sebagian besar pendatang baru akan bermain-main dengan Vim selama sehari, menjadi jijik, dan tidak pernah menyentuhnya lagi. Apa yang disayangkan adalah bahwa, jika pengembang ini bisa melampaui perangkap, mereka akan diperkenalkan dengan kecepatan dan fleksibilitas yang luar biasa.


1. Terlalu Banyak Mode

Memang benar: Vim bukan editor kode standar Anda (lebih baik). Transisi dari, katakanlah, TextMate ke Vim akan menjadi proses yang sepenuhnya berbeda dari beralih dari TextMate ke Espresso. Selalu ingat itu ketika Anda menemukan diri Anda merobek rambut Anda karena Vim tampaknya menolak memasukkan teks ketika Anda mengetik.

Meskipun ada beberapa mode dalam Vim, kami akan fokus pada tiga yang paling penting. Namun sebelum kita melanjutkan, perhatikan bahwa setiap tombol melayani fungsi yang berbeda, tergantung pada mode yang Anda gunakan saat ini. Bahkan lebih membingungkan - pada awalnya - huruf besar memicu tindakan yang berbeda dari huruf kecil.

Dalam mode perintah, menekan huruf kecil 'i' akan memicu 'Mode Insert.' Namun, huruf besar 'I' akan memindahkan kursor ke awal baris. Ini mungkin terdengar membingungkan, tetapi memberikan Anda kekuatan luar biasa!

  • Perintah: Secara default, Vim harus beristirahat dalam mode perintah. Pikirkan mode ini sebagai mode 'berkeliling'. Perintah: Secara default, Vim harus beristirahat dalam mode perintah. Pikirkan mode ini sebagai mode 'berkeliling'.
  • Sisipkan: Menekan huruf kecil 'i' dalam mode perintah akan mengalihkan Anda ke 'Mode Penyisipan.' Pendatang baru untuk Vim akan menemukan mode ini menjadi akrab. Akibatnya, meskipun, mereka sering tetap dalam mode ini jauh lebih lama dari yang seharusnya (saya tahu saya lakukan). Sebagai aturan praktis, memasukkan modus harus murni digunakan untuk tujuan tunggal untuk memasukkan teks. Ketika selesai, segera kembali ke modus perintah.
  • Visual: Pikirkan mode visual sebagai mode 'pilihan'. Perlu memilih lima baris berikutnya dan menghapusnya? Dengan editor kode normal, Anda dapat menggunakan mouse untuk memilih lima garis secara visual, lalu tekan tombol backspace. Dengan Vim, di sisi lain, Anda akan menekan modal V untuk beralih ke mode Visual, dan kemudian ketik 5j untuk memilih lima baris ke bawah. Akhirnya, Anda akan menekan d, untuk menghapus.

Saya tahu ini terdengar sangat membingungkan pada awalnya. Anda mungkin berpikir untuk diri sendiri, 'Semua itu berfungsi hanya untuk menghapus lima baris?' Sebenarnya, metode ini jauh lebih cepat.


2. Editor Kuno

Mengapa Anda mengubah hidung Anda di atas tiga dekade pembangunan?

Anda mungkin mendengar teman-teman Anda berkata, 'Bukankah Vim editor kode kuno?' Yah, kamu bisa mengatakan itu; sudah ada selama lebih dari tiga puluh tahun. Meskipun sejujurnya, mengapa Anda mengubah hidung Anda di atas tiga dekade pembangunan? Itu lebih lama daripada aku hidup! Lebih baik lagi, bahkan sampai hari ini, Vim sedang dalam pengembangan aktif. Rilis terbaru, 7.3, telah tersedia pada bulan Agustus 2010.

Kedua, penting untuk diingat bahwa Vim bukanlah Vi. Jika pengalaman Anda hanya dengan yang terakhir, luangkan waktu untuk mengunduh rilis terbaru dan main-main dengan fitur-fitur baru. Anda akan terkejut!


3. Saya Suka Cupmate Snippet

Jika Vim tidak dapat melakukannya, Anda dapat bertaruh bahwa ada plugin yang tersedia di suatu tempat!

Anda akan segera menemukan bahwa, jika Vim tidak dapat melakukan tugas tertentu, maka kemungkinan plugin telah dikembangkan untuk menyediakan fungsionalitas itu. Misalnya, pertimbangkan fitur cuplikan sangat baik dari TextMate. Meskipun Vim tidak mendukung ini secara native, Anda dapat mengunduh plugin snipMate, yang seharusnya membuat pengalaman itu hampir identik dengan apa yang biasa Anda lakukan.

Pelajari Lebih Lanjut Tentang Beralih ke Vim Dari TextMate


4. Saya Tidak Bisa Menggunakan Tombol Panah

Semakin sedikit gerakan, semakin baik.

Pertama, ini tidak benar. Itu mungkin terjadi pada Vi, tetapi Anda bebas menggunakan bagaimana Vim dalam cara yang terasa paling nyaman bagi Anda. Jadi gunakan tombol panah untuk isi hati Anda - meskipun perlu diingat bahwa ada alasan mengapa sebagian besar pengguna Vim tidak.

Pemetaan h, j, k, l ke kiri, bawah, atas, dan kanan, masing-masing, melayani dua tujuan:

  • Tidak Ada Pilihan: Kembali pada hari itu, mesin tidak memiliki tombol panah yang membantu. Dengan demikian, mereka tidak punya banyak pilihan selain memilih alternatif terbaik.
  • Sedikit Gerakan: Jika tangan Anda pada umumnya beristirahat di sepanjang baris kedua keyboard, tidak masuk akal untuk berulang kali memindahkan tangan Anda ke bagian kanan bawah keyboard setiap kali Anda ingin memindahkan kursor. Gerakan kurang, semakin baik. Dengan pengaturan ini, Anda dapat melewati dokumen Anda tanpa bergerak satu inci.

Ketika semua dikatakan dan dilakukan, Anda adalah orang yang menggunakan editor. Jika, pada awalnya, Anda merasa lebih nyaman menggunakan tombol panah, maka dengan segala cara lakukan!


5. Saya seorang Desainer, Teman

Tidak apa-apa! Vim bukan untuk semua orang. Sebagai orang yang setidaknya mencoba melakukan pekerjaan desain dari waktu ke waktu, saya dapat sepenuhnya membuktikan bahwa Vim mungkin bukan yang terbaik bagi para desainer.

Pengembang bukanlah desainer; Itu wajar bahwa fakta ini akan tercermin dalam pilihan editor mereka.

Jika Anda menemukan bahwa sebagian besar hari Anda dihabiskan untuk bekerja dengan HTML dan CSS, maka mungkin Vim bukan untuk Anda. Sekarang, bukan berarti Anda tidak perlu mencobanya; tetapi tentu saja dapat dimengerti, jika Anda memutuskan untuk tetap menggunakan editor yang lebih ramah desainer, seperti Coda.


6. Penawaran Vim Tidak Ada Editor Saya Saat Ini Tidak Sudah Lakukan

Polos dan sederhana, itu sampah. Tentu saja, setiap editor memang memiliki poin kuat, tetapi Anda akan menemukan bahwa Vim sangat kuat, dan, yang lebih penting, fleksibel. Ada ratusan hingga ratusan plugin yang tersedia (gratis) yang akan memberikan dukungan untuk hampir semua jenis fungsi yang Anda butuhkan.

Banyak pendatang baru sering mengutip perintah 'Ganti Batin' yang sudah ada sebagai nilai jual yang besar. Itu pasti untuk saya! Katakanlah Anda memiliki potongan kode berikut:

1
2
var joe = 'plumber';

Dengan asumsi kursor berada di awal baris tersebut, dan Anda ingin mengubah nilai 'tukang ledeng' menjadi 'hitam', secara tradisional, Anda mungkin menggunakan tombol panah atau mouse untuk memilih dan mengubah teks. Dengan Vim, prosesnya sangat disederhanakan. Cukup ketik: ci'. Ini adalah singkatan dari 'Ganti Kutipan Batin', atau, temukan kumpulan tanda kutip tunggal berikutnya, dan ubah nilainya di dalam.

Plugin Kick-Ass

  • snipMate: Memungkinkan Anda, misalnya, mengetik, dan memiliki sebuah elemen div penuh yang diperluas. Hal ini sangat membantu.
  • Surround: Bungkus bagian teks dengan parens, tag, tanda kurung, dll.
  • NerdTree: Jelajahi filesystem Anda dan untuk membuka file dan direktori. Ini menyajikan filesystem kepada Anda dalam bentuk pohon yang Anda manipulasi dengan keyboard dan / atau mouse. Ini juga memungkinkan Anda untuk melakukan operasi filesystem sederhana.
  • TComment: Dengan mudah dan cepat komentar tertentu baris kode.
  • Sparkup: Serupa dengan ZenCoding, tetapi berikan lebih banyak dukungan untuk menerapkan nilai ke elemen juga, seperti: ul> li {Teks item daftar saya. }.

7. File Vimrc Saya Kosong

Ini adalah mengeluh awal yang saya miliki dengan Vim, juga. Ketika pertama kali diluncurkan, mengatakan, MacVim, Anda sedang dilemparkan ke serigala! Tidak ada kode yang penyorotan, tidak ada format, tidak smart indentasi... tidak ada apa-apa! Khususnya jika Anda menggunakan editor Vim kustom, setidaknya harus ada file vimrc dasar untuk memulai. Ini bisa menjadi pengalaman yang mengintimidasi mencoba mencari tahu bagaimana menerapkan preferensi kustom Anda.

Bagi mereka yang tidak terbiasa dengan vimrc file, itu adalah pada dasarnya file yang memungkinkan Anda untuk menentukan preferensi editor.

Gunakan ini sebagai starter (klik tombol Expand di bawah):

1
2
" .vimrc File
3
" Maintained by: Jeffrey Way
4
" jeffrey@jeffrey-way.com
5
" http://net.tutsplus.com
6
"
7
8
"Forget compatibility with Vi. Who cares.
9
set nocompatible
10
11
"Enable filetypes
12
filetype on
13
filetype plugin on
14
filetype indent on
15
syntax on
16
17
"Write the old file out when switching between files.
18
set autowrite
19
20
"Display current cursor position in lower right corner.
21
set ruler
22
23
"Want a different map leader than \
24
"set mapleader = ",";
25
26
"Ever notice a slight lag after typing the leader key + command? This lowers
27
"the timeout.
28
set timeoutlen=500
29
30
"Switch between buffers without saving
31
set hidden
32
33
"Set the color scheme. Change this to your preference. 
34
"Here's 100 to choose from: http://www.vim.org/scripts/script.php?script_id=625
35
colorscheme twilight
36
37
"Set font type and size. Depends on the resolution. Larger screens, prefer h20
38
set guifont=Menlo:h14
39
40
"Tab stuff
41
set tabstop=3
42
set shiftwidth=3
43
set softtabstop=3
44
set expandtab
45
46
"Show command in bottom right portion of the screen
47
set showcmd
48
49
"Show lines numbers
50
set number
51
52
"Prefer relative line numbering?
53
"set relativenumber"
54
55
"Indent stuff
56
set smartindent
57
set autoindent
58
59
"Always show the status line
60
set laststatus=2
61
62
"Prefer a slightly higher line height
63
set linespace=3
64
65
"Better line wrapping 
66
set wrap
67
set textwidth=79
68
set formatoptions=qrn1
69
70
"Set incremental searching"
71
set incsearch
72
73
"Highlight searching
74
set hlsearch
75
76
" case insensitive search
77
set ignorecase
78
set smartcase
79
80
"Hide MacVim toolbar by default
81
set go-=T
82
83
"Hard-wrap paragraphs of text
84
nnoremap <leader>q gqip
85
86
"Enable code folding
87
set foldenable
88
89
"Hide mouse when typing
90
set mousehide
91
92
"Shortcut to fold tags with leader (usually \) + ft
93
nnoremap <leader>ft Vatzf
94
95
" Create dictionary for custom expansions
96
set dictionary+=/Users/jeff_way/.vim/dict.txt
97
98
"Opens a vertical split and switches over (\v)
99
nnoremap <leader>v <C-w>v<C-w>l
100
101
"Split windows below the current window.
102
set splitbelow              
103
104
" session settings
105
set sessionoptions=resize,winpos,winsize,buffers,tabpages,folds,curdir,help
106
107
"Set up an HTML5 template for all new .html files
108
"autocmd BufNewFile * silent! 0r $VIMHOME/templates/%:e.tpl
109
110
"Load the current buffer in Firefox - Mac specific.
111
abbrev ff :! open -a firefox.app %:p<cr>
112
113
"Map a change directory to the desktop - Mac specific
114
nmap <leader>d :cd ~/Desktop<cr>:e.<cr>
115
116
"Shortcut for editing  vimrc file in a new tab
117
nmap <leader>ev :tabedit $MYVIMRC<cr>
118
119
"Change zen coding plugin expansion key to shift + e
120
let g:user_zen_expandabbr_key = '<C-e>'
121
122
"Faster shortcut for commenting. Requires T-Comment plugin
123
map <leader>c <c-_><c-_>
124
125
"Saves time; maps the spacebar to colon
126
nmap <space> :
127
128
"Automatically change current directory to that of the file in the buffer
129
autocmd BufEnter * cd %:p:h
130
131
"Map code completion to , + tab
132
imap <leader><tab> <C-x><C-o>
133
134
" More useful command-line completion
135
set wildmenu
136
137
"Auto-completion menu
138
set wildmode=list:longest
139
140
"http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE
141
set completeopt=longest,menuone
142
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
143
inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
144
  \ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
145
inoremap <expr> <M-,> pumvisible() ? '<C-n>' :
146
  \ '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
147
148
"Map escape key to jj -- much faster
149
imap jj <esc>
150
151
"Delete all buffers (via Derek Wyatt)
152
nmap <silent> ,da :exec "1," . bufnr('$') . "bd"<cr>
153
154
"Bubble single lines (kicks butt)
155
"http://vimcasts.org/episodes/bubbling-text/
156
nmap <C-Up> ddkP
157
nmap <C-Down> ddp
158
159
"Bubble multiple lines
160
vmap <C-Up> xkP`[V`]
161
vmap <C-Down> xp`[V`]
162
163
" Source the vimrc file after saving it. This way, you don't have to reload Vim to see the changes.
164
if has("autocmd")
165
 augroup myvimrchooks
166
  au!
167
  autocmd bufwritepost .vimrc source ~/.vimrc
168
 augroup END
169
endif
170
171
" easier window navigation
172
nmap <C-h> <C-w>h
173
nmap <C-j> <C-w>j
174
nmap <C-k> <C-w>k
175
nmap <C-l> <C-w>l
176
177
"------------------------"
178
"NERDTREE PLUGIN SETTINGS
179
"------------------------"
180
"Shortcut for NERDTreeToggle
181
nmap <leader>nt :NERDTreeToggle <CR>
182
183
"Show hidden files in NerdTree
184
let NERDTreeShowHidden=1
185
186
"autopen NERDTree and focus cursor in new document
187
autocmd VimEnter * NERDTree
188
autocmd VimEnter * wincmd p
189
190
"Helpeful abbreviations
191
iab lorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
192
iab llorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
193
194
"Spelling corrects. Just for example. Add yours below.
195
iab teh the
196
iab Teh The
197
198
" Get to home dir easier
199
" <leader>hm is easier to type than :cd ~
200
nmap <leader>hm :cd ~/ <CR>
201
202
" Alphabetically sort CSS properties in file with :SortCSS
203
:command! SortCSS :g#\({\n\)\@<=#.,/}/sort
204
205
" Shortcut to opening a virtual split to right of current pane
206
" Makes more sense than opening to the left
207
nmap <leader>bv :bel vsp
208
209
" Saves file when Vim window loses focus
210
au FocusLost * :wa
211
212
" Backups
213
set backupdir=~/.vim/tmp/backup// " backups
214
set directory=~/.vim/tmp/swap// " swap files
215
set backup " enable backup
216
217
" No more stretching for navigating files
218
"noremap h ;
219
"noremap j h
220
"noremap k gj
221
"noremap l gk
222
"noremap ; l
223
224
set showmatch " show matching brackets
225
226
" print empty <a> tag
227
map! ;h <a href=""></a><ESC>5hi

8. Saya Tidak Ingin Menggunakan Terminal

Saya tidak - setidaknya tidak lebih dari yang saya miliki juga - ada berbagai editor Vim khusus yang memberikan pengalaman yang lebih seperti Windows / Mac GUI.

Editor ini akan memberikan dukungan untuk jenis penekanan tombol yang tertanam ke dalam tubuh Anda, seperti "Command + F" untuk mencari, atau "Command + W" untuk menutup jendela saat ini.


Ingat bagaimana, di sekolah, kadang-kadang, siswa yang duduk di sebelah Anda mampu menjelaskan dan membantu Anda memahami beberapa konsep yang sulit lebih dari guru? Alasannya adalah karena, setelah Anda menguasai sebuah kerajinan, sulit untuk mengingat apa yang secara pribadi memberi Anda kesulitan terbesar. Dari bulan September hingga Oktober, saya memulai tantangan empat minggu, yang saya sebut “Mengawali Vim.” Setelah mendengar banyak sekali pengembang yang sangat berbakat memuji editor kode yang tampaknya berusia sepuluh tahun ini, saya memutuskan bahwa itu bernilai sebulan dari waktu saya untuk mencari tahu mengapa begitu banyak orang menganggap Vim sebagai editor terbaik di planet ini.


10. Saya Tidak Dapat Mengedit File di Server Saya

Tentu saja Anda dapat, meskipun, diakui, itu tidak cukup user-friendly seperti, katakanlah, fitur server jauh Coda. Berbicara tentang Panic, jika Anda pengguna Transmit, Anda dapat mempertimbangkan untuk menginstal plugin Transmit FTP.

"Skrip ini memungkinkan Anda mengunggah file saat ini melalui Transmit langsung dari Vim. Agar berfungsi, Anda harus bekerja pada file yang terkait dengan koneksi Transmit, dan koneksi ini harus memiliki "DockSend" diaktifkan."

Dengan plugin ini, ketika mengedit file yang memiliki koneksi Transmit (file terbuka melalui Transmit), Anda hanya perlu menekan Control + U untuk mendorong pembaruan tersebut kembali ke server jauh Anda. Ini mudah!

Sejujurnya, Anda harus mencoba mengadopsi proses build / deployment yang lebih baik. Dengan cara ini, daripada menggunakan FTP, Anda dapat git push.


Tentu - ada beberapa alasan untuk tidak menggunakan Vim. Ini memiliki kurva belajar yang curam, dan membutuhkan pemikiran ulang lengkap tentang bagaimana editor kode harus berfungsi. Konon, ada ratusan alasan mengapa Anda harus menggunakan Vim. Satu-satunya pertanyaan adalah: mengapa bukan Anda?

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.