Vim Part30

レス数が1000を超えています。これ以上書き込みはできません。
2020/12/18(金) 12:18:50.83
Vim 6以降に関する話題です。
http://www.vim.org/

前スレ
Vim Part29
https://mevius.5ch.net/test/read.cgi/unix/1550073259/

関連情報は>>2-3あたり
2022/10/05(水) 21:27:23.59
://www.soum.co.jp/misc/vim-no-susume/12/
第12回 Vim と日本語
2016.07.06

<このページをみんなでいっしょに読もう!
<僕が要約していくから、僕を信じてね😃
「<」このマークが僕の文だよ。何もないのは参考ページ。

Vim の一番の弱点とされる日本語の扱い。日本語を Vim 上でいかに扱うかは Vimmer の長年のテーマでした。今回は Vim で日本語を扱うときのテクニックについて紹介します

1 なぜ Vim は日本語入力が苦手なのか¶

日本語入力を Vim で行う場合はノーマルモード→インサートモード→日本語入力モードという二段階の手順を踏まなければならず、日本語入力からノーマルモードに戻るときは日本語入力モード→インサートモード→ノーマルモードという手順を踏まなくてはいけません

< ややまどろっこしい表現だけどVimmerのみんなはわかるよね😍
< この問題については簡単に解決できるので あとは略す
2022/10/05(水) 21:36:57.60
2 GUI の Vim と日本語入力

GUI の Vim (GVim) の場合、デフォルトで日本語入力との協調動作が有効になっています。普通は特に設定しなくても、日本語入力中に <ESC> を押せば日本語入力はオフになると思います。

< へ〜、そうなんだ? いま確認したら、たしかにできる。


これは古い IM は協調動作のためのインタフェースを備えていなかったので、Vim 側で無理矢理制御しているためです。Fcitx などの比較的問題を起こしにくい IM を用いることをオススメします。

< Fcitxだよ
2022/10/05(水) 21:40:43.97
いつまで続くのかねぇ F9の日記は
2022/10/05(水) 21:45:11.48
3 CUI の Vim と日本語入力¶

GVim では Vim 本体が IM を制御していましたが、CUI の Vim では IM を制御することができません。そのため、<ESC> を押した際に日本語入力をオフにするためには、IM 側が Vim と協調する必要があります。Vim と協調動作できる IM は少なく、大抵の場合は <ESC> を押してから手動で日本語入力をオフにする必要があるのは難点です。その代わり、Vim の日本語協調動作で問題が発生しないとも言えます。Vim と協調できる IM としては、uim と Fcitx が有名です。

uim は vi 協調モードを備えた IM として有名です。uim の設定項目には「vi 協調モードをオンにする」というそのものズバリな設定があります。この設定を有効にすると、<ESC> を押したときに uim がオフになります。

< uimに興味出てきた(o^∀^o) あと前から気になってたけどfcitx5 ってなんだ? いまのままで

なんも困ってないからしらべてないけど!
2022/10/05(水) 21:47:57.99
俺はかの有名なエフナイン様だ!www
2022/10/05(水) 21:49:02.79
>>966
> %!nkf -f...

これは何?
971名無しさん@お腹いっぱい。
垢版 |
2022/10/05(水) 21:50:40.82
中の人、こいつです
>>968-969
2022/10/05(水) 21:53:46.16
> Fcitx 5の特徴はWaylandセッションで使用することを主眼に置いて開発されていること

Waylandセッション ってなに?
2022/10/05(水) 22:00:13.91
5 日本語の整形

ビジュアルモードで文字列を選択して gq を押すと整形することができます。折り返しの基準となる文字列幅は’textwidth’オプションにより指定することができます。整形前には :setlocal textwidth=80 と実行しておくとよいでしょう。日本語を整形するときには、.vimrc 内で次の設定をしておくとよいです。

set formatoptions+=mM

これだ!良かったー、この情報だ。知りたかったの😍 さっきの

全選択
ggVG

と組み合わせてやってみる
2022/10/05(水) 22:02:10.84
>969
このページ読み終わったらやめるから待っとけバカw
2022/10/05(水) 22:10:38.19
>‘formatoptions’ オプションに m が指定されていると、行整形時マルチバイト文字でも改行します。

こっちはなんとなく意味わかるが

>‘formatoptions’ オプションに M が指定されていると、行を連結したときにマルチバイト文字なら空白を入れないようになります。

こっちは分かりにくい

$ vi ~/.vimrc

" クリップボード連携
set clipboard=unnamedplus
" マウス有効
set mouse=a
" :hで英語でtopicを引くときにはお尻にtopic@en
set helplang=ja,en
" フォント
set guifont=Fira\ Code\ Light\ 20
set guifontwide=msmincho\ 20
" 日本語を整形
set formatoptions+=mM
set textwidth=80

