yochiyochirb/practical-vim

第1回 2016-12-04 (日) 〜 2016-12-10 (土)

Opened this issue · 17 comments

📆 期間

2016-12-04 (日) 〜 2016-12-10 (土)

📖 読む範囲

p. 5 〜 p. 24

  • 目次
  • 謝辞
  • 序文
  • Read Me
  • RTFM (Read the Forgotten Manual)

読みました 👐
初回のコメントなのでどうやってまとめていくといいか定まっていないけど、気になったところとかをめもしてみます。

:h key-notation

初めて読んだ。(いかに私が vim の詳細を気にしていなかったかがばれる...かもしれない)

					*key-notation* *key-codes* *keycodes*
These names for keys are used in the documentation.  They can also be used
with the ":map" command (insert the key name by pressing CTRL-K and then the
key you want the name for).

notation	meaning		    equivalent	decimal value(s)	~
-----------------------------------------------------------------------
<Nul>		zero			CTRL-@	  0 (stored as 10) *<Nul>*
<BS>		backspace		CTRL-H	  8	*backspace*
<Tab>		tab			CTRL-I	  9	*tab* *Tab*
							*linefeed*
<NL>		linefeed		CTRL-J	 10 (used for <Nul>)
<FF>		formfeed		CTRL-L	 12	*formfeed*
<CR>		carriage return		CTRL-M	 13	*carriage-return*
<Return>	same as <CR>				*<Return>*
<Enter>		same as <CR>				*<Enter>*
<Esc>		escape			CTRL-[	 27	*escape* *<Esc>*
<Space>		space				 32	*space*
<lt>		less-than		<	 60	*<lt>*
<Bslash>	backslash		\	 92	*backslash* *<Bslash>*
<Bar>		vertical bar		|	124	*<Bar>*
<Del>		delete				127
<CSI>		command sequence intro  ALT-Esc 155	*<CSI>*
<xCSI>		CSI when typed in the GUI		*<xCSI>*

<EOL>		end-of-line (can be <CR>, <LF> or <CR><LF>,
		depends on system and 'fileformat')	*<EOL>*

<Up>		cursor-up			*cursor-up* *cursor_up*
<Down>		cursor-down			*cursor-down* *cursor_down*
<Left>		cursor-left			*cursor-left* *cursor_left*
<Right>		cursor-right			*cursor-right* *cursor_right*
<S-Up>		shift-cursor-up
<S-Down>	shift-cursor-down
<S-Left>	shift-cursor-left
<S-Right>	shift-cursor-right
<C-Left>	control-cursor-left
<C-Right>	control-cursor-right
<F1> - <F12>	function keys 1 to 12		*function_key* *function-key*
<S-F1> - <S-F12> shift-function keys 1 to 12	*<S-F1>*
<Help>		help key
<Undo>		undo key
<Insert>	insert key
<Home>		home				*home*
<End>		end				*end*
<PageUp>	page-up				*page_up* *page-up*
<PageDown>	page-down			*page_down* *page-down*
<kHome>		keypad home (upper left)	*keypad-home*
<kEnd>		keypad end (lower left)		*keypad-end*
<kPageUp>	keypad page-up (upper right)	*keypad-page-up*
<kPageDown>	keypad page-down (lower right)	*keypad-page-down*
<kPlus>		keypad +			*keypad-plus*
<kMinus>	keypad -			*keypad-minus*
<kMultiply>	keypad *			*keypad-multiply*
<kDivide>	keypad /			*keypad-divide*
<kEnter>	keypad Enter			*keypad-enter*
<kPoint>	keypad Decimal point		*keypad-point*
<k0> - <k9>	keypad 0 to 9			*keypad-0* *keypad-9*
<S-...>		shift-key			*shift* *<S-*
<C-...>		control-key			*control* *ctrl* *<C-*
<M-...>		alt-key or meta-key		*meta* *alt* *<M-*
<A-...>		same as <M-...>			*<A-*
<D-...>		command-key (Macintosh only)	*<D-*
<t_xx>		key with "xx" entry in termcap
-----------------------------------------------------------------------

Note: The shifted cursor keys, the help key, and the undo key are only
available on a few terminals.  On the Amiga, shifted function key 10 produces
a code (CSI) that is also used by key sequences.  It will be recognized only
after typing another key.

Note: There are two codes for the delete key.  127 is the decimal ASCII value
for the delete key, which is always recognized.  Some delete keys send another
value, in which case this value is obtained from the termcap entry "kD".  Both
values have the same effect.  Also see |:fixdel|.

Note: The keypad keys are used in the same way as the corresponding "normal"
keys.  For example, <kHome> has the same effect as <Home>.  If a keypad key
sends the same raw key code as its non-keypad equivalent, it will be
recognized as the non-keypad code.  For example, when <kHome> sends the same
code as <Home>, when pressing <kHome> Vim will think <Home> was pressed.
Mapping <kHome> will not work then.

Vim のバージョンについて

最近のコンピュータでは、huge 機能セットよりも少ない機能セットを使用する理由はどこにもない!

というところの意図がいまいちわからんかった。
💻 の保存容量とか処理機能が十分なものが普通に流通しているから、っていうことかな?

GUI

ここを読んで :h gui というのがあるのを知って、gui-start してみようとしたけどできなかった。ちょっとあとで調べてみてまためもする。

意図がいまいちわからんかった

💭 というか huge 機能セット(Huge version というやつ?)という概念をしらなかった。

読みましたー。
細かく深追いしすぎて挫折するのが嫌っていうのもあり、さらっとw
その代わり、どんどん先まで読み進めています。

読むペース合ってないかもしれませんが、このrepoのissueはみんなと情報交換するのに使わせてもらえればと... 🙏

読みました 👀

  • --versionで確認したら Huge version without GUI とあったので :h gui は諦めました
  • 特殊キーの表示キャリッジリターンというものがあったので、タイプライターについて調べました。タブやバックスペースがどういうものなのか、キャリッジリターンとラインフィードの関係などなど、タイプライター由来のキーボード表現の理解が深まった
  • :h vimtutor 読んでたらこんな一節が。これ知るだけで急にhelpに親しみが
       Press  CTRL-]  to jump to a subject under the cursor.
       Press  CTRL-O  to jump back (repeat to go further back).
  • syntax on するとhelpが目に優しくなりました

