2016-05-27 3 views
2

Windows用のgVim 7.4を使用しています。* .shファイルを編集するとワード境界が変化する

* .txtファイルにテキストfirstWord.secondWordがあり、通常モードでは*と入力した場合は、firstwordだけが強調表示されます。

しかし、* .shファイルの中でこれを行うと、firstWord.secondWord文字列全体が強調表示されます。

私はこの動作が嫌いです。私はそれが* .txtファイルのように常に動作するようにしたい。

私はこれがftpluginディレクトリのsh.vimファイルによって引き起こされたと想定していましたが、その中には何も見つかりませんでした。私のsh.vimファイルは、http://dwsharp.users.sourceforge.net/vim/ftplugin/sh.vimと同じです。

* .shファイルに* .txtファイルとは異なる単語境界がないようにするにはどうすればよいですか?

+0

あなたは与えることができます:文字がワード境界のために含まれているかどうか確認するためにiskeywordセットを。シェルファイルで試してみると、以下のコマンド ':set iskeyword - =。'を使ってドットを削除することができます。このコマンドを実行した後、w、b、または*を試して、動作するかどうか確認してください。それがうまくいくなら、私に知らせてください。 – SibiCoder

+1

さらに、 ':verbose set isk?'を試してください。最後に設定したファイルが表示されます。 – 1983

+0

/usr/bin/vim/vim74/pluginに似たパスの下にデフォルトのftpluginがあります。それを確認します。 – SibiCoder

答えて

4

これは'iskeyword'オプションによって発生します。

これは* .txtのバッファの'iskeyword'のデフォルト値である:

[email protected],48-57,_,192-255 

そして、これは* .shにバッファのデフォルト値です:

[email protected],48-57,_,192-255,. 

あなたは手動で削除することができます次のコマンドを実行して、* .shバッファ内のオプション値から余分なドットを削除します。

setlocal iskeyword-=. 

恒久的な解決のために、あなたはあなたのvimrcに以下を追加することができます

au! BufRead *.sh setlocal iskeyword-=. 

私はこの特異性の原因を突き止めてきたと信じています。だから、構文ファイルのように見えます

" AFAICT "." should be considered part of the iskeyword. Using iskeywords in 
" syntax is dicey, so the following code permits the user to 
" g:sh_isk set to a string  : specify iskeyword. 
" g:sh_noisk exists   : don't change iskeyword 
" g:sh_noisk does not exist : (default) append "." to iskeyword 
if exists("g:sh_isk") && type(g:sh_isk) == 1 " user specifying iskeyword 
    exe "setl isk=".g:sh_isk 
elseif !exists("g:sh_noisk")     " optionally prevent appending '.' to iskeyword 
    setl isk+=. 
endif 

が犯人であり、それは 'iskeyword'オプションのその改ざんをオーバーライドするために代替案のカップルを提供しています。私のシステムでは、私はライン /usr/share/vim/vim74/syntax/sh.vimの19から28に次のコードを持っています。例えば

、あなたのvimrcにこれを追加し、g:sh_noiskグローバル変数を使用する:

let g:sh_noisk = 1 
+0

OPで使用されるsh.vim ftpluginは 'iskeyword'を設定しません。それは他のどこから来ているに違いない。 – 1983

+1

ああ、良い点。私は作者が気づいているように、実際にはそうしてはいけません。 – 1983

+0

シンタックス/ sh.vimがキー入力しているg:sh_noiskを設定するには何が必要ですか? – PortMan

関連する問題