これでいいのか?
2022/10/05(水) 22:15:53.04
おおおおおおおおおっっ できたー...みたい

VGしてgq

なんか...vim って、バーチャファイターみたい(o^∀^o) ゲームっぽいナw よくやったわ、むかし

アーケードで。ケンカなりそうになるんだよな、アレ?
2022/10/05(水) 22:40:43.69
*'textwidth'* *'tw'*
'textwidth' 'tw' 数値 (既定では 0)
バッファについてローカル
入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな
いように空白の後で改行される。値を 0 に設定すると無効になる。
'textwidth' は、'paste' オプションがオンになった時には0が設定され、
'paste' オプションがリセットされた際には復元される。

<==*'textwidth'* *'tw'*

短縮表現あるから ~/.vimrc 書き直してくる、いやコマンド入力時でいいか

:set tw=任意 

<== 習得しましたっ ビジュアル行の意味がわかんなかったけど、いま理解した

大谷きゅうけい。
2022/10/05(水) 22:44:10.53
Vim 標準の整形機能でも、ある程度は整形することができますが、標準では禁則処理を行うことができません。つまり、「、」や「。」が行頭に来てしまう可能性があります。

autofmt.vim を導入すると、禁則処理の問題を解決することができます。://www.vim.org/scripts/script.php?script_id=1939

autofmt.vim を用いた整形では、禁則処理以外にも最初の行のインデントを基準に整形を行うことができ、より自然な整形が実現できます。

================
とありますが、標準デフォルトからできるだけ逸脱したくない主義なので、困ってから考える
これだけ。

ではきゅうけい。vim先輩方!指導コメントをお願いします 
979名無しさん@お腹いっぱい。
垢版 |
2022/10/06(木) 00:01:54.51
>>969>>972-978
2022/10/06(木) 01:08:27.80
Vim 標準の整形機能でも、ある程度は整形することができますが、標準では禁則処理を行うことができません。つまり、「、」や「。」が行頭に来てしまう可能性があります。

autofmt.vim を導入すると、禁則処理の問題を解決することができます。://www.vim.org/scripts/script.php?script_id=1939

autofmt.vim を用いた整形では、禁則処理以外にも最初の行のインデントを基準に整形を行うことができ、より自然な整形が実現できます。

================
とありますが、標準デフォルトからできるだけ逸脱したくない主義なので、困ってから考える
これだけ。
2022/10/06(木) 08:34:27.81
放置してるのに、うるさい。
こっちにしてください。

俺の日記帳 第三冊目 [転載禁止]©2ch.net
https://mao.5ch.net/test/read.cgi/linux/1444805068/
2022/10/06(木) 08:50:15.17
NGしたいのでコテハン付けて下さい
2022/10/06(木) 12:24:13.91
://github.com/fuenor/JpFormat.vim.git

README.md
JpFormat.vimはVimで日本語の禁則処理に対応したフォーマット整形プラグインです。

単純にformatexprへ登録して日本語対応のgqコマンドとして使うことも可能ですが、本プラグインは入力を行いながら編集中の日本語文書を自動整形して原稿の整形結果を常に確認しながら編集を行うことを主な目的にしています。

Vim単体でもwrapmarginやtextwidthなどを使用して整形が行えますが、日本語の禁則処理は考慮されていませんしgqコマンドは空行のみを段落の区切りとみなして連結して改行を埋め込んでしまうので本来の構造が失われます。
JpFormat.vimでは空白行ではなく改行を段落として扱うので改行に意味のある文書でもきちんと整形できます。

JpFormat.vimの大きな特徴は疑似ソフトラップが行える事です。
擬似ソフトラップで折り返しを行う際には改行を埋め込みますが、表示上の改行をマーカーで管理するので原稿形式を何回変更しても元の構造は保持され、何度整形しても元の非整形状態に戻せるために安心して書きかけの原稿に整形を掛ける事が出来ます。
このため未完成原稿でも整形結果を確認しながら、挿入モードで入力する度に自動整形するような使い方もストレス無く実行出来ます。

未完成原稿ではマーカーを使用して整形し、最終原稿では全文連結コマンドかマーカー削除を実行するというのが主な使い方になります。< ココだけ意味が分かりにくい

<==おはよう御座います、このプラグインをインストールしてみます
2022/10/06(木) 12:41:09.88
$ sudo timeshift --delete-all
タグ付きスナップショット '2022-10-06_12-28-37': ondemand