読みました。

  • Homebrew からインストールした Vim では :vimtutor が動かなかったので、/usr/local/Cellar/vim/8.0.0124/share/vim/vim80/tutor にあった tutor.ja.utf-8 とかを開いてみました。
  • 「これについて詳しくは TIP XX を参照」とかいうのがちょいちょい出てきて、そのとき指示通り先の方を読んでみるかどうかが悩むんですがとりあえず自分は読まないようにして進めてみることにしました

読みました

  • http://qiita.com/b4b4r07/items/f7a4a0461e1fc6f436a4 少し古い記事ですが種類が5つあるようですね。ubuntuは最小構成のため、普段使っている機能が使えないという状態になる可能性があるので頭の片隅に入れておくといいかも
  • brew install macvim実施後に、ターミナルでmvimと入力するとguiで立ち上がるようです。
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Dec  9 2016 15:25:08)
MacOS X (unix) version
Included patches: 1-124
Compiled by Homebrew
Huge version with MacVim GUI.  Features included (+) or not (-):

💭 guiならではの旨味って何かあるんですかね?

gui-start 自体の help あった...(当たり前か)

1. Starting the GUI                             gui-start E229 E233

First you must make sure you actually have a version of Vim with the GUI code
included.  You can check this with the ":version" command, it says "with xxx
GUI", where "xxx" is X11-Motif, X11-Athena, Photon, GTK2, GTK3, etc., or
"MS-Windows 32 bit GUI version".

vim の :version@ta1kt0me さんが(おそらくコマンドラインで)やった --version と同じですよね。私のも

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Sep 13 2016 11:28:03)
MacOS X (unix) version
Included patches: 1-2
Compiled by Homebrew
Huge version without GUI.

と出たので GUI はいってないやつでした。

GVim (Mac なので MacVim) を入れてみる

といっても、http://macvim-dev.github.io/macvim/ から辿って dmg をダウンロードして展開するだけであった 🙊
でも、これは vim とは別に MacVim という "別の" ソフトウェアをインストールしている形なんですよね。

guiならではの旨味って何かあるんですかね?

gvim pros cons で検索してみたら http://unix.stackexchange.com/questions/40703/advantages-or-downsides-of-gvim-over-vim-to-edit-code を見つけました。

ひとつの特長としてはマウス操作ができるってことですが、実際やってみたらカーソルの位置をマウスで移動させてそこから操作開始できるようになるので、vim way に慣れていない人にとって便利になっているのかもしれないですね(私もたまに意図通りの位置になかなかいけなくて lllllllllll とかやってる時ある... 😇 )。

