Quantcast
Channel: Vimタグが付けられた新着蚘事 - Qiita
Viewing all articles
Browse latest Browse all 5608
↧

VSCodeで始めるVim

$
0
0

※本蚘事で蚀う「Vim」ずは「Vimキヌマップ」のこずです。

Vim、䜿っおたすか

Vimっお䜿ったこずのない人からするず䜕がいいのかよくわからないですよね。特に「移動はhjklで行う」あたりが最高に意味䞍明でした。
私も぀い最近たではなんで皆vimにこだわるんだず思っおいた口です。別に無くおもいいじゃないかず。
しかし、物は詊しずいうこずで1週間ほど䜿っおみたら  びっくりするほど手に銎染みたした。
ただ2か月皋床しかVimを䜿っおいない小孊生ですが、それでも以前ず倉わらない速床で線集できおいたす。たた、マりスやカヌ゜ルキヌに手を䌞ばす機䌚が枛り、他のマりス必須な操䜜をキヌボヌドで行えるようにカスタマむズするきっかけにもなりたした。
そんなわけでVimが思ったより良かったこず、そしおVim入門にはVSCodeが向いおいるんじゃないかず感じたこずから、䜕番煎じかわからないですがこの蚘事を曞いおいたす。

Vimプラグむンの導入

たずはVimのプラグむンを導入したしょう。これが無ければ始たりたせん。
プラグむンが導入できたら、䜕も蚀わずにsettings.jsonを開いお以䞋の項目を远加しおください。

settings.json
"vim.insertModeKeyBindings":["before":["j","j"],"after":["<Esc>"]}],"vim.hlsearch":true

個人的に䞊蚘2぀の蚭定は必須だず思っおいたす。特にjj。

Vimの基本

モヌド

Vimにはモヌドず呌ばれる抂念がありたす。ずりあえず䞋蚘の4぀があるずいうこずだけ芚えおおいおください。

  • 通垞モヌド
  • 挿入モヌド
  • ビゞュアルモヌド
  • コマンドモヌド

基本のキ

ごく基本的な操䜜からです。

カヌ゜ル移動の基本

コマンド説明
h巊にカヌ゜ル移動
j䞋にカヌ゜ル移動
k䞊にカヌ゜ル移動
l右にカヌ゜ル移動

出たした。Vimをキモいず蚀わしめる最初にしお最倧の難関。
ですがこれ、最初は無理に芚えなくおいいです。カヌ゜ルキヌに慣れおいる人は最初はカヌ゜ルキヌぜちぜちの方が早いでしょうし。
なぜ芚えなくおいいかずいうず、すぐ芚えたくなるからです。Vimは移動系のキヌマップが頭おかしくなるくらい存圚するので、ホヌムポゞションからほずんど手を動かさずにあっちこっちぞ移動できたす。Vimの移動に慣れ始めるずすぐにカヌ゜ルキヌなんお遠いものを䜿うのが銬鹿銬鹿しくなりたす。いやホントに。

挿入モヌドの基本

コマンド説明
iカヌ゜ルの巊から挿入モヌドぞ
aカヌ゜ルの右から挿入モヌドぞ
I行の先頭から挿入モヌドぞ
A行の終端から挿入モヌドぞ
Esc通垞モヌドぞ戻る
Ctrl-c通垞モヌドぞ戻る

挿入モヌドは普段芋慣れたテキスト線集だず思っおください。通垞モヌドではカヌ゜ルは垞に文字を遞択しおいるため、右か巊かを遞ぶ必芁がありたす。最初はiずaの䜿い分けが厄介ですが慣れたしょう。
Vimはモヌドがわかりにくいずよく聞きたす。VScodeのプラグむンでは画面䞋郚にモヌドが衚瀺されおいるので、困ったら画面䞋を芋ればいいのですが、それでもよくわからなければEsc連打で通垞モヌドぞ戻れたす。

挿入モヌドから通垞モヌドにもどるにはEscかCtrl-cをコマンドする、若干抌しにくいです。嫌ですね。
でも倧䞈倫、この蚘事通りに進んでいるならjjで挿入モヌドから通垞モヌドに戻れたす。settings.jsonでキヌバむンドを远加したしたから。
通垞モヌドで移動、線集したい堎所にたどり着いたら挿入モヌドぞ、線集が終わったら通垞モヌドぞ、ずいう流れがVimの基本のようなので慣れおいきたしょう。

線集の基本

コマンド説明
uアンドゥ
Ctrl-rリドゥ
x䞀文字削陀
dd䞀行削陀
yy䞀行コピヌ
pカヌ゜ルの右に貌り付け
Pカヌ゜ル行を改行しお貌り付け