$ git clone ://github.com/fuenor/JpFormat.vim.git ~/.vim/plugin
fatal: destination path '/home/i/.vim/plugin' already exists and is not an empty directory.
fatal: 宛先パス '/home/i/.vim/plugin' はすでに存在し、空のディレクトリではありません。

>>952
> plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/
> ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ
> グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。

$ mkdir ~/.vim/plugin/JpFormat

$ git clone ://github.com/fuenor/JpFormat.vim.git ~/.vim/plugin/JpFormat
Cloning into '/home/i/.vim/plugin/JpFormat'...
remote: Enumerating objects: 341, done.
remote: Total 341 (delta 0), reused 0 (delta 0), pack-reused 341
Receiving objects: 100% (341/341), 123.98 KiB | 991.00 KiB/s, done.
Resolving deltas: 100% (149/149), done.
2022/10/06(木) 12:51:06.95
==>作者さんによる解説ページ。よく理解できないので(使用してるうちに理解できるようになると思われる)解説文中理解できるところだけ。

://sites.google.com/site/fudist/Home/jpformat

日本語対応gqコマンドとして使用する設定
JpFormat.vimには日本語の禁則処理に対応した整形プラグインjpfmt.vimが同梱されています。

jpfmt.vimを日本語対応のgqコマンドとして使用する場合はformatexprを設定してください。

" gqコマンドとして使用する
set formatexpr=jpfmt#formatexpr()


jpfmt#formatexpr()の動作は JpFormat.vimの設定に依存し、「ぶら下げ」処理も行いますが、

gqコマンドとしてはjpvimのほうが違和感がないかもしれません。

日本語対応gqコマンドとしてしか使用しない場合はこれだけで動作します。

====================
==>さくや設定した

Vim単体でもwrapmarginやtextwidthなどを使用して整形が行えますが、日本語の禁則処理は考慮されていませんしgqコマンドは空行のみを段落の区切りとみなして連結して改行を埋め込んでしまうので本来の構造が失われます。

" 日本語を整形
set formatoptions+=mM
set textwidth=80

は事前に削除すべきだと思う。
2022/10/06(木) 12:52:25.21
$ vi ~/.vimrc
/home/i/.vim/plugin/JpFormat/autoload/jpdef.vim の処理中にエラーが検出されました:
行 29:
E117: 未知の関数です: jpfmt#import
行 30:
E121: 未定義の変数です: s:org
E116: 関数の無効な引数です: extend
続けるにはENTERを押すかコマンドを入力してください

==> エラー。ググってすぐ解決できない場合は、もう一つのプラグインに変える。
2022/10/06(木) 13:09:27.55
> GitHubからダウンロードしてきた場合は JpFormat.vim-masterというディレクトリが作成されているはずなので、.vimrcで次のようにランタイムパスを通します。

~/.vim/plugin/JpFormat

JpFormat.vim-master
とリネーム

$ set runtimepath+='/home/i/.vim/plugin/JpFormat.vim-master'

こんどはどうか?
$ vi ~/.vimrc

/home/i/.vim/plugin/JpFormat.vim-master/autoload/jpdef.vim の処理中にエラーが検出されました:
行 29:
E117: 未知の関数です: jpfmt#import


スナップショット: 2022-10-06_12-28-37 ~ JpFormat
==>もどります
2022/10/06(木) 13:44:34.03
>>988
> ==> エラー。ググってすぐ解決できない場合は、もう一つのプラグインに変える。
://github.com/vim-jp/autofmt
こちらに変更
$ mkdir -p ~/.vim/plugin/autofmt
$ git clone ://github.com/vim-jp/autofmt.git ~/.vim/plugin/autofmt

$ vi
/home/i/.vim/plugin/autofmt/autoload/autofmt/japanese.vim の処理中にエラーが検出されました:
行 33:
E117: 未知の関数です: autofmt#uax14#import
/home/i/.vim/plugin/autofmt/autoload/autofmt/uax14.vim の処理中にエラーが検出されました:
行 30:
"LineBreak.txt" 0L, 0B
/home/i/.vim/plugin/autofmt/tools/unicode.vim[113]..function <SNR>9_main の処理中にエラーが検出されました:
行 15:
E684: リストのインデックスが範囲外です: 1
続けるにはENTERを押すかコマンドを入力してください

==> こちらも似たようなエラー吐きまくってダメ

$ git clone ://github.com/vim-jp/autofmt.git ~/.vim/plugin/autofmt

する前に
Usage:
:set runtimepath+=/path/to/autofmt/
:set formatexpr=autofmt#compat#formatexpr()
しておこうか?
2022/10/06(木) 14:07:20.39
スナップショット: 2022-10-06_13-21-26 ~
もどった
寝不足のため、今回のトライはここまで。

