Hatena::Groupvim

vim and plasticity

2009-07-07

Linuxのvim(not gvim)にてkeyboard layoutがいつもpc104なのに、insert modeとcommand line modeのCtrl押している間だけjp109になる問題

19:55

俺がバカだっただけぽいけど。一応環境。

ubuntu9.04

Xorg 1:7.3+10ubuntu10.2

vim7.1.138

題名どおり。


なんでだろうなー、気持ち悪いなー、と薄々感づいてはいたけど放置してきた問題をようやく直した。<C-[>でmode抜けようとすると<C-@>と認識されるとか質悪い。

gvimでは問題なかった。


xorg.confのキーボードの箇所が日本語キーボード設定(jp106)なのに、[システム]->[設定]->[キーボード]->[レイアウト]はGeneric 104-key PCにしていたことがおそらく原因。

ということでxorg.confを以下の様に直し、X再起動した。自信ないが、うまく動いているぽいからいいや。

Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"kbd"
	Option		"XkbRules"	"xorg"
	#Option		"XkbModel"	"jp106"
	Option		"XkbModel"	"pc104"
	#Option		"XkbLayout"	"jp,jp"
	Option		"XkbLayout"	"us"
	#Option		"XkbVariant"	"106,"
	Option		"XkbVariant"	"104"
	Option		"XkbOptions"	"grp:alt_shift_toggle,grp_led:scroll"
EndSection

しかしCtrl押してる間だけlayout変わるって変な挙動だな。

NormNorm2011/07/11 02:18You keep it up now, unedrtsand? Really good to know.

tkxvpjtkxvpj2011/07/11 17:53Ao3fZ7 <a href="http://xgsdwumiqgsa.com/">xgsdwumiqgsa</a>

grmqzaycgrmqzayc2011/07/11 21:42du88n9 , [url=http://yhqewnwhdytc.com/]yhqewnwhdytc[/url], [link=http://eefcdgtbhvbt.com/]eefcdgtbhvbt[/link], http://rqzkljdzfchs.com/

zkdcjoxgfazkdcjoxgfa2011/07/13 18:47VJyfR1 <a href="http://kwkuvzbyvnno.com/">kwkuvzbyvnno</a>

2009-06-20

jumpも覚えるか

05:25

参考 :help jump-motions

jump-listの確認

:ju[mps]


jump-motions

8. Jumps					*jump-motions*

A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n",
"N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" and
the commands that start editing a new file.  If you make the cursor "jump"
with one of these commands, the position of the cursor before the jump is
remembered.  You can return to that position with the "''" and "``" command,
unless the line containing that position was changed or deleted.

jumpしたときに、Vimはjump前のカーソル位置を覚えています、と。

bufferを開くこともjumpに含まれているので注意。

<c-f>,<c-b>,<c-u>,<c-d>はjumpに含まれていないので注意。

"gg"は書いてないがjumpに含まれている模様。"1G"のaliasなのだろうか。


jump-listを移動

<C-O>(alphabetのo)でjump元に戻れる。jump-listを辿れる。bufferを跨いで戻るので乱発注意。

<C-I>(alphabetのi),<Tab>でjump-listを進める。

							*CTRL-O*
CTRL-O			Go to [count] Older cursor position in jump list
			(not a motion command).  {not in Vi}
			{not available without the +jumplist feature}

<Tab>		or					*CTRL-I* *<Tab>*
CTRL-I			Go to [count] newer cursor position in jump list
			(not a motion command).
			In a |quickfix-window| it takes you to the position of
			the error under the cursor.
			{not in Vi}
			{not available without the +jumplist feature}

jumpは便利だけど、乱発すると狙ったとこにうまく戻れない感が。

jump-list見ても何がどこだか分からないし。

<C-O>で戻るのは記憶してる範囲に留めるのがいいかもしれない。それ以上はmarkするとかして。


最後にinsert-modeだった場所に戻る

gi

bufferは跨がない。

便利かも。

registerでも覚えるか

03:52

参考1 :help :registers

参考2 :help registers


現在のレジスタの確認

:reg[isters]


レジスタの種類

[RO]はRead Onlyのレジスタを意味する。

""Unnamed register.最後に用いられたregisterを指す
"0yankしたときに用いられるregister
"1delete,changeの際に用いられるregister
"2delete,changeの際、旧"1の値が入る
"3delete,changeの際、旧"2の値が入る
...... "4から"9まで同じ ...
"-small delete register.1行以下のdelete内容が入る
"aレジスタa。ユーザが指定しないと使われない。
"A指定すると"aに追加(append)される
...... 以下"b,"Bから"z,"Zまで同じ ...
".The last inserted text.[RO]
":The most recent executed command-line.[RO]
"%Current file name.[RO]
"#Alternate file name.[RO]
"=Expression register.計算してくれる特殊なレジスタ*1[RO]
"*X11ならMouse overした内容、またはVisual modeで選択した内容。 WindowsならClipboardの内容。
"+X11ならClipboardの内容。Windowsなら"*と同じ。
"~Drag and dropの際に用いられる[RO]
"_Black hole register.何も起こらない。

レジスタに書き込む

"0から"9はyank,delete,changeの際にVimが放り込んでいくけど、"a-"z,"A-"Zは指定しないと使われない。特定のレジスタに書き込むには、yy,dd,cc,etc.の前にレジスタを指定すれば良い。

"aに書き込むには、

"add

などとすればいい。

数字レジスタに書き込むことも出来る。あんまり意味なさそうだけど。


Clipboardに書き込むなら、

"+yy

とか。


レジスタの読み込み

Insert mode, Command-line modeにて、<C-R>の後にレジスタをDouble quote(")無しで指定する。

つまり"aの内容を読み込むには、

<C-R>a

と押す。

もしくはNormal modeでレジスタを指定してpaste,

"ap

としてもいい。

*1:Reference :help "=

2009-06-17

Command-line mode

05:05

現ファイル名が%で表されることは知っていたけど、

:!javac %

それだけでは不便なので、もっと細かく指定出来ないものかと思っていた。

やっと発見。


6. Ex special characters				*cmdline-special*


In Ex commands, at places where a file name can be used, the following
characters have a special meaning.  These can also be used in the expression
function expand() |expand()|.
	%	Is replaced with the current file name.		  *:_%* *c_%*
	#	Is replaced with the alternate file name.	  *:_#* *c_#*
	#n	(where n is a number) is replaced with the file name of
		buffer n.  "#0" is the same as "#".
	##	Is replaced with all names in the argument list	  *:_##* *c_##*
		concatenated, separated by spaces.  Each space in a name
		is preceded with a backslash.
	#<n	(where n is a number > 0) is replaced with old	  *:_#<* *c_#<*
		file name n.  See |:oldfiles| or |v:oldfiles| to get the
		number.							*E809*
		{only when compiled with the +eval and +viminfo features}

ファイル名関連の取得修飾子。長いので抜粋。

							 *filename-modifiers*
	 *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
"<afile>" or "<abuf>".  They are also used with the |fnamemodify()| function.
These are not available when Vim has been compiled without the |+modify_fname|
feature.
These modifiers can be given, in this order:
	:p	Make file name a full path.  Must be the first modifier.  Also
		changes "~/" (and "~user/" for Unix and VMS) to the path for
		the home directory.  If the name is a directory a path
		separator is added at the end.  For a file name that does not
		exist and does not have an absolute path the result is
		unpredictable.

	:h	Head of the file name (the last component and any separators
		removed).  Cannot be used with :e, :r or :t.
		Can be repeated to remove several components at the end.
		When the file name ends in a path separator, only the path
		separator is removed.  Thus ":p:h" on a directory name results
		on the directory name itself (without trailing slash).
		When the file name is an absolute path (starts with "/" for
		Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that
		part is not removed.  When there is no head (path is relative
		to current directory) the result is empty.
	:t	Tail of the file name (last component of the name).  Must
		precede any :r or :e.
	:r	Root of the file name (the last extension removed).  When
		there is only an extension (file name that starts with '.',
		e.g., ".vimrc"), it is not removed.  Can be repeated to remove
		several extensions (last one first).
	:e	Extension of the file name.  Only makes sense when used alone.
		When there is no extension the result is empty.
		When there is only an extension (file name that starts with
		'.'), the result is empty.  Can be repeated to include more
		extensions.  If there are not enough extensions (but at least
		one) as much as possible are included.

簡単なまとめ:

%:p が現bufferのfullPath。

%:h がHeader。file名抜かしたpath。

%:t がTail。Header以外。

%:t:r がRoot。拡張子無しのfile名。

%:t:e がExtension。拡張子。


拡張子を取り去るにはもっと簡単な方法が。

					*extension-removal* *:_%<*
If a "<" is appended to "%", "#", "#n" or "CTRL-V p" the extension of the file
name is removed (everything after and including the last '.' in the file
name).  This is included for backwards compatibility with version 3.0, the
":r" form is preferred.  Examples: >

よってjava fileをvim上でcompile,runするには

:!javac %; java %<

とすれば良いと。で適当にどこかのキーにMapすればいいと。


:au BufNewFile,BufRead *.java noremap <leader><leader> :!javac %; java %<<cr>

こんな感じか。


追記:

~/.vimrcに以下を追加して、

filetype plugin on

~/.vim/ftplugin/java.vimに以下を書いた。

nnoremap <buffer> <leader><leader> :<c-u>!javac %; java %<lt><cr>

もうfiletype-detectされてるため、autocmdはいらないようだ。c.vimとcpp.vimも作って試してみた。

参考:help filetypes


新しいfiletype作るなら

:help new-filetype

を参考にすると。

ヘルプ強い。

command-line modeでの操作

03:27

help見てたらC-Wなんてもの見つけた。

CTRL-W
Delete the word before the cursor.

CTRL-Hでちまちま消す必要なかったのだね。

ふと思い立ってTerminalでも試してみたらzshでもbashでも使えて噴いた。ずっと欲しいと思ってたよこの機能。

StitchesStitches2011/07/09 21:11These topics are so cofunsing but this helped me get the job done.

uvxenwtuvxenwt2011/07/10 00:245cnnWn <a href="http://veoutzanwfee.com/">veoutzanwfee</a>

jnxvmhvslkojnxvmhvslko2011/07/10 20:30CvbbSy , [url=http://mmhpnqhmsxvk.com/]mmhpnqhmsxvk[/url], [link=http://ahtezymyylxy.com/]ahtezymyylxy[/link], http://arivdxtdetii.com/

ipwdofcdfbipwdofcdfb2011/07/11 20:23SecTcO <a href="http://jcmlvsnfzpoe.com/">jcmlvsnfzpoe</a>

paljtydtaxrpaljtydtaxr2011/07/12 22:448CaEIS , [url=http://yiowgcntnemt.com/]yiowgcntnemt[/url], [link=http://aivyeqzrfzps.com/]aivyeqzrfzps[/link], http://awysqhficrfm.com/

pfizer viagrapfizer viagra2016/09/15 04:13
You've gotten good knowlwdge on this website. weferhervvbt

golistergolister2017/02/02 18:39
I could subscribe.

2008-12-26

hoge

07:50

moge

てけてけ.

TerrahTerrah2011/07/08 02:17You’re the one with the barnis here. I’m watching for your posts.

fngcgijvmzffngcgijvmzf2011/07/08 16:28TGNoLO <a href="http://evxcikkwrgkm.com/">evxcikkwrgkm</a>

gchqqkogchqqko2011/07/11 01:16BqocUn <a href="http://ugfjvtfnyvte.com/">ugfjvtfnyvte</a>

nsyvkrnsyvkr2011/07/11 23:28pkd4zU , [url=http://wfvfwfgbulee.com/]wfvfwfgbulee[/url], [link=http://ixzimvkwkjtw.com/]ixzimvkwkjtw[/link], http://iycvaputjntf.com/