Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all 5727 articles
Browse latest View live

Vim で tags を使って ruby と gem のソースコードをブラウジングする(翻訳)

$
0
0

Vim で gem のコードを読むにはどうすればいいかを調べていたところ、参考になる記事があったので翻訳してみました。

原著者の許諾を得て翻訳・公開します。


数ヶ月前、私はシドニーに行きました。そこで私のチームメイトの Andrew が RubyMineのかなり気の利いた機能を見せてくれました。彼はその機能を使い、Ruby のメソッド定義元にジャンプすることができました。それ自体はそこまで特別ではありませんでした、彼がある gem のソースコードにシームレスに移動するまでは ― 私は感動しました。

この記事では、Vim で同様のワークフローを作成し、Vim を強力な IDE に変換する方法について説明します。それではまず、プロジェクト内のメソッド宣言元にジャンプしてみましょう。

Vim でメソッド定義やシンボル間をジャンプ移動するためには、移動することができるように、ある種のマップが必要となります。これらのマップは tags と呼ばれ、今回利用するのはExuberant Ctagsです。

最も簡単な tags の生成方法は、プロジェクトのルートディレクトリで ctags -Rコマンドを実行することです。vim-railsプラグインを使っている場合は、:Ctags1コマンドで tags を再生成することができます。guardを用いてファイルに変更があった時や、git hookで新しいコードをチェックアウトした時に自動で tags を生成するよう環境設定することもできます。私の場合は、手動での生成で十分でした。

tags 間を移動する

Vim は tags 間の移動機能が組み込まれているため、そのために新たに Vim プラグインを導入する必要はありません。私が最もよく使う2つのコマンドは、定義元に移動する ctrl + ]と、ジャンプ元の場所に戻る ctrl + oです。選択したシンボルに複数の tags がある場合は、ビジュアルモードでの :tselectコマンドや、g]コマンドを利用できます。それ以外に、:tnext:tpreviousを使うことができます。

もう一つの選択肢としては CtrlPを使うことです。 CtrlP はファイル名や tags を参照できるあいまい検索プラグインです。tags の移動を利用するためのコマンドは :CtrlPTagです。

Vim はマウスモードもサポートしています。ctrl + clickで定義元に移動し、ctrl + right clickで元に戻るという、モダンな IDE に似た移動をサポートしています。

gem のソースコードにジャンプする

ここまで、プロジェクト内で tags 生成・移動についてまとめてきましたが、私にとってはここ数年間これで十分でした。しかし利用している gem 内のメソッド定義にジャンプすることはできるのでしょうか?

Vim プラグインのインストールをしない場合、bundle openを使うと、エディタ上で gem のソースコードを参照することができます。幸運にも、我々はもっと良い方法で、利用している gem の tags を生成することができます。

そのためには、いくつかのプラグインを Vim にインストールする必要がありますー vim-rbenvvim-bundlerです。そしてパズルの最後のピースは、 gem-ctagsと呼ばれる gem です。

以上は Vim に現在のプロジェクトで使っている gem のソースコードに移動する方法を教えるのに十分なはずです。また、 bundler をフックし、gem の更新やインストールがあった場合にはいつでも tags を再生成してくれますーしっかりしていますね。

結論

完全に機能するセットアップをするには、まず brew で Exuberant Ctagsをインストールします。

brew install ctags

Pathogenを使っている場合、.vimrcに以下のプラグインの記載が必要です。

Plugin 'vim-ruby/vim-ruby'
Plugin 'tpope/vim-rails'
Plugin 'tpope/vim-rbenv'
Plugin 'tpope/vim-bundler'

その後、gem-ctagsrbenv-ctagsをインストールします。

gem install gem-ctags
gem ctags

mkdir -p ~/.rbenv/plugins
git clone git://github.com/tpope/rbenv-ctags.git \
  ~/.rbenv/plugins/rbenv-ctags
rbenv ctags

すると Vim が強力な Ruby の IDE に変わります。これで :Ctags1を実行することでプロジェクトの tags を生成・更新でき、ctrl + ]を押すことでソースコードの定義にジャンプすることができます。

参考情報

Vim のセットアップに必要な重要なプロジェクト:

  • gem-ctags: gem インストール時に tags を生成する
  • rbenv-ctags: rbenv で Ruby をインストールする際、ruby の tags を生成する
  • vim-ruby: Vim における Ruby ファイルのパスサポートを提供する
  • vim-rails: tags 再生成の簡単な方法を追加する
  • vim-rbenv: Vim における rbenv でインストールした Ruby ファイルのパスサポートを提供する
  • vim-bundler: Vim で tags の場所を設定する

Ctags を最新の状態に保つためには?