> Vim単体でもwrapmarginやtextwidthなどを使用して整形が行えますが、日本語の禁則処理は考慮されていませんしgqコマンドは空行のみを段落の区切りとみなして連結して改行を埋め込んでしまうので本来の構造が失われます。

この状態へ戻ります。これでもぜんぜん困ってなかった。「、」や「。」が行頭に来ても、再整形
すればいいだけ。

お騒がせしました🙇💦
2022/10/06(木) 21:55:09.97
こんばんわ
$ sudo dpkg-reconfigure locales
en_US.UTF-8
にした。なぜ英語かというと英語OSをずーっと使ったことがある人ならわかるが、思いがけない利益がたくさんあるのである。。。ただし、viは日本語で使いたい。


:h

Vim の起動引数 - :help -r

*-g*
-g VimをGUIモードで起動する。|gui|を参照。逆は|-v|を参照。

*-f*
-f GUI: Vimを起動したプログラム(プロセス)から独立しない。
'f' は "foreground" を意味する。省略すると、GUI版のVimは新しい
プロセスへforkして、現在のプロセスは終了してしまう。gvimの編集
セッションが終わるのを待つプログラム(メールソフトやニュースリー
ダーなど)には、"-f" を使うべきだろう。

ちがうなー。ココ関係ない
2022/10/06(木) 21:55:29.49
:h locale | only

ロケールを使用する

>シェルのロケールを設定するには、環境変数$LANGを設定する。例えば、韓国語を使用
するとき、ロケール|locale|の名前が "ko" なら、このように設定する:

sh: export LANG=ko
csh: setenv LANG ko

これを~/.profileや~/.cshrcに書いておけばいつでも設定された状態にできる。


> Vimが使用するロケールだけ設定するには|:language|コマンドを使う:

:language ko

これを~/.vimrcに書いておけばいつでも設定された状態にできる。


<== ココですね!シェルではなく、こんかいはまず> Vimが使用するロケールだけ 設定したい。
2022/10/06(木) 21:55:33.33
:language ja

これを打ち込めばviの起動時に日本語なるのか?

:lan

Current language: "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=ja_JP.UTF-8;LC_COLLATE=en_US.UTF-8;LC
_MONETARY=ja_JP.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=ja_JP.UTF-8;LC_NAME=ja_JP.UTF-8;LC_ADDRESS=
ja_JP.UTF-8;LC_TELEPHONE=ja_JP.UTF-8;LC_MEASUREMENT=ja_JP.UTF-8;LC_IDENTIFICATION=ja_JP.UTF-8"

:lan ja_JP.UTF-8   <==すごい(^^) vimの言語が日本語になった

あとは~/.vimrcに書いておけば
2022/10/06(木) 22:00:26.55
" クリップボード連携
set clipboard=unnamedplus
" マウス有効
set mouse=a
" :hで英語でtopicを引くときにはお尻にtopic@en
set helplang=ja,en
" フォント
set guifont=Fira\ Code\ Light\ 20
" 日本語を整形
set formatoptions+=mM
set textwidth=80

" vimの言語
lan ja_JP.UTF-8

無事vim日本語 なりましたーーっ(T_T)
2022/10/06(木) 22:55:19.81
きょうできなかったプラグインはどうやったら使えるのか、教えて下さい
2022/10/06(木) 23:17:34.72
荒らされてるし、しばらく次スレいらんな
2022/10/06(木) 23:25:23.88
変な人が逃げるまでの時間は空けるとしても neovim/vim のお話はしたい時もなぁい?
2022/10/06(木) 23:38:00.62
荒らされていると感じるのは あなた達の心がゆがんでいるからです。

僕はひたすらvimの質問をしてるだけ。

ただし、教えてもらった恩は忘れないよ(^_^) だから暴言は言わない。あなた達にはネ。

クズどもは別だ。あいつらは別扱いでいくwww
2022/10/06(木) 23:40:50.13
>>999
> neovim/vim のお話はしたい時もなぁい?

とか言いつつ君たちはいっこうに有益な> neovim/vim の話しないじゃないか?

それをすれば、とうぜん僕は黙ってスキルの習得に集中するんだ
2022/10/07(金) 00:36:11.60
文章にノイズが多過ぎる
誰も他人の文章を読むのに時間を割きたくないとの前提に立ち
必要十分な情報のみが記された簡潔な文章を心掛けるべし
1000名無しさん@お腹いっぱい。
垢版 |
2022/10/07(金) 01:05:11.09
>>994
ggrks
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 657日 12時間 46分 21秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況