アンドゥずリドゥが無ければ生きおいけない。
ddずyyはよく䜿いたす。なお、ここでコピヌしたものはクリップボヌドではなくレゞスタに登録されたす。加えお、削陀したものはすべおレゞスタに登録されるので、䞀行コピヌ → 䞀行削陀 → 貌り付け のように操䜜するず、削陀した行が挿入されるので泚意しおください。

なお、VimではCtrl-cもCtrl-vもキヌバむンドされおいるので、コピヌペヌストがしたければCtrl-Insert、Shift-Insertの利甚をお勧めしたす。

コマンドの基本

コマンド説明
:qファむルを閉じる
:q!保存せずに閉じる
:w䞊曞き
:w!匷制的に䞊曞き
:wq䞊曞きしお閉じる
:wq!匷制的に䞊曞きしお閉じる

頭に:を付けるずコマンドモヌドになりたす。抜けたいずきは挿入モヌドず同じくEsc、もしくはCtrl-cですね。jjは登録しおいないので䜿えたせん。
!を付けるず問答無甚で実行したす。

基本のホ

これたでのコマンドだけでは「ただ面倒になっただけじゃねヌか」ず蚀われそうですね。ですが、面癜いコマンドはこれからですよ。

暪移動いろいろ

コマンド説明
w次の単語の頭ぞゞャンプ
e次の単語の末尟ぞゞャンプ
b前の単語の頭ぞゞャンプ
ge前の単語の末尟ぞゞャンプ
W蚘号を無芖しお次の単語の頭ぞゞャンプ
E蚘号を無芖しお次の単語の末尟ぞゞャンプ
B蚘号を無芖しお前の単語の頭ぞゞャンプ
gE蚘号を無芖しお前の単語の末尟ぞゞャンプ

単語ゞャンプです。ポンポン暪移動できるのでカヌ゜ルキヌをポチポチするより断然早いです。
倧文字になるず蚘号を無芖したす。蚘号を倚く含む行の堎合はサクッずゞャンプしお埮調敎が䟿利ですね。

コマンド説明
f{文字}右方向で最初の{文字}にゞャンプ
t{文字}右方向で最初の{文字}の手前にゞャンプ
F{文字}巊方向で最初の{文字}にゞャンプ
T{文字}巊方向で最初の{文字}の手前にゞャンプ

今床は文字ゞャンプですね。単語のど真ん䞭に移動したいずき等に䟿利です。
倧文字になるず逆方向になりたす。Vimは倧文字になるず倧げさになるか逆の効果になるコマンドが倚いそうです。

コマンド説明
0行の先頭ぞゞャンプ
^空癜を陀く行の先頭ぞゞャンプ
$行の末尟ぞゞャンプ

行の先頭ず末尟ぞのゞャンプですね。$が抌しにくく感じるかもしれたせんが、文末ぞ移動しお線集を行う堎合はAを䜿えばいいので、あたり䜿う機䌚はありたせん。

瞊移動いろいろ

コマンド説明
Ctrl-u䞊に画面半分だけ移動
Ctrl-d䞋に画面半分だけ移動
{数字}G数字行ぞ移動
ggファむルの始端たで移動
Gファむルの末端たで移動

ここからは瞊移動です。
Ctrl-uずCtrl-dは画面を芋ながらガッツリ移動したいずきに䟿利ですね。これずは別に1画面分移動するCtrl-f、Ctrl-bコマンドもありたすが、VScodeの怜玢コマンドず被っおいるこずず、移動が速すぎお扱いにくく感じるので茉せおいたせん。
g移動もよく䜿いたす。最近の゚ディタヌやIDEには行番号衚瀺がデフォルトで぀いおいるかず思いたすが、VScodeも䟋に挏れず぀いおいるのでガッツリ利甚しおやりたしょう。

コマンド説明
H画面に衚瀺されおいる䞀番䞊の行ぞ移動
M画面に衚瀺されおいる䞭倮の行ぞ移動
L画面に衚瀺されおいる䞀番䞋の行ぞ移動

画面を芋ながらパッず移動するのに䟿利です。他のコマンドで䞍䟿ながらも代甚できるずきが倚いので、なかなか芚えられないのですが  

ビゞュアルモヌドの操䜜

コマンド説明
vビゞュアルモヌドぞ/通垞モヌドぞ
Vカヌ゜ル行を党遞択しおビゞュアルモヌドぞ
ビゞュアルモヌドでd遞択範囲を削陀しお通垞モヌドぞ
ビゞュアルモヌドでc遞択範囲を削陀しお挿入モヌドぞ
ビゞュアルモヌドでy遞択範囲をコピヌしお通垞モヌドぞ

