私はいつもVimで新しいコマンドを学んでいますが、だれもがたまに何か新しいことを学ぶと確信しています。私は最近これについて学びました:
zz、zt、zb-画面の中央、上部、または下部にカーソルを置きます
何年も前に学びたいと思う他の便利でエレガントなコマンドは何ですか?
私はいつもVimで新しいコマンドを学んでいますが、だれもがたまに何か新しいことを学ぶと確信しています。私は最近これについて学びました:
zz、zt、zb-画面の中央、上部、または下部にカーソルを置きます
何年も前に学びたいと思う他の便利でエレガントなコマンドは何ですか?
回答:
挿入モードから切り替えるCtrlC代わりにEscを使用できることを私は本当に知りたいと思います。それは私にとって本当に生産性の向上になりました。
私が学んだ最も最近の「すごい」トリックは、複雑な検索と置換を行う方法です。かなり頻繁に過去に、私は置換を行うために本当に複雑な正規表現を持っていました、そしてそれはうまくいきませんでした。より良い方法があります:
: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
ここでの「トリック」(より良い単語が必要な場合)は、検索を使用して正規表現を作成し(「incsearch」が文字を入力すると強調表示される)、空のパターンを置換で使用する方法です。 patternのデフォルトは、最後の検索パターンです。
例:
/blue\(\d\+\)
:%s//red\1/
に相当:
:%s/blue\(\d\+\)/red\1/
見る:
:help 'incsearch'
:help :substitute
<Ctrl-R>/
を押して最後の検索クエリを挿入してみてください。(を参照:help i_CTRL-R
)上記と同様に非常に便利ですが、検索結果の一部をキャプチャする必要があります。(このように:%s:/\\([fF]rank\\) and mary/marie and \1/g
)
:%s//...
*
(カーソル下の検索語)でも機能します。visual-star-searchと呼ばれるプラグインは、の機能を拡張して*
、ビジュアル選択のテキスト全体を照合します。これにより、選択したテキストを簡単に検索および置換できます。たとえば、v3e
(視覚的に3語を選択)*
(検索)および:%s//replacement/g
(すべての出現箇所を「置換")。私はこれを頻繁に使用するため、グローバル置換コマンドのマッピングがあります:nmap <Leader>s :%s///g<left><left>
。
%s:
必要が:%s
あり、私のシステムでは、\(\)
代わりに必要でした\\(\\)
私は私の友人のために最もよく使用するコマンドのこのリファレンスを作成しました:
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.
giは挿入モードに切り替わり、以前と同じ位置にカーソルを置きます。
g;
た。涙が出てきました:-)
g;
、それの「反対」が見当がつかないかどうか試してみたのでg,
、前後に進むことができます!
a
短いです。:)しかしgi
、実際には非常に直感的であり、g
通常は反対の操作です。
:q!
私が初めてviを始める前に、そのことを知っていればよかったのです。
:q!
、バッファを保存せずに終了しようとした場合に使用するように指示します。
^ XFは、現在のディレクトリのファイル名を使用して完了します。端末からのコピー/貼り付けや面倒な二重チェックは不要です。
^ XPは現在のファイルの単語を使用して完了します
:set scrollbindは、1つのバッファーを強制的に別のバッファーと一緒にスクロールします。たとえば、ウィンドウを2つの垂直ペインに分割します。それぞれに1つのファイルをロードします(おそらく同じファイルの異なるバージョン)。行い:set scrollbind
、各中。1つをスクロールすると、両方のペインが一緒にスクロールします。ファイルの比較に最適です。
:set noscb
オフにして、オンにするために使用:set scb
します(ではありません:scrollbind
)。:h scrollbind
:diffsplit file2
vimを実行するか、vimをで開始することでファイルを比較することもできますvim -d file1 file2
。Vimは自動的に2つのファイルをスクロールバインドします。
コマンドのセット全体を使用して、括弧/括弧/引用符/タグ内のテキストを変更できます。グループの開始と終了を見つける必要がないことは非常に便利です。試すci(, ci{, ci<, ci", ci', ct
変更するオブジェクトの種類に応じて。また、ca(, ca{, ...
バリアントは角かっこ/引用符も削除します。
覚えやすい:かっこで囲まれたステートメント内の変更/かっこで囲まれたステートメントの変更
c
。d
削除するには、これを行うことができます(例:di(またはda()、y
ヤンク、v
選択など)
:help
ですが?どこにも見つかりません。> _ <
:help motion.txt
!ありがとう!
cit
して現在のタグのコンテンツを変更できます。たとえばで<span>Some text</span>
、カーソルが「m」の上にある場合はdit
、取得することができます<span></span>
。
Esc今までにプレスしないでください。その理由については、この回答をご覧ください。上記のように、Ctrl+ Cはより良い代替手段です。Caps Lockエスケープするためにキーをマッピングすることを強くお勧めします。
Ctags互換言語を編集している場合、タグファイルや:ta
、Ctrl+ ]などを使用すると、複数のファイル間でもコードをナビゲートできます。また、タグファイルを使用したCtrl+ NおよびCtrl+ P補完は、キーストロークを削減するための優れた方法です。
バッファーよりも幅が広いために折り返されている行を編集している場合は、gkとgjを使用して上下に移動できます。
悪い習慣を学ぶ前に、モーションコマンドの効果的な使用に集中してください。xaを何度も押す代わりに「dt」または「d3w」を使用するようなもの。基本的に、同じキーを繰り返し押すことに気付いたときは、同じことを達成するためのより良い/より速い/より簡潔な方法がおそらくあります。
アスタリスクキーは*、カーソルの下の単語を検索します。
[+ Tabを押すと、カーソルの下にあるC関数の定義に移動します。(ただし、常に機能するとは限りません。)
[ + Tab
path
を必要なフォルダで拡張すると、常に機能しますset path+=path/to/files
ZZ
(のように動作します:wq
)
カーソルの位置について:常に画面の真ん中に留まるカーソルはかっこいいことがわかりました-
set scrolloff=9999
:x
それも同様に
:x
、変更がある場合にのみファイルを保存しますが、:wq
常にファイルを保存します。
私のVimブレインストアに追加した最新のいくつか:
^wi
:ウィンドウを分割して、カーソルの下のタグにジャンプします。cib/ciB
:現在の括弧()または中括弧{}のセット内のテキストをそれぞれ変更します。:set listchars=tab:>-,trail:_ list
:他のスペースと視覚的に異なるタブ/末尾スペースを表示します。Pythonコーディングに非常に役立ちます。cib
素晴らしいです。
ci}
&について学びましたcit
-すごい、これは非常に便利です。vi[m]
とてもエキサイティングなプログラムを証明しています!
:shellはVimからシェルコンソールを起動します。たとえば、Vimを終了せずにスクリプトをテストする場合に便利です。シェルコンソールを使い終わったら、^ dを押すだけで、Vimと編集したファイルに戻ります。
:!sh
難しすぎると思います。私が好む、それが現在のバッファまたは例えば使用からレジスタ/補完を使用してコンコマンドラインに簡単ですので、%
/ %:h
現在のファイル名に/ dirnameになど
map <Esc>! :shell<CR>
て.vimrc
、Alt +!またはAlt + Shift + 1でシェルを起動できます。(:!{cmd}
{cmd}
:shell
ただし、ネストされた新しいシェルレベルが開始されます。一方ctrl-z
ません。
vimcryption
vim -x filename.txt
パスフレーズを求められ、編集して保存します。これで、viでファイルを再び開くたびに、表示するパスワードを入力する必要があります。
set cryptmethod=blowfish
(7.3以降でのみ利用可能)でない限り、笑える強さのアルゴリズムを使用することに注意してください。詳細についてはhelp encryption
、を参照してください。
:set cm=blowfish2
「
それほどではありません。Makefile
現在のディレクトリにが必要です。
Vimにいる間に、タイプ:make
してシェルを起動し、プログラムをビルドします。出力がスクロールするときに心配しないでください。押すだけEnter終了したら Vimに戻ります。
Vimに戻ると、次のコマンドを自由に使用できます。
:cl
エラー、警告、およびその他のメッセージをリストします。:cc
画面下部に現在のエラー/警告メッセージを表示し、コード内の問題の行にジャンプします。:cc n
n
番目のメッセージにジャンプします。:cn
次のメッセージに進みます。:cp
前のメッセージにジャンプします。さらにあります。興味がある場合は、:help :cc
Vimから入力してください。
前の(^ P)または次の(^ N)テキストを入力します。
前の場所(^ O-「O」)に移動するか、次の場所(^ I-「O」のすぐ近くにある「I」)に移動します。
検索やファイルの編集などを行うと、これらの「ジャンプ」を前後にナビゲートできます。
ma(m-マーク、a-マークの名前)を押します。後でその位置に戻るには、`aと入力します。
:help jump-motions
誰かがより多くの情報を必要とする場合に備えて、回答にetcを含める価値があるかもしれません。
%
カーソルが引用符、かっこ、角かっこ、中かっこにあるときに押して、一致を見つけます。
[文字](t
)まで。範囲を受け入れるすべてのコマンドに役立ちます。私のお気に入りは、ct;
またはct)
、末尾のセミコロン/閉じ括弧までをすべて削除してから、挿入モードにすることです。
また、G
とgg
も便利です(それぞれ下と上に移動します)。
f
代わりにt
、その意志[アクション]アップを通じて、その文字。たとえば、関数の引数の先頭にカーソルがあると、df,
それは削除されます(もちろん、適切な言語では)。
^r^w
コマンドモードでカーソルの下に単語を貼り付けます。
これは、grepコマンドまたはreplaceコマンドを使用するときに非常に役立ちます。
行番号を入力してから続けて入力するgg
と、その行に移動します。
<number>go
行く<number>
ファイル内番目の文字。
基本的なビジュアルブロックモードのことは以前に知っていたらよかったのに。他の目的でVimを使用しない場合でも、一部のブロック操作のためだけにVimでファイルを開くと、時間を大幅に節約できます。この種のことを手作業で行うのに膨大な時間を費やしたと確信しています。
例として、シンボリック定数名のリストを一貫してリファクタリングする場合に特に便利だとわかりました。
(ビジュアルブロックモード入力Ctrl+のQ代わりに、Windows上で私のためCtrl+ V)
カーソルを移動して、目的のブロックを強調表示します。
次に、I whatever text
を押しEscて、すべての行のブロックの前にテキストを挿入します。
A
代わりにI
を使用して、すべての行のブロックの後にテキストを挿入します。
また、単にビジュアル選択のケースを切り替えるだけで、~
時間を大幅に節約できます。
そしてd
もちろん、単に列も削除します。
^ yはカーソルの上にある文字をコピーします。
q <文字>-マクロを記録します。
そして
@ <same-letter>-再生します。
これらはVimで最も便利なコマンドです。コンピューターにたくさんの仕事をさせてくれるので、プログラムや何かを書く必要さえありません。
q
問題を単純化しますが、使用する必要はありません。"
たとえば、バッファを使用して、名前付きバッファにバッファコマンドを保存します。たとえば、a
"ad$
q
はマクロを記録します。マクロには、テキストだけでなくコマンドを含めることができるため、"ad$
とは異なりqa
ます。
qa
はそれを実行しません。qa
記録して@a
実行します。あなたが、プレーンテキストでマクロを記述するレジスタに格納することができますことは事実であるa
ようなものと"ad$
し、その後でそれを実行する@a
が、これはかなり多くの作業です。カットアンドペーストとレコードアンドランには基本的な違いがあります。
:tabe filepath
gt and gT or :tabn and :tabp
:mksession session_file_name.vim
vim -S session_file_name.vim
:qa
autocmd
イベントでコマンドを実行できるので、たとえば、次のようなものを使用してファイルを保存するときにコマンドmakeを実行できます。
:autocmd BufWritePost *.cpp :make
qxはキーストロークの記録を開始します。ほとんどすべての編集タスクを実行でき、Vimはそれを記憶しています。ヒットQ再び作業が終了している、とプレス@xあなたのキーストロークを再生します。これは、マッピングを作成するには複雑すぎる反復的な編集に最適です。x以外の文字を使用すると、多くの録音を作成できます。
私のお気に入りの1つは、ヘルプウィンドウを新しいタブに配置することです。
:tab help <help_topic>
これは新しいタブでヘルプを開き、Vimタブを愛する誰かとして、これは途方もなく便利です。
:%s、/検索、/置換、
/
(スラッシュ)以外の文字を使用して、置換のパターンを区切ることができます。これにより、ファイルパスのスラッシュをエスケープする必要がなくなります。
sed
はこれがあることを知っていましたが、知りませんでしたvim
。もっと知る♒☆