ま〜でもきっとここにいる人たちにとっては、ワザワザ GUI のほうを使う必要性はほぼないんだろうな🐶

💭 あ、もしかして Windows だとまた事情が違ったりして、GUI 使ったほうがいいとかあるのかも...?

結局本に書いてある

GVim は 構文の強調表示用にターミナルバージョンよりも多くのフォント/色をサポートして いる。マウスも使える。OS 固有の作法も一部尊重されている。たとえば、MacVim で は、Cmd-Xキー、Cmd-Vキーを使ってクリップボードを扱ったり、Cmd-Sキーでドキュ メントを保存したり、Cmd-Wキーでウィンドウをクローズしたりできる。Vim に慣れ ていない間はこれらを使おう。ただし、常にもっとよい方法があることは覚えておく こと。

が答えだった💫

おお、ありがとうございます!

💭 guiならではの旨味って何かあるんですかね?

とコメントした後にGUIバージョンを使っていて、

  • デフォルトで色がいい感じ(あまりデフォルト設定いじりたくない)
  • マウスでコピペする時に行数表記を気にしなくて良い(CUIのときは:set nonuで消したりしてました)
  • ターミナルとの行き来が若干面倒で、vimで色々済ませたくて vim-fugitive を入れてgit操作をしたり

と、地味に気に入って使ってますw
GUIならではの機能はそこまで使っていないのでCUIでいいんじゃね?と言われたら何も言い返せませんが、、

マウスでコピペする時に行数表記を気にしなくて良い(CUIのときは:set nonuで消したりしてました)

これ超わかります...私も :set nonumber してコピペしてました。。だから esa とかに vim で書いたコード貼り付ける時、なんかこれ大変だな〜と思ってました 😭 だいたいそういうときは atom でファイル開き直したり。。

vimでコピーした時にclipboardにもコピーするようにもできるのですが( http://qiita.com/m_osumi/items/3ca4ab80fc465d8eed7e )、私はなんとなくマウスでコピペすることが多いのでそういう方はGUI試してみる価値あるかもですね〜

関係ないですが何故か矩形読めない事件を思い出したw2年半も経つのか(しみじみ)

.@ohtsuka_t さん「これをこうします…で、あれ、これ何形でしたっけ」みんな「矩形です!!!」 #yochiyochirb
— よちよち.rb のゆかお(Yuka) (@yucao24hours) 2014, 4月 28

以前 GVim (MacVim) を結構使ってましたが、2人が言ってるみたいにマウスで選択とかに優位性がありますね。

「マウス使わないよ!」って人も多いとは思うんですが、この辺個人的には結構でかいと思ってて、それは日本語を扱うときの快適さが相当違うからです。

Vim は単語区切りのはっきりした英文やプログラムとかではかなり快適に操作できますが日本語入力に関してはぶっちゃけ超使いづらいと思ってます。改行の少ない日本語の文章で編集したい箇所にカーソルを持っていったり範囲選択したりというのは (Migemo 使えばだいぶマシになるとはいえ) かなり厳しいですよね。そんなときにマウス使えるのはかなり嬉しいです。

あとは日本語の場合、そもそも Vim と IME との相性が悪い (Vim がモーダル x IME がモーダル で常にそれらの組み合わせを意識しないといけない) のですが、GVim なら IME の ON/OFF でカーソルの色を変えたりできるのも Vim での日本語入力に優しい点です。

一方でターミナルから起動する Vim と違ってカレントディレクトリや環境変数などのシェルの情報が引き継がれないのはちょっとやりづらいところですね。

なので、Vim/GVim の使い分けは結構アリだと思ってる派です。

ちなみに私は日本語使うなら Atom を立ち上げます 🙈

fmfm,なるほどです!

一方でターミナルから起動する Vim と違ってカレントディレクトリや環境変数などのシェルの情報が引き継がれないのはちょっとやりづらいところですね。

そうなんですよねぇ、ディレクトリに関して言うと、昔MacVim使おうと思ったことがあったのですが、Spotlight検索で立ち上げて -> ディレクトリ移動して…というのが面倒で止めたことがあります
しかし今回ターミナル上からmvimと打つとホームディレクトリをよろしくやってくれるということがわかったのでその点では気にならなくなりました

最後w

しかし今回ターミナル上からmvimと打つとホームディレクトリをよろしくやってくれるということがわかったのでその点では気にならなくなりました

おお、なるほど!確かにこれなら良さそうですね

関係ないですが何故か矩形読めない事件を思い出したw2年半も経つのか(しみじみ)

めっちゃなつかしい!w