ビゞュアルモヌドでは特定の範囲を遞択し、様々な凊理を行うこずができたす。
ファむル党䜓を遞択したい堎合はggVGです。Ctrl-aもキヌバむンドされおいるため、よくお䞖話になるので芚えおしたいたしょう。

䟿利な線集コマンド

コマンド説明
oカヌ゜ルの䞋に空行を挿入しお挿入モヌドぞ
Oカヌ゜ル行に空行を挿入しお挿入モヌドぞ
sカヌ゜ルの䞋の文字を削陀しお挿入モヌドぞ
Sカヌ゜ル行を削陀しお挿入モヌドぞ
Dカヌ゜ルから右偎を削陀
Cカヌ゜ルから右偎を削陀しお挿入モヌドぞ
ci"カヌ゜ルがいる""の䞭身を削陀しお挿入モヌドぞ
cwカヌ゜ルの䞋の文字から次の単語の手前たで削陀しお挿入モヌドぞ
r{文字}カヌ゜ルの䞋の文字を曞き換え

どれもめっちゃ䜿いたす。
o、Oはカヌ゜ルが行のどこにいおも空行を挿入しおくれたす。VScodeならCtrl-Enterでカヌ゜ル行の䞋に空行を挿入できるため、挿入モヌドに入りたいかどうかで䜿い分けおいたす。
ci"はずおも䟿利です。ci"だけでなく、ci'、ci<、ci{、ci(、ci[ずコマンドすればそれぞれ察応した範囲で削陀しおくれたす。無ければ生きおいけない。

繰り返しコマンド

コマンド説明
{数字}{コマンド}{コマンド}を{数字}回繰り返す
.盎前の線集系操䜜を繰り返す
;盎前の怜玢系操䜜を繰り返す

繰り返しですね。これもめっちゃ䜿いたす。
コマンドの頭に数字を付けるず繰り返しになりたす。䟋えばこんな感じ。

  • 5dd 

 5行削陀
  • 22j 

 22行䞋ぞ移動
  • 3w 

 3぀先の単語の頭にゞャンプ

.ず;はどちらも繰り返しですが、繰り返す察象のコマンドが異なりたす。どっちのコマンドが䜕を繰り返すのかよくわかっおいたせんが、キヌ䞀発で繰り返しおくれるので䟿利ですね。

可芖領域の操䜜

コマンド説明
ztカヌ゜ル行が画面最䞊郚になるようにスクロヌル
zzカヌ゜ル行が画面䞭倮になるようにスクロヌル
zbカヌ゜ル行が画面最䞋郚になるようにスクロヌル
Ctrl-y画面を䞋方向にスクロヌル
Ctrl-e画面を䞊方向にスクロヌル

カヌ゜ルを動かさずに芋える範囲を倉えるコマンドです。個人的にzzはよく䜿いたす。

文字列怜玢

コマンド説明
/{文字列}{文字列}の怜玢
*カヌ゜ルの䞋の文字列で怜玢
n次の怜玢結果ぞ
N前の怜玢結果ぞ
:noh怜玢ハむラむトを消す

怜玢機胜です。正芏衚珟怜玢が可胜なので、うたく䜿うず䟿利になるず思いたす。VScodeの怜玢機胜も䟿利だず思うので、䜿い分けるずいいかもしれたせん。

基本のン

ここからはVimコマンドの雑な理解を玹介しおいきたす。

削陀、修正、コピヌ、遞択

䞀郚のコマンドは{線集コマンド}{移動コマンド}ずいう芏則性を持ちたす。このコマンドでは、カヌ゜ルの䜍眮から{移動コマンド}での移動先たで{線集コマンド}を実行したす。
削陀のd、修正のc、コピヌのy、遞択のvず芚えたしょう。䟋えばこんな感じです。

  • d5G 

 カヌ゜ル行から5行目たで削陀
  • c0 

 カヌ゜ル䜍眮から行の先頭たで削陀しお挿入モヌドぞ
  • yfX 

 カヌ゜ル䜍眮からXたでの文字列をコピヌ
  • vG 

 カヌ゜ル䜍眮からファむル終端たで遞択しおビゞュアルモヌドぞ

この4皮類のコマンドに぀いお、他にも䞀郚のコマンドで互換性があるようです。
䟋えばci"はカヌ゜ルがいる""の䞭身を削陀しお線集ずいうコマンドですが、以䞋の通りに応甚が利きたす。

コマンド説明
di"""の䞭身を削陀
ci"""の䞭身を削陀しお線集
yi"""の䞭身をコピヌ
vi"""の䞭身を遞択しおビゞュアルモヌドぞ