Vim のセットアップや tags についての記事やガイド:


  1. 元記事では:Rtagsと記載されていましたが、現在は:Ctagsというコマンドに変わっているようです。(参考:https://github.com/tpope/vim-rails/commit/b636decf2d7017aef42c18453a0ae2758ee9c2fc


Pane (tmux) - Window (vim) の移動をシームレスにする - Ctrl-h を殺さない ver.

$
0
0

4年前に『【Vim × tmux】Pane(tmux) - Window(Vim)の移動をシームレスに - Qiita』という記事を書いた.
当時とモチベーションは同じ.

Vim × tmuxの画面移動

tmuxでpane分割してVimを開いて作業しているとき,Vim内でもウィンドウ分割をすると画面内の移動が大変ややこしいことになる.

vim-tmux.png

面倒なのでVimとかtmuxとか気にせずに 同じキーバインドで画面の移動をしたい.

Vim Tmux Navigatorの問題点

前述の記事では以下のようなキーバインドで pane - window 間を意識せず移動できるような設定を紹介した.

  • C-h: 左に移動
  • C-j: 下に移動
  • C-k: 上に移動
  • C-l: 右に移動

しかし,このキーバインドでは C-h(backspace) や C-l(clear-screen)など,shell 上で日常的に使用するキーを殺すことになる.この点がネックになり,自分は Vim Tmux Navigator を使わなくなっていた

Tmux の key-table

ところで,tmux の bind-keybind)には -Tというオプションが存在する.

     bind-key [-nr] [-T key-table] key command [arguments]
                   (alias: bind)
             Bind key key to command.  Keys are bound in a key table.  By default (without -T), the key is bound in the prefix key table.  This table is used for
             keys pressed after the prefix key (for example, by default `c' is bound to new-window in the prefix table, so `C-b c' creates a new window).  The root
             table is used for keys pressed without the prefix key: binding `c' to new-window in the root table (not recommended) means a plain `c' will create a
             new window.  -n is an alias for -T root.  Keys may also be bound in custom key tables and the switch-client -T command used to switch to them from a
             key binding.  The -r flag indicates this key may repeat, see the repeat-time option.

             To view the default bindings and possible commands, see the list-keys command.

key-table には copy-mode, copy-mode-vi, prefixroootが存在し,何も指定しなければ prefixが利用される.また,-nをつければ rootになる.
Vim Tmux Navigator が C-hをハンドルできるのは,bind-key -nをしているから.

これをたとえば C-wを利用する keytable を作って,C-w + hで移動できるようにに変更できれば,Vim の window 移動のキーバインドで tmux も移動できるようになる.しかも backsapce や clear-screen も殺されずに済むはず.

navigator 用の key-table を作る

こんなかんじ

# `C-s` で NAVIGATOR table に切り替えbind-n C-w switch-client -T NAVIGATOR

# See: https://github.com/christoomey/vim-tmux-navigatoris_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"# `bind-key -n` のかわりに `bind -T NAVIGATOR` にする# `send-keys h` のかわりに `send-keys C-w h` にするbind-T NAVIGATOR h if-shell"$is_vim""send-keys C-w h""select-pane -L"bind-T NAVIGATOR j if-shell"$is_vim""send-keys C-w j""select-pane -D"bind-T NAVIGATOR k if-shell"$is_vim""send-keys C-w k""select-pane -U"bind-T NAVIGATOR l if-shell"$is_vim""send-keys C-w l""select-pane -R"bind-T NAVIGATOR \ if-shell"$is_vim""send-keys C-w \\""select-pane -l"# `C-w` が Tmux に喰われてしまうので,2回打つことで Vim に `C-w` を送れるようにして救う# 使用頻度の高い Window command がある場合は,明示的に `bind -T NAVIGATOR <key> send-keys C-w <key>` すればいいbind-T NAVIGATOR C-w send-keys C-w

vim 側は Vim Tmux Navigator の設定をそのまま利用する.

" <C-w> 系を Vim Tmux Navigator に移譲する
nnoremap <silent><C-w>h:TmuxNavigateLeft<cr>
nnoremap <silent><C-w>j:TmuxNavigateDown<cr>
nnoremap <silent><C-w>k:TmuxNavigateUp<cr>
nnoremap <silent><C-w>l:TmuxNavigateRight<cr>
nnoremap <silent><C-w>\\ :TmuxNavigatePrevious<cr>

これで,C-w + hjklで pane / window を気にせず移動ができるようになる.

【究極】エディタポエム vim,emacs,atom,Sublime Text,VS Code,Eclipse【至高】

$
0
0

えでぃた?なにそれ?的なひと、おすすめのEditorある?なひと向けの記事。
Knowledgeは含まれていないです。

結論:VS Codeがいちばんおすすめ。最初に触るEditorにvimやemacsはやめたほうがいい。挫折する確率高い。そのうえでGUI Editor極めたら最終的にvimやemacsも検討してみたらどうか。

比較

vim:動作がとても軽い。習得が難しい(せめてメニューバーが出てショートカットキーを都度参照できればいいのだが)。極めたら実質IDE。Typingだけで動かせるので覚えると操作が楽しい。

emacs:そこそこ軽い。習得が難しいがvimほどではない。極めたら実質IDE。小指が逝く。Typingだけで動かせるので覚えると操作が楽しい。

atom:使ったことない。良いらしい。最近VS codeに評判の良さを取って代わられた印象。

sublimetext:有料に切り替えない?の通知がうざすぎて実質有料。VS Codeと同等。機能性は十分。習得も用意。動作も軽い。vim,emacsと違いGUI EditorなのでCLIとの切り替えが地味に大量になりダルい。

VS Code:無料。機能性は十分。習得も容易。sublime textの上位互換。動作も軽い。sublime text同様vim,emacsと違いGUI EditorなのでCLIとの切り替えが地味に大量になりダルい。

Eclipse:Java使い向け。立ち上がりが重すぎる。2回言うけどJava向け。

提案→
VS Code。2018年現在最高の選択肢。CLI環境の便利さに気付くとvimやemacsに興味が湧くが実用性の観点で強力なGUI Editor使いこなしてるとCUI Editorは手間の割には得るものが少ないと分かる。

さらなる提案→
VS Codeの操作や有名なpluginを手足のように扱えるならEditor操作で必要なものは全部揃ったと言って問題ない。それ以上を求めるならそもそも必要なのはEditorではなく、それ以上の操作をするならProgramを組んで自動でやるべきだ。
ではvimやemacsは不要か?

GUI Editorを習得したあとにCUI Editorを使ってみたらいいと思う理由:
1.設定不要(emacsは分からないけどvimはそう感じる)
2.覚えたら一生使える(そうは言ってもVS Code覚えたら後続のGUI Editorも習得の手間はほとんど無いと思われるが)
3.操作をしていて楽しい(やってるうちに分かるけどそれが分かるまで手間がかなりかかる)
4.vimならServerにプリインストールされている(ひとによってはこれが全てな気もしてる)
5.Terminal環境から画面を切り替えないで済む(CLIで何でも自動化するマンの自分にはこれが最大の理由)

というわけでVS Codeおすすめです。vimやemacsは後回しにしたほうがいいです。あまりの使いづらさに思考のResourceを全て持っていかれるといっても過言ではないと思う。
それはそれとして、すでにCUI Editor使いこなしてる各位はそれを楽しんでください。

Vim入門

$
0
0

vim cs.png

Vimとは?

viから派生した高機能なテキストエディタです。
viはLinuxに標準搭載されているため、使ったことがある人は多いと思います。
大体同じような操作感ですが、viと違うところもあります。

vimの特徴

  • ストレスの少ないマルチプラットフォーム
  • とにかく軽くて速い
  • 基本的にキーボードだけで操作が可能

インストール方法

  • Mac/Ubuntu
    • MacとUbuntuには最初からインストールされています。
  • Windows
  • ローカル開発環境
    • sudo yum install -y vimインストールが完了すれば、 vim コマンドを利用できるようになります。

vimのモードについて

モード状態
ノーマルモードカーソル移動やテキストの削除、コピー、ペーストなどの簡単な指示を行う。
ビジュアルモードテキストを選択するだけのモード。
挿入モード実際にテキストを入力するモード。
コマンドラインモードファイルを開いたり、検索・置換などの様々な指示を行う。

モード切り替え

key内容
i挿入モードへ
o新しい行を追加し挿入モードへ
R上書きモードへ
vビジュアルモードへ
Ctrl + v矩形選択のビジュアルモードへ
ESCコマンドモードに戻る
ctrl + [コマンドモードに戻る
ctrl + zvim を一時停止する

Vimの保存と終了

key内容
:w [ファイル名]指定されたファイル名で保存する。ファイル名を省略した場合には、現在のファイルに上書きする
:w! [ファイル名]書き込みを強行する
ZZVimを終了する。ファイルが変更されている場合には、変更を保存する
:wqファイルを保存してVimを終了する
:qVimを終了する。ファイルに変更がある場合には警告が標示される
:q!Vimを強制的に終了する。ファイルに変更がある場合は、変更分は無視

カーソル位置を移動する

key内容
h(または←)左に1文字分移動する
j(または↓)下に1文字分移動する
k(または↑)上に1文字分移動する
l(または→)右に1文字分移動する
Ctrl + d半画面分下に移動する
Ctrl + u半画面分上に移動する
ggファイルの先頭へ移動する
Gファイルの末尾へ移動する
O行頭へ移動する
$行末へ移動する
w単語単位で右へ移動する
b単語単位で左へ移動する
Ctrl + f1画面分下に移動する
Ctrl + b1画面分上に移動する
zzカーソルが画面中央になるようにスクロール
Ctrl + o古いカーソル位置に戻る。 (Old)
Ctrl + i新しいカーソル位置に進む。

コピー&ペースト&削除

key内容
yy今いる行をコピー (yank)
pカーソルの場所に、ペースト
yy5p現在の行をコピーし、下に5行追加する
gv直前の選択範囲を再選択
xカーソルの位置にある文字を削除する。キーボードの[Del]と同じ挙動です
Xカーソルの位置の左の文字を削除する。キーボードの[BS]と同じ挙動です
ddカーソルのある行を1行削除する
Dカーソルのある位置から行末まで削除する

検索と置換

key内容
*カーソル下の単語を検索
#カーソル下の単語を検索 (上方向に検索)
:%s/hage/hoge/g単語の置換(hageをhogeへ置換)。%はファイル全体を表す。

編集

key内容
.直前の変更を繰り返す
uUndo
Ctrl + rRedo

特殊文字

key内容
Ctrl-v return改行文字の入力
Ctrl-v tabTab 文字の入力

ウィンドウ

key内容
:vsplit画面を左右に分割する
:e filename今いるWindowにファイルを開く (Edit)
:e test*.ccワイルドカードを指定してファイルを開く
Ctrl +w h左のWindowへ移動
Ctrl + w l右のWindowへ移動

バッファ

key内容
:buffers編集中のバッファ一覧を表示
:bn次のバッファに移動
:bd[elete]バッファを削除

単語補完

key内容
Ctrl + p単語補完(前方検索)

マクロ

key内容
q<letter>マクロの記録開始
qマクロの記録停止
@<letter>マクロの実行

レジスタ

key機能
:regレジスタの一覧表示
Ctrl + r "ヤンクした文字列をペースト

コマンドの意味

key意味
g繰り返し
c1回毎に確認

その他

key内容
:!command外部コマンドの実行
:範囲選択中に :を入力すると、選択領域の範囲指定( ’<,’> )が自動で挿入された状態でコマンドモードに入る。これを置換に利用すると便利。 (例: :'<,'>s/old/new/g)
Ctrl + a数値のインクリメント
Ctrl + x数値のデクリメント

Interactive Vim tutorial

文字化けしたファイルをvimのコマンドモードから変換してみる

$
0
0
  • iso-2022-jpのファイルをutf-8に変換
  • 適宜,文字コードは書き換え
vim-command-mode
:e++enc=iso-2022-jp |set fenc=utf-8|wq
  • 本当はもっと簡単にする方法がありそうなものだが,スクリプト化するとか?
  • 個人的にはここくらいまでの半自動くらいが好きだけど
  • コメントあればお願いします

vim 雑多メモ

$
0
0

モード

  • ノーマル
  • インサート
  • コマンドライン
  • ビジュアル
  • 検索

カーソル移動

インサート

コマンド

vimiumで情報収集力を高めよう!![vimiumチートシート]

$
0
0

はじめに

ウェブブラウザをもっと便利に使えないかなということで見つけたアドオンであるvimiumについて紹介します。

vimium(vimium-FF)とは

webブラウザをvimライクに使えるようにするアドオン。
手をキーボードのホームポジションから動かすことなく多くの動作ができるため、非常に使い勝手がよく、マウスへ手を動かさないため、慣れてくると爽快にブラウジングができる。

google-chrome : vimium
firefox : vimium-FF

以上のページからアドオンを入手できる。

動作方法

以下が普段使用するキーマッピングのチートシートです大文字のキー入力はShiftと同時押しという意味です。これ以外にもありますので、知りたい方はvimiumを追加した状態で?を入力してください。helpが表示されます。

キー入力動作
j下スクロール
k上スクロール
h左スクロール
l右スクロール
d下へ半ページ移動
u上へ半ページ移動
ggページ最上部へ移動
Gページ最下部へ移動
fページ内のリンクをマッピング(そのキーを入力するとジャンプ)
Fページ内のリンクをマッピング(そのキーを入力すると新タブで開く)
t新タブを開く
o新しいタブで検索
Jタブを左へ移動
Kタブを右へ移動
H戻る(back)
L進む(forward)
xタブを閉じる
X消したタブをもとに戻す
yy現在のURLをコピー
pコピーしてあるURLをカレントタブで開く
PコピーしてあるURLを新タブで開く
ページの再読込
/ページ内検索
n検索結果次へ
N検索結果前へ
iインサートモード

あまりvimium自体にこだわりすぎないほうが良い??

使ってみたら思うのですが、たまにおかしくなることがあります。その際は取り敢えずEscを押してみます。それでもダメならwebブラウザ自体のショートカットもしくはマウスを使用しています。便利にするためのアドオンに拘りすぎて逆に不便にしちゃわないように注意してください。
普段よく使うwebブラウザ自体のショートカットも軽く紹介しておきます。

キー入力動作
Ctrl+tabタブ移動(右)
Ctrl+Shift+tabタブ移動(左)
Ctrl+wタブ消去
Ctrl+rタブの再読込
F5タブの再読込
Ctrl+t新タブを開く
Alt+←戻る(back)
Alt+→進む(forward)
Space1ページ下へ
Shift+Space1ページ上へ

最後に

とても便利だし、アドオンなのでインストールがなく楽に使い始められて好きにやめられるので、是非試しに使ってみてほしいです。

また、こんな便利なのもあったよというものがあれば教えていただけると幸いです!

Emacsの使い方

$
0
0

Emacsを使ってみたい!という方や、Vimを使ってるけどEmacsも気になる!という方向けの記事ですが、Emacs使ってるぜ!って人も大歓迎です。
Let's emacs!

インストール

※筆者はUbuntuでしか使ったことがないので、Ubuntuでのやり方しか説明できません。

ターミナルを立ち上げて、下のコマンドを入力します。typo(間違えてvimの部分をemacsとしてしまうなど)すると違うパッケージがインストールされてしまう場合があるので気をつけてください。

$ sudo apt install -y vim

また、よくあるトラブルを回避するため、以下の行を.bashrcに追記することをおすすめしています。

alias emacs=vim

起動

起動の仕方は2通りあります。

$ vim    #正統派

$ emacs  #ちょっと変わった人向け

基礎的な編集

起動したままの画面で何かキーを押してみましょう。あなたがよほどの強運の持ち主でない限り何も入力できないと思います。これは、Emacsで「コマンドモード」と呼ばれる状態だからです。ここが初心者の方がよくつまずくポイントだと思います。試しにiキーを押してみてください。何か入力するとちゃんと画面に反映されるようになったと思います。このモードは「挿入モード」などと呼ばれます。Escキーを押すと先程の入力ができない状態に戻ります。Emacsではカーソルの移動は基本的にこのモードで行います。iで編集モードに入り、複数行のテキストを入力してください。そしてEscを押してください。hjklを押すとカーソルを移動できるのでやってみてください。また、xで1文字消去、ddで一行消去できます。

ファイルを保存したり開いたりする

前のセクションで基礎的な編集ができるようになったと思うので、ファイルとして保存してみましょう。コマンドモードで:w emacs.txtと入力してみてください。これで編集内容がemacs.txtに保存されました。Emacsを閉じてみましょう。:qと入力してください。
また、先程のファイルを開くには、

$ vim emacs.txt

または

$ emacs emacs.txt

と入力します。

おわりに

Emacsは非常に高機能で、ここには書ききれないほど多くの機能があります。Webで「vim 使い方」などと検索するといろいろな情報がみつかるので、試してみてください。

注意

本当はVimの説明です。Emacs使ってる方、ごめんなさい。


導入記録:vim に python用プラグイン導入 [CentOS 7.4]

$
0
0

はじめに

python の勉強を始めて、これまで jupyter notebook を利用していましたが、
より開発補助の効くエディタを調べている内に、vimカスタマイズに興味を持ちました。

これまでデフォルトのvimを利用していましたが、
便利なプラグインも多いようなので軽い気持ちで導入を試みました。

。。。。が、えらくハマったので、ここに記録を残します。

環境

OS:CentOS 7.4
Python:2.7 & 3.6
vim:7.4.160(OSバンドル) & 7.4.884 (再コンパイル)
vimプラグイン:dein, vimproc, unite, jedi

手順

1.vim の状態を確認する。→ pythonが無効であれば再ビルドする
2.dein 導入
3.tomlファイルの編集
4..vimrc の編集
5.vim を起動してプラグインの自動導入

これまで vimカスタマイズの経験がなかった為、
色々なページを参考にて、手順2から始めてしまいました。
手順1の必要性を認識していなった点がハマった原因です。

導入作業

事前確認

vim のビルド情報を参照してpython の状態を確認します。

vi --version | grep python

-comments        -langmap         -python          -viminfo
-conceal         -libcall         -python3         -vreplace

「python」 と 「python3」の頭文字部分が「-」になっています。

「-」の状態だと vim でpython実行が無効。ビルドが必要です。
「+」であれば、有効を意味します。

python が無効であると、関連プラグインは当然動きません。

vimを再ビルドする

以下の記事を参考ください。

vim8.0をインストールする

vimのソースをダウンロードする

wget https://github.com/vim/vim/archive/v7.4.884.tar.gz
tar -xfv https://github.com/vim/vim/archive/v7.4.884.tar.gz
cd  vim-7.4.884

Makefile を作成する

python2 と python3 の混在環境を用意するのであれば、
--with からconfigライブラリのパスを指定する必要があります。

 ./configure \
 --enable-fail-if-missing \
 --with-features=huge \
 --disable-selinux \
 --enable-luainterp \
 --enable-pythoninterp=dynamic \
 --with-python-config-dir=/usr/lib64/python2.7/config \
 --enable-python3interp=dynamic \
 --with-python3-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu \
 --enable-cscope \
 --enable-fontset \
 --enable-multibyte \
 vi_cv_path_python3=/usr/bin/python3.6

また、lua や python でエラーが発生するようであれば、
開発パッケージが足りていない可能性があります。
必要に応じて、インストールします。

yum install python-devel lua-devel

インストールする

make install

deinプラグインを導入する

以下の記事が参考になります。

dein.vimでプラグイン管理のはじめ方

tomlファイルを編集する

~/.vim/bundles/userconfig/plugin.toml
[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/vimproc.vim'
~/.vim/bundles/userconfig/plugin_lazy.toml
[[plugins]]                                                                 
repo   = 'Shougo/unite.vim'

# ファイルタイプ=python の際に読み込む
[[plugins]]
repo = 'davidhalter/jedi-vim'
on_ft = ['python']

[[plugins]]
repo = 'vim-syntastic/syntastic'
on_ft = ['python']
hook_post_source = 'let g:syntastic_python_checkers = ["flake8"]'

以下の記事が、参考になります。

NeoBundle から dein.vim に乗り換えたら爆速だった話
dein.vimによるプラグイン管理のマイベストプラクティス

.vimrc を編集する

ホームディレクトリに「.vimrc」を作成して編集することで、
オリジナルのvim環境が整備できます。
以下のように設定すると、上手く動きました。

.vimrc
set ignorecase "大文字/小文字を区別せず検索
set hlsearch   "検索結果をハイライト
set number     "行番号を表示
set showmatch  "相関するカッコを強調表示
syntax on      "シンタックスハイライトを有効に
set tabstop=4  "インデントをスペース4つ分に

autocmd BufRead,BufNewFile *.py setfiletype python
autocmd FileType python setlocal completeopt-=preview

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=/home/manage/.vim/bundles/repos/github.com/Shougo/dein.vim

let s:dein_path = expand('~/.vim/bundles')
let s:dein_repo_path = s:dein_path . '/repos/github.com/Shougo/dein.vim'

" Required:
if dein#load_state(s:dein_path)
  call dein#begin(s:dein_path)

  let g:config_dir = s:dein_path . '/userconfig'
  let s:toml       = g:config_dir . '/plugin.toml'
  let s:lazy_toml  = g:config_dir . '/plugin_lazy.toml'

  call dein#load_toml(s:toml,       {'lazy': 0})
  call dein#load_toml(s:lazy_toml,  {'lazy': 1})

  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

vim を起動してプラグインの自動導入

vim を起動すると、dedi が自動ダウンロードしてくれます。

[root@localhost]# vim
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                              VIM - Vi IMproved                                
~                                                                               
~                               version 7.4.884                                 
~                            by Bram Moolenaar 他.                              
~                 Vim はオープンソースであり自由に配布可能です                  
~                                                                               
~                         Vimの開発を応援してください!                          
~                詳細な情報は           :help sponsor<Enter>                    
~                                                                                                                                                             
~                終了するには           :q<Enter>                               
~                オンラインヘルプは     :help<Enter> か <F1>                    
~                バージョン情報は       :help version7
<Enter>
[dein] (1/3) |jedi-vim            | ['git', 'clone', '--recursive', 'https://github.com/davidhalter/jedi-vim.git','/home/manage/.vim/bundles/repos/github.com/davidhalter/jedi-vim']
[dein] (1/3) [======              ] jedi-vim
[dein] (2/3) |vimproc.vim         | ['git', 'clone', '--recursive', 'https://github.com/Shougo/vimproc.vim.git', '/home/manage/.vim/bundles/repos/github.com/Shougo/vimproc.vim']
[dein] (2/3) [=============       ] vimproc.vim
[dein] (3/3) |unite.vim           | ['git', 'clone', '--recursive', 'https://github.com/Shougo/unite.vim.git', '/home/manage/.vim/bundles/repos/github.com/Shougo/unite.vim']
[dein] (3/3) [====================] unite.vim
[dein] Updated plugins:
[dein]   jedi-vim(1 change)
[dein]   vimproc.vim(1 change)
[dein]   unite.vim(1 change)
[dein] Done: (201y/mm/dd hh:mm:ss)
続けるにはENTERを押すかコマンドを入力してください

動作確認する

test.py
print('test')

pythonファイルをいろいろ補助してくれるvimとなりました。

振り返り

ハマった原因は、OSバンドルで導入してあった vim は
pythonライブラリを読む設定でビルドしていなかった点でした。

vim の設定をしっかり見ていれば察しもついたのかな。
そこに気づくまでも長かったです。反省。

vimの使い方

$
0
0

vimとは?

テキストエディタの一種。
vimにはファイルを保存や終了するノーマルモード、テキストを編集する「挿入モード」など、
用途に応じていろんなモードがある。

起動方法

vim ファイルパス

ノーマルモード

起動時はこのノーマルモードになる。
基本ノーマルモードから各モードに遷移する形になる。

Escキー

保存して終了

ノーマルモードにして

:wq

テキストを編集するには?(挿入モード)

挿入モードに切り替えます。

Iキー

コピー&ペースト

コピーはビジュアルモードで行います。
[コピー方法]
1.ノーマルモードにする
2.コピーする開始位置までカーソルを持ってくる
3.Vキーを押しビジュアルモードにする
4.コピーしたい終了位置までカーソルを動かす
5.Yキーでコピー(クリップボードにコピーされる)

[ペースト方法]
1.貼り付ける開始位置までカーソルを移動
2.SHIFT+Pで貼り付け
この時、回数 SHIFT+P で貼り付ける回数も指定できる

戻す(アンドゥ)

ノーマルモードにし、

Uキー

アンドゥで戻したものを戻す

Ctrl + r

vimで開発とかしてみたい(PHP)

$
0
0

いつもIDE(NetBeans)で開発を行っていましたが、vimかっこいい、使えるようになりたいと思ったので、
とりあえずプラグイン入れてなんかそれっぽくできるようにしていった時の備忘録です。

ちなみに私のvimスキルは、入力とか移動とか検索くらいしかできない、まったくvimを使いこなせていない感じの人です。

vimのバージョンを8以上・luaオプション付きにする

プラグインによって上記条件を満たしていたほうが良い場合があるため

# とってくるsudo curl -L https://copr.fedorainfracloud.org/coprs/unixcommunity/vim/repo/epel-7/unixcommunity-vim-epel-7.repo -o /etc/yum.repos.d/unixcommunity-vim-epel-7.repo

# アップデート
yum update vim*# バージョン確認
vim --version# luaが有効か確認(-lua となっていたら無効、 +luaとなっていたら有効)
vim --version | grep lua

参考:CentOS 7 に vim 8 を導入する方法 : パパは家族の長男 ~都会暮らしを楽しく生きたい~

dein.vimインストール

プラグインマネージャーにdeinを使用する
* Shougo/dein.vim

# 任意のディレクトリで
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh

# インストールするディレクトリ作成(名前任意)mkdir-p ~/.vim/dein

# インストール# ここで出力されたスクリプトを、.vimrcに張り付け設定を記載する
sh ./installer.sh ~/.vim/dein

# これはもういらないので削除rm ./installer.sh

.vimrcを編集

先ほどdeinをインストールした際に出力されたものを、.vimrcに張り付けてここに使用したいプラグインを記載していく。
基本は出力されたものそのまま使用したが、以下だけ修正。

  • ホームディレクトリのパスを環境変数に変更
  • インストールされていないものは自動インストールされるようにコメントアウト外す
.vimrc
"dein Scripts-----------------------------if&compatible
  set nocompatible               " Be iMproved
endif" Required:set runtimepath+=$HOME/.vim/dein/repos/github.com/Shougo/dein.vim" Required:if dein#load_state('$HOME/.vim/dein')call dein#begin('$HOME/.vim/dein')" Let dein manage dein" Required:call dein#add('$HOME/.vim/dein/repos/github.com/Shougo/dein.vim')" 追加したいプラグインをここに記載" こんな感じで↓call dein#add('scrooloose/nerdtree')" Required:call dein#end()call dein#save_state()endif" Required:filetype plugin indent on
syntax enable

" インストールされていないものは自動インストールするif dein#check_install()call dein#install()endif"End dein Scripts-------------------------

とりあえず今はこれだけ覚えておく

プラグイン追加

call dein#add('scrooloose/nerdtree')

もし、「やっぱこれ使わない」と思ったら、これ消しちゃえば無効になる(インストールした本体削除したい場合は別途操作必要)

追加したプラグインをインストール

vimを起動すれば、勝手にインストールしてくれる。

これでプラグイン入れてく準備完了

よし、いろいろ入れていくぞ

先に、設定を終えた.vimrcはこちら

.vimrc

NerdTree

こちらの設定をほぼ全部真似させていただきました。
[Vim Plugin] NERDTreeのオススメ設定とコマンド一覧 - KAMIYAのアレ

使用方法はまだよく分かっていないので、使いながら覚えていく

閉じ括弧補完

lexima.gif

HTML関連

閉じタグ補完

closetag.gif

.vimrc
letg:closetag_filenames='*.html,*.xhtml,*.php'letg:closetag_xhtml_filenames='*.xhtml,*.jsx'letg:closetag_filetypes='html,xhtml,php'letg:closetag_xhtml_filetypes='xhtml,jsx'letg:closetag_emptyTags_caseSensitive=1letg:closetag_shortcut='>'letg:closetag_close_shortcut='<leader>>'

>を打ったら閉じタグを自動挿入されるが、1回消したりなんなりした時のために
</と打ったら対応する閉じタグを自動挿入してくれるっぽい設定も書いとく

.vimrc
augroup MyXML
  autocmd!
  autocmd Filetype xml inoremap <buffer></ </<C-x><C-o>
  autocmd Filetype html inoremap <buffer></ </<C-x><C-o>
  autocmd Filetype php inoremap <buffer></ </<C-x><C-o>
augroup END

対応するタグをハイライト

tagmatch.gif

.vimrc
"オプション機能ONにするletg:mta_use_matchparen_group=1"使用するファイルタイプ(phpを追加)letg:mta_filetypes={    \'html':1,    \'xhtml':1,    \'xml':1,    \'jinja':1,    \'php':1,    \}

コード補完

hokan.gif

PHPの辞書ファイル作成

# 辞書ファイルを置いとく任意のフォルダ作成mkdir .vim/dictionary
# 作成
php -r'$f=get_defined_functions();echo join("\n",$f["internal"]);' | sort> .vim/dictionary/php.dict

参考:【vim】neobundle導入&neocomplcacheでPHP補完 - とあるプログラマの備忘録

または、スニペットファイルを作成

こちらのファイルを使用させていただいています。
https://qiita.com/tekkoc/items/8897cdf378305c4e547d

以下設定で辞書ファイルもスニペットファイルも指定していますが、
スニペットファイル指定しているなら辞書ファイルいらなそうだけど備忘録のために記載しています。

.vimrc
"----------------------------------------------------------"  neosnippet-snippets"----------------------------------------------------------" Plugin key-mappings." Note: It must be "imap" and "smap".  It uses <Plug> mappings." <C-k>で、TARGETのところへジャンプ
imap <C-k><Plug>(neosnippet_expand_or_jump)smap<C-k><Plug>(neosnippet_expand_or_jump)
xmap <C-k><Plug>(neosnippet_expand_target)" SuperTab like snippets behavior." Note: It must be "imap" and "smap".  It uses <Plug> mappings."imap <expr><TAB>" \ pumvisible() ? "\<C-n>" :" \ neosnippet#expandable_or_jumpable() ?" \    "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"smap<expr><TAB> neosnippet#expandable_or_jumpable() ?
\"\<Plug>(neosnippet_expand_or_jump)":"\<TAB>"" 独自スニペットファイルのあるディレクトリを指定letg:neosnippet#enable_snipmate_compatibility =1letg:neosnippet#snippets_directory=$HOME.'/.vim/dein/vim-neosnippets/'" For conceal markers.if has('conceal')set conceallevel=2 concealcursor=niv
endif"----------------------------------------------------------"  neocomplete.vim"----------------------------------------------------------"Note: This option must be set in .vimrc(_vimrc).  NOT IN .gvimrc(_gvimrc)!" Disable AutoComplPop.letg:acp_enableAtStartup=0" Use neocomplete.letg:neocomplete#enable_at_startup =1" Use smartcase.letg:neocomplete#enable_smart_case =1" Set minimum syntax keyword length.letg:neocomplete#sources#syntax#min_keyword_length =3" 辞書ファイルを設定(phpを追加)letg:neocomplete#sources#dictionary#dictionaries ={    \'default':'',    \'php': $HOME.'/.vim/dein/php.dict'    \}" Define keyword.if!exists('g:neocomplete#keyword_patterns')letg:neocomplete#keyword_patterns ={}endifletg:neocomplete#keyword_patterns['default']='\h\w*'" Plugin key-mappings.
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#complete_common_string()" Recommended key-mappings." <CR>: close popup and save indent.
inoremap <silent><CR><C-r>=<SID>my_cr_function()<CR>function!s:my_cr_function()return(pumvisible() ? "\<C-y>":"")."\<CR>"" For no inserting <CR> key."return pumvisible() ? "\<C-y>" : "\<CR>"endfunction" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>":"\<TAB>"" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"" Close popup by <Space>."inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>"" AutoComplPop like behavior."let g:neocomplete#enable_auto_select = 1" Shell like behavior(not recommended)."set completeopt+=longest"let g:neocomplete#enable_auto_select = 1"let g:neocomplete#disable_auto_complete = 1"inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP

" Enable heavy omni completion.if!exists('g:neocomplete#sources#omni#input_patterns')letg:neocomplete#sources#omni#input_patterns ={}endifletg:neocomplete#sources#omni#input_patterns.php ='[^. \t]->\h\w*\|\h\w*::'

設定はほとんど公式READMEをコピペです。辞書ファイルのパス・スニペットファイルのパスは設定して、
必要なさそうなのは消し、よく分からないものは残しました。

Git関連

HEADとの差分があるところを分かるようにする

image.png

.vimrc
" 記号更新のタイミングを早くするset updatetime=250" 行に対するハイライトを有効にする場合はこちらをletg:gitgutter_highlight_lines=1

参考:Vimメモ : vim-gitgutterで差分を左端に表示する - もた日記

いろいろできるやつ

image.png
これは:Gdiffで差分を確認したもの。vim上でgitのあれやこれやができる

参考:VimmerなGit使いはfugitive.vimを今すぐ入れたほうがいい - SELECT * FROM life;

その他

自動インデントを外したい

dein.vim内の、以下をoffにする(onで元通り)

.vimrc
" Required:filetype plugin indent off

とりあえず終わる

まだまだいろいろ足りないので、随時直していきたい

VSCodeやVimのTerminalでCtrl+Cのコマンドキャンセルが使えない問題

$
0
0

結論:とりあえずpowershellの場合はCtrl+Uで代用

正式名称はわからないんですが、BashやPowerShellなどのシェルでコマンドを間違えたりしたときにCtrl+Cを押して入力をキャンセルし新しいプロンプトを出すことができます。以下この動作をコマンドキャンセルと呼びます。(実行後のコマンド中断ではなく実行前のキャンセルです)

単に間違えたコマンドをBackspaceで消すよりも早いし間違えた入力が画面に残るので後でコピペとかもできるという利点があります。

私はこの動作を多用するんですが、VSCodeやVimのTerminalでcmdかpowershellを起動するとCtrl+Cを押しても何故かコマンドキャンセルにはなりません。
powershellの場合は^Cと表示されますし、Bashの場合はコマンドキャンセルになるのでキー入力がVSCodeやVimに取られているわけではなさそうです。
ただなぜかCtrl+Cを受け取ってもコマンドキャンセルしないのです。

検索しても特にこの問題に言及している記事がないのでコマンドキャンセルを使う人は少ないのだろうか。

いろいろ試行錯誤してみましたが、解決には至らず、偶然見つけたCtrl+Uでカーソルの左の入力を全て削除というショートカットを使うことにします。
でもこれだと画面からも消えちゃうんだよな。

Vimで単語移動するときの空白扱いについて

$
0
0

Vimで単語移動をするとき、空白や単語の扱いがどうなっているのか曖昧だと作業の効率が下がります。(微々たる差)

wやeを使ったときの挙動

空白を除く文字上からeやwを使ったときの挙動

a b c d e
 d e      (2de
c d e     (2dw

空白文字上からeやwを使ったときの挙動

 a b c d e
 c d e     (2de 0
b c d e    (2dw 0

まとめ

カーソル位置が空白であった場合、その空白のグループのみ空白を単語とみなす。それ以外では空白を単語とみなさない。
deを使用した場合、カーソル位置が空白又は1文字の単語であった場合、それを単語とみなさない。

日常的につかうものを極力Vimにする

$
0
0

何番煎じだ、感は否めませんが。

1ヶ月ほど前に転職して、いつも使ってる設定インポートしても良かったんですが、新しいマシンになったことですし、せっかくだしサラからやってみようと思いました。

早速やっていきます。

環境

OS: macOS Mojave v10.14

vim

デフォルトのvimだとシステムとのクリップボード共有が効かなかったので(自分の場合)、 homebrewで入れ直します。

念の為確認します。

$ vim --version | grep clipboard

-clipboard         +jumplist          +persistent_undo   +vertsplit
+emacs_tags        +mouse_dec         -sun_workshop-xterm_clipboard

-clipboardと、「-」がついている場合、クリップボード共有が使えません。

$ brew install vim --with-override-system-vi

インストールしただけだと、システムデフォルトの vimを向くため、 --with-override-system-viオプションをつけることで、vimと叩いたときに、brewでインストールしたほうが起動するようになります。

再度クリップボードが使えるか確認します。

$ vim --version | grep clipboard

+clipboard         +jumplist          +persistent_undo   +vertsplit
+emacs_tags        +mouse_dec         -sun_workshop-xterm_clipboard

いけるっぽいですね。

あとは、 vimrcに下記の設定を加えときましょう。

" クリップボード共有の有効化
set clipboard=unnamed,autoselect

肥大化するvimrcに疲れる

昔は設定ファイルを育てることに楽しみを感じていたのですが、肥大化していく設定ファイルにめげてしまい、集合知に頼ることにします。

Ultimate vimrcって素晴らしい設定群を公開してくれてる人がいるので、それを使わせてもらうと幸せになれました。

amix/vimrc

READMEに書いてあるとおりにインストールして、僕の場合は下記の設定だけ追加。

$ vim ~/.vim_runtime/vimrcs/basic.vim
" クリップボード共有の有効化※上の記述とかぶりますが、対象ファイルが違うので念の為
set clipboard=unnamed,autoselect

" ノーマルモードの際にコロンとセミコロンを入れ替え(英字配列キーボード用)
nnoremap ; :
nnoremap : ;

" 行番号の表示
set number

gVim

香り家さんからダウンロード&解凍して/Applications以下に配置するだけです。

gVimの設定は以下を追加しました。

" カラースキームの設定
colorscheme desert

" クリップボードの共有
set clipboard+=unnamed

" なぜかgVimのときだけ、日本語入力がおかしくなるので、設定
set imdisable

" 背景が透明になります
autocmd guienter * set transparency=10

" フォントの設定
set guifont=Osaka-Mono:h14

VSCode

VSCodeには、そのままズバリ、 Vimというエクステンションがあるので、インストールしましょう。

大体Vimっぽくしてくれます。

ハイフンを単語選択に含めるようにする

デフォルトの設定だと、アンダースコア含みの文字列は選択範囲にしてくれるのですが、ハイフンも含めたいものです。

設定から、

-"vim.iskeyword":"/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-"+"vim.iskeyword":"/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?"

-が混入しているので削除します。(僕の場合VSCodeの再起動が必要でした)

VSCodeでのやり方を直接検索してもなかなか情報にヒットしなかったので、そもそもVimでやるなら、どうすればいいんだ、ってところを検索したところ、下記がヒットしたので、設定名を参照してVSCodeで当該の箇所を見つけました。

vimで-(ハイフン)を単語に含める方法

:set isk+=-

今回以外の設定でも「Vimでの設定用キーワード」→「VSCodeで当該キーワードを選択して設定」みたいな戦略は有用そうです。

Vimium

Chrome用の拡張で、ブラウザ操作をVimらしくしてくれます。

画面操作

普通にVimです。 hjklで上下左右行きます。 ggでページトップ、 Gでページ末尾に移動します。

ヒストリーバックは Hで、次のページに進むは Lです。

他もだいたいVimなので、詳しくは公式を参照してみるといいと思われます。

参考:philc/vimium

個人的に気に入っているのは、単語選択で、これを使いこなすことで圧倒的にマウスに触る機会が減りました。

  1. ノーマルモードから v押下
  2. cでキャレットモードになるので、選択したい文字列付近まで hjklで移動
  3. 選択したい位置に移動したら v押下
  4. ビジュアルモードになるので好みの文字列を選択したら yしてヤンク

その他

あとは、ターミナルをVi modeにしようかと思ったのですが、これが私にはいまいちとっつきづらくて、結局使わなくなったので割愛します。

それでは、みなさん、良きVimライフを。

test of adding tag to qiita-vim


test from neovim

果たして2018年の今、本当にVimを学ぶべきなのだろうか

$
0
0

https://medium.com/@semanser/is-it-worth-to-learn-vim-in-2018-4798cbf7f2b2の翻訳

vimは非常に人気があり、90年代から広く使われているテキストエディタです。それはプログラマー、作家、システム管理者、DevOps、その他多くのテキストファイルを用いて働く人々によって積極的に使われています。しかし、それは2018年の今、他のモダンなテキストエディタを差し置いて、本当に学ぶべき価値があるものなのでしょうか?

生産性の向上

これが、私がvimを使う、主な理由です。私はフルタイムJavascriptプログラマーとして、様々なコードファイルと、設定を毎日編集しています。vimの背景にあるモードによる編集はとてもシンプルでかつ強力です。簡単にいうと、ほとんど全てのテキストの編集アクションを簡単なキーストロークで実現できます。(例: 単語の消去、行の消去、文の選択等)さらに、そのコマンドを繰り返したり、マクロとして登録したりと行った様々なことが行えます。

Vimを1,2週間使用すると、すべてのアクションは筋肉に記憶されます。テキスト編集やファイルナビゲーションに関連するすべての作業は、1秒未満で実行できます。
もちろん、生産性はワークフローだけではありません。 Vimはすばらしいパフォーマンスを備えており、非常に高速に読み込むことができます。ベンチマークと他のテキストエディタとの比較については、驚くべき記事の中で見つけることができます。

学習曲線

「Vimを学ぶのは難しすぎる」。vimに関する最も有名な神話の一つです。しかし、これは事実ではありません。

他の全てのツールのように、vimには独自の学習曲線があります。多くの人々は初めてvimを試した時、vimに不満を持っています。しかし、これはvimが難しいのではなく、テキストの編集プロセスにおいて一般的に予想が難しいキーバインドを持っているからです。

実際は、Vimはかなりシンプルで、基本を学ぶだけなら1日でできます。 他のツールと同様に、新しい機能を習得するのが簡単です。約2週間(またはそれ以下)の学習の後、あなたはフルタイムでVimと仕事をすることができます。

vimを学ぶには以下が便利です。
* openvim.com
* vim-adventures.cim
* vimtutor

IDEのような振る舞い

多くの人がモダンなIDEのようにvimを動作させる設定が可能かどうかを尋ねます。あなたがもし、linterのような動作、スマートオートコンプリートやファジー検索のようなツールを使用したい場合はどうすれば良いでしょうか? それらはすべてプラグインを利用することで可能となります。

Vimには素晴らしいコミュニティーサポートがあります。これはさらに強力な無限のプラグインを作りだしています。

最新のvim設定の例を見るには、vimpornのサブディレクトリをご覧ください。

あなたのエディタにvim-modeを導入する

これは「真の」vimを学習するための推奨された方法ではありませんが、XCode、QtDesigner、Sublime Textの設定に傾倒しているものの、Vimを試してみたい場合はどうすれば良いでしょうか?Vim-modeはあなたの現在のエディタとVimの妥協点です。

いくつかの有名なvimエミュレータを紹介します。
* Vintage Mode (sublime)
* VSCodeVim (Visual Studio Code)
* FakeVim (Qt Creator)
* ViEmu (Visual Studio, Xcode, Word, Outlook)

終わりに

Vimは、開発者や作家としてできるベストな投資のひとつです。 Vimを学ぶには数週間しかかかりませんが、長期的な恩恵を受けることができます。これは、あなたの人生の中でのテキスト編集時間を数週間または数ヶ月節約します。

test for tag support

$
0
0

tags 'qiita' 'vim'

use : to specify version

test for tag support

果たして2018年の今、本当にVimを学ぶべきなのだろうか

$
0
0

https://medium.com/@semanser/is-it-worth-to-learn-vim-in-2018-4798cbf7f2b2の翻訳

vimは非常に人気があり、90年代から広く使われているテキストエディタです。それはプログラマー、作家、システム管理者、DevOps、その他多くのテキストファイルを用いて働く人々によって積極的に使われています。しかし、それは2018年の今、他のモダンなテキストエディタを差し置いて、本当に学ぶべき価値があるものなのでしょうか?

生産性の向上

これが、私がvimを使う、主な理由です。私はフルタイムJavascriptプログラマーとして、様々なコードファイルと、設定を毎日編集しています。vimの背景にあるモードによる編集はとてもシンプルでかつ強力です。簡単にいうと、ほとんど全てのテキストの編集アクションを簡単なキーストロークで実現できます。(例: 単語の消去、行の消去、文の選択等)さらに、そのコマンドを繰り返したり、マクロとして登録したりと行った様々なことが行えます。

Vimを1,2週間使用すると、すべてのアクションは筋肉に記憶されます。テキスト編集やファイルナビゲーションに関連するすべての作業は、1秒未満で実行できます。
もちろん、生産性はワークフローだけではありません。 Vimはすばらしいパフォーマンスを備えており、非常に高速に読み込むことができます。ベンチマークと他のテキストエディタとの比較については、驚くべき記事の中で見つけることができます。

学習曲線

「Vimを学ぶのは難しすぎる」。vimに関する最も有名な神話の一つです。しかし、これは事実ではありません。

他の全てのツールのように、vimには独自の学習曲線があります。多くの人々は初めてvimを試した時、vimに不満を持っています。しかし、これはvimが難しいのではなく、テキストの編集プロセスにおいて一般的に予想が難しいキーバインドを持っているからです。

実際は、Vimはかなりシンプルで、基本を学ぶだけなら1日でできます。 他のツールと同様に、新しい機能を習得するのが簡単です。約2週間(またはそれ以下)の学習の後、あなたはフルタイムでVimと仕事をすることができます。

vimを学ぶには以下が便利です。
* openvim.com
* vim-adventures.cim
* vimtutor

IDEのような振る舞い

多くの人がモダンなIDEのようにvimを動作させる設定が可能かどうかを尋ねます。あなたがもし、linterのような動作、スマートオートコンプリートやファジー検索のようなツールを使用したい場合はどうすれば良いでしょうか? それらはすべてプラグインを利用することで可能となります。

Vimには素晴らしいコミュニティーサポートがあります。これはさらに強力な無限のプラグインを作りだしています。

最新のvim設定の例を見るには、vimpornのサブディレクトリをご覧ください。

あなたのエディタにvim-modeを導入する

これは「真の」vimを学習するための推奨された方法ではありませんが、XCode、QtDesigner、Sublime Textの設定に傾倒しているものの、Vimを試してみたい場合はどうすれば良いでしょうか?Vim-modeはあなたの現在のエディタとVimの妥協点です。

いくつかの有名なvimエミュレータを紹介します。
* Vintage Mode (sublime)
* VSCodeVim (Visual Studio Code)
* FakeVim (Qt Creator)
* ViEmu (Visual Studio, Xcode, Word, Outlook)

終わりに

Vimは、開発者や作家としてできるベストな投資のひとつです。 Vimを学ぶには数週間しかかかりませんが、長期的な恩恵を受けることができます。これは、あなたの人生の中でのテキスト編集時間を数週間または数ヶ月節約します。

Viewing all 5727 articles
Browse latest View live