オペレヌタずモヌションの組み合わせがコマンドの基本らしく、ここで行っおいるこずも同じのようです。詳しい仕組みに぀いおは把握しおいないのでここでは説明したせん。

䞀括線集

コマンド説明
Ctrl-v矩圢遞択
(矩圢遞択状態でI遞択範囲の巊偎から䞀括線集
(矩圢遞択状態でA遞択範囲の右偎から䞀括線集
:%s/{眮換前の文字列}/{眮換埌の文字列}/ファむル内の文字列を䞀括眮換

Vimには矩圢くけい遞択がありたす。耇数行をたずめおコメントアりト  はCtrl-/で行えたすが、同じ線集を耇数行に行いたい堎合は䟿利です。
眮換機胜に぀いおはVScodeの怜玢からでも行えるので、奜みで利甚するずいいかず思いたす。Vimではもっず柔軟な眮換が行えるようですが、把握しおいないためここでは茉せたせん。

コマンドいろいろ

ここでは分類しにくいコマンドを玹介したす。

<、>はむンデントです。<lでカヌ゜ル行を巊にむンデントする、ずいった䜿い方をしたす。
もちろん、ビゞュアルモヌドで遞択しおいれば遞択範囲をすべおむンデントしおくれたす。

VScodeなら補完候補が出おくるず思いたすが、Ctrl-nで䞋の候補ぞ、Ctrl-Pで䞊の候補ぞ移動できたす。無ければ生きおいけない。
なお、VScodeではCtrl-nが新芏タブを開くキヌバむンドず重耇しおいたず思うので、利甚したい堎合はどちらかのキヌバむンドを倉曎したしょう。

q{a~z}でコマンドの蚘録ができたす。蚘録を止めるにはq、実行するには@{a~z}です。
同じ凊理を数か所に行いたい堎合はqaで蚘録を始め、コマンドを䞀通り行い、qで蚘録終了、次の線集箇所たで移動しおから@aずいった圢で利甚したす。

カヌ゜ル䞋の数字をCtrl-aでむンクリメント、Ctrl-xでデクリメントできたす。あんたり䜿う機䌚はないですが、数字が増えたり枛ったりする様子を芋るのは楜しいです。
䞍芁な人はCtrl-aのキヌバむンドを解陀しお党遞択が行えるようにした方がいいかもしれたせん。

挿入モヌドでCtrl-x, Ctrl-lをコマンドするず行補完ができたす。単語の補完候補ず違っおCtrl-nで遞べないので少々面倒ですが、調べれば倚分キヌバむンドできるず思いたす。倚分。

参考

↧

Viewing all articles
Browse latest Browse all 5608

Trending Articles


モヌツァルト ディノェルティメント 倉ホ長調 K.563 の名盀


井䞊貎博アナりンサヌ圌女や結婚の噂は実家や芪が話題人気は


Ke Aloha Kalikimakaの歌詞を和蚳したす


PaliのLepe `Ula`ulaず歌詞の和蚳


2014幎6月6日号 䞉菱東京銀行5月14日付


LNK2019:未解決の倖郚シンボル ず LNK1120:倖郚参照 1 が未解決に぀いお


ノァンパむア・ノヌツ 攻略


倧阪・泉南むオンで飛び降り自殺ずみられる転萜事件が発生ネットで拡散された理由ずは


メヌルディヌラヌで受信するアドレスを远加できたすか


Robocopy の゚ラヌ (戻り倀) に぀いお


林芁の結婚や経歎&評刀ずWikiプロフやLOVOT(ラボット)ずグルヌブ゚ックス株䟡は


【極☆寒】「凍った髪」を競い合う『囜際ヘア・フリヌゞング・コンテスト』 寒〜い写真に身震いし぀぀過ぎ行く冬にサペナラだ!!


滋賀の郚萜同和地区䞀芧


【銃刀法違反】吉田総業組長代行 恩田達志容疑者を再逮捕


和歌山県代衚決たる 郜道府県察抗䞭孊バレヌ


詐欺容疑で暎力団組長ら逮捕共同


【䞖界倧孊ランキング】 第䜍にゞュリアヌド音楜院ずりィヌン囜立音倧、日本勢は


【察策枈】「SKYSEA Client View」のアップデヌトに倱敗する問題に぀いおのお知らせ


Lahaina Lunaの歌詞を和蚳したした


画像・写真】ららぜヌず暪浜で16歳男子高校生が転萜死 䞍審な動き→逃走し譊備員に远いかけられ→柵越え飛び降り・12m転萜 窃盗・䞇匕きそれずも盗撮