Vim Part28
■ このスレッドは過去ログ倉庫に格納されています
vimで例えばiをaにnoremapすると、ciwとかのときにもcawって認識されるじゃないですか
単一コマンドのときだけremapして、ciwみたいなときだけ元々のキーにする方法ありませんか? もしかして小指がない人?((((;゚Д゚))))ガクガクブルブル >>440
試してないけどlangmapとか使えばどうにかなるかも noremapの代わりにlangmapするってことでしたら連続したコマンドのときもmap先に固定されませんか? Vimの元ネタのViってまだ開発は続いているんでしょうか?
ググったけどよく分からないです >>440
c のようなコマンドの後続部分は「オペレータ待機モード」のマップの範疇なので
:noremap i a
:ounmap i
ただこの場合は単に
:nnoremap i a
で良い気がするけど
https://vim-jp.org/vimdoc-ja/map.html#omap-info
> あるマップをノーマルモードとビジュアルモードで使用し、そして、オペレータ待機
> モードでは使用しないという場合は、3つのモードに対してマップを定義してからオペ
> レータ待機モードのマップだけを削除します:
> :map xx something-difficult
> :ounmap xx
> ビジュアルモードとオペレータ待機モードの場合や、ノーマルモードとオペレータ待機
> モードの場合も同様にします。 今あるのはviじゃなくてnviじゃね?
unixのコードを取っ払って作り直したvi
軽さ以外であえてこれを使う意味なさそうだけど vimの矩形貼り付けが覚えられないんだけどいい方法ない?矩形挿入は覚えたけど
プラグインはどれ入れればいいか分からんし管理も面倒っぽいし入れてない ビジュアルブロックモードで
??????????
?????? ??????
?????????? ????????
????????
????????????
を
??????????
??????
?????????? ??????
???????? ????????
????????????
ってするのどうやるんや??? 空白行を同数の空白行に変えるだけなので、何もしなくてよい。
HTMLタグをミスって表示されていないだけなら、本人の釈明があるまで放置しておけばよい。 5chってHTMLタグとか効いたっけ。
<br />
<br />
test Vimで地域化されている単語を利用する方法ってある?
うまく説明できるか怪しんだけども
言語環境変数を日本語でVim(huge版)を起動した時は挿入モードに入るとコマンドラインに「-- 挿入 --」という文字が表示されるのに対して
言語環境変数が英語の場合は「-- INSERT --」という表示になるよね。
この処理を拾えないかな。
具体的には,現在のモードをstatuslineにテキストとして反映したい。
その時に英語で立ち上げたときは「INSERT」,日本語で立ち上げたときには「挿入」みたいな表示になってほしい。 >>455ですが質問をとりけします。
statuslineは扱えるコマンドが貧弱すぎて仮に上述が実現したとしても望む表示は得られないと判断しました。 普通にLANG=C vimで英語起動しちゃイカンのか
このCがcancelのCじゃないらしくて驚いたわ >>457
LANG=C vim
で起動した場合はA表示して
LANG=ja_JP.UTF-8 vim
で起動した場合はBを表示
っていうふうにしたいんだわ。
if v:lang='ja_JP'
みたいにしたらいいのは知ってるけど
AやBは翻訳されてる対応関係があるので(INSERTと挿入)
せっかくならそれを利用したい。 >>456
判断ミス。関数呼べて好き勝手にできるよ。 >>455
Pythonインターフェースが有効なVimなら、Pythonのgettextモジュールが使える
素のVim scriptにはなさそう
https://pastebin.com/FTq4Mb3H
ついでに statusline の設定にも挑戦してみたけど、i_CTRL-O のとき期待通りにならなかった
挿入モードで CTRL-O したときの mode() の値は 'niI' だと思ったのだけど、実際には 'n' になってる
set statusline=%!mode() で確認できる >>460
横からだけど
mode()でなくmode(1)
にすればいいんでは。 >>461
おお、できた
:help mode() の一段落目にちゃんと書いてあるじゃんね
最初からその下の表とばっかり睨めっこして、完全に見落としてました
ありがとう Vimのleaderをスペースに割り当てようと思ってるんだけど、暗黒美夢王とかのdotfile見るとそのままスペース+他コマンドってやってて
Leaderとしてのスペースとそのままのスペースの違いってleaderに制限時間あるだけ? >>460
すいません。まさか答えてもらえるとは思えず
返信が遅れてしまいました。
まさにそのようなステータスラインが欲しかったので
ほんとうに感謝しています! >>463
複数キーのマッピングに制限時間があるかどうかは 'timeout' オプションで制御されるのであって、leaderかどうかは関係ないはず ヘルプを引かずにvimコマンドの一覧を出す方法ないですかね
索引とは言わんからbashのhelpみたいな要約が欲しい >>466
"(それぞれのコマンドの)ヘルプを引かずに"って意味だね?
:h quickref Vimでシステムのコマンドを補完する方法ってある?
C-x C-fでシステムのファイルを補完するように。 いまやったら普通に出てきた
:!ここで何か途中まで打ってタブで >>467
マジであるんかい
vimtutorや:の補完と一緒にスレのテンプレに入れておくべき >>469
いやそうじゃなくて
インサートモードのときにそれをやりたんだよ。
意図を伝えられなくてすまん。 失礼します
Vimで
#include <stdio.h>
int main() {
printf("Hello World");
return 0;
}
の intのiにカーソルがある場合、jで下に移動するとiの真下のスペースに改行がいきますが、インデントを考慮して、printfのpに下移動するにはどうしたら良いでしょうか? スペースが省略されてますが、printfとreturnの前に4文字スペースのインデントを入れたつもりでした
すみません >>474
返信ありがとうございます
上移動の時にもインデントを考慮することはできないでしょうか? -で同じように動くけどこれインデントとか関係なく
最初の文字に移動してるだけじゃない ファイルタイプごとのインデント考慮して行移動って出来なかったっけ ノーマルモードでもEnterで空行挿入できるようにしてたわ
、Enterで改行な >>479
vim foo.vim
してインサートモードで
:!<C-x><C-v>
とかか?
スクリプトからなら、例えば
echo getcompletion(‘v’, ‘shellcmd’)
ってすれば、viewやVimやvimdiffやもろもろ表示されるから上手いこと使って。 >>480
>>481
つまり
getcmdpletion('', 'shellcmd')
を辞書につっこんでやればいいのでは raspbianでvimprocビルドしようとすると
セグメンテーションフォルト出るのですが
どうしたらできますか? Linuxのエディタと言えばvimとEmacsだけど他のエディタが普及しなかったのはなぜなんだろうか
nanoの登場からまだ20年経ってないし当時はvi系以外の選択肢がなかったにしてもだな
Ctrl-Aを使う普遍的なキーバインドのCUIエディタが一向に導入されない理由にはならんだろうよ
対してBSDはそれが使えるeeがあるらしいし
別にviへの不満じゃないからgedit使えとか益体もないのはなしで頼む >>483
今使っていませんが、試してみると普通にビルドはできるようですが。
raspi 4.14.62+ >>485
情報ありがとうございます
普通にできるはずなんですね・・
もう少しがんばってみます
Linux raspberrypi 4.14.61-v7
で以下のようになってしまいます
~/.vim/bundle/vimproc.vim $ make
make -f make_unix.mak
make[1]: ディレクトリ '/home/pi/.vim/bundle/vimproc.vim' に入ります
cc -W -O2 -Wall -Wno-unused -Wno-unused-parameter -std=gnu99 -pedantic -shared -fPIC -o lib/vimproc_unix.so src/proc.c -lutil
<built-in>: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
make_unix.mak:17: ターゲット 'lib/vimproc_unix.so' のレシピで失敗しました geditは初心者には使いやすいよ。
viとか鬼畜レベル Vimの:Manプラグイン,日本語の見出しがおかしくなってるんだけど
俺の力ではそもそもなにが駄目なのかすら分からん……
誰か修正できる人いない? Vimでcppを今日初めて書いたのですが、
インサートモードでstd::cin の::打つ時に、1つ目の:の時にインデントが削除され、文ごと行の最初にいきます。(分かりづらくてすみません)
2個目のコロンを打つと直るのですが、文を移動させない方法はありますか?また、どうしてこのような挙動なのでしょうか C言語やC++言語ではラベルつけるときにインデントを一つ下げる習慣があるからじゃない。
void main(){
std::cout << "test";
label1:
std::cout << "label";
goto label1;
}
2回連続::をシュパパパって入力すれば問題解決じゃない? うーん。結局インデントが元に戻るならどうでもいいと思うんだが。 何故改行時にインデント解除するようにしなかったのかという気はする。 標準プラグインだから,みんなメンテされてると思ったらおおまちがい >>498
サンクス
そんな便利な機能が標準であったのか! 便利な機能ではあるんだけど
日本語の見出しがズレたり消えたりするんだよね それ manコマンドのバグだよ。
shellから
man -u MANPAGER man
だとちゃんと画面に表示されるけど、
man -u MANPAGER man > foo
だとエラーが30行くらい表示された挙句、fooの内容は日本語見出しが欠けてる。 manページを保存した時に出るあのエラーやっぱりバグか
じっくり読もうと思ったら一部が欠落してがっかりしたからな manのバグなのね!
やっぱり男は糞だわ!(フェミニスト並の感想) c系コマンドでヤンクされるのってデフォルトですか? set smartindentしてるとシェルスクリプト書いてるときに
字下げブロック内部でも#コメントが行頭に行ってしまう。
多分だけどCなんかのプリプロセス命令と同じ扱いになってるんだろう。
なんで「smart」indentなのにこんなお馬鹿なのか 自分の環境では問題ないけどな
環境がsmartじゃないんだろうね 日頃でvim使ってる奴って覚えるのにどれくらいかかった?
仕事で使ってる奴は尻に火が付いた状態だから参考にならんし除外で
vimよりLinuxの基本コマンド身に付ける方が先かもしれんが >>512
お前はまずエディタにこだわるより先に仕事で使ってるCを覚えろよ >>513
勝手にお前と同業にしてくれるな
悪いこと言わんから見当違いのこと言うくらいならROMってた方がいい ftpluginとかって.vim/after/とかで設定してる?
それともautocmdで.vimrcにまとめたほうがいいのかな。 vimrc分割してる人って少ないね
用途毎分割したほうが見通しが良さそうなのに(´・ω・`) よっぽど巨大なのかな?
自分は折りたたみで十分間に合ってる。
分割までするのはちょっと面倒。 分割しまくってるな。一つのファイルは100行前後。 入力途中のキーがコマンドラインの右端に表示されますけど、この文字数を増やすことってできますか?
キーマップを [one-two-three]a に設定したとして
[one-two-three] まで打ち込むと頭が切れて two-three] な状態になってしまう neovimのフロントエンド
どれもgvimに比べて微妙すぎる…
oniもデカイファイル扱ってると挙動おかしくてイライラするー 不正解
どこが微妙が聞いて欲しいの
そしてデカイファイルを一緒に扱ってほしいの Vimの上級者の人は日本語入力とモードの関係で困ったりしないもの?教えて欲しい。
時々ノーマルモードでIME ONになっていてあちゃーという事がよくある。特にブラウザとか他のアプリから戻った時。
例えばブラウザで何かを検索して、Vimに戻りカーソル動かしたり何かしようとするとIME ONだった、、、となることがあるのだけど。 xfceとfcitx-mozcだけど俺もなるぞ
別のウィンドウに移っただけでIMが勝手にONになる現象
そのくせ必ず起こる訳じゃないから原因特定のしようがない
それっぽい設定はないし端末弄ってる時に限って変わるのは勘弁して欲しい 俺の環境だと全く問題になったことないな
完全にウインドウ毎にONOFFの状態が分かれてる
ターミナルエミュレータも同じのいくつも開いてるけどそれもそれぞれ状態持ってる
gvimは使ってないけど多分それでも問題は起きないはず 流れをぶった切ってしまってすいません。質問があります
コマンドラインモードにて、<C-k>を「カーソル位置から行末まで削除」という機能にマップしたいのですがどうすればいいでしょうか。
例えば「カーソル位置がどこであってもコマンドライン全体を消去」という機能ならば
cnoremap <C-k> <End><C-u>
などとすれば可能ですが、Vimのコマンドラインモードには「カーソル位置を取得して云々」といった機能がないように思えます。
(僕の探し方が悪いのかもしれませんが)
https://vim-jp.org/vimdoc-ja/cmdline.html#cmdline-editing
GNU Bashなどのシェルでは(既定で)Ctrl+Kに「行末まで削除」がバインドされていることが多く、それとVimでの挙動とを合わせたいのです。
どうかよろしくおねがいします。 <Del>が最後のとき前の文字消しちゃわなければできるんだけどね
普通に<Del>使ってるときにも行きすぎて困ることがよくある どっかで拾ったやつ
cnoremap <C-K> <C-\>estrpart(getcmdline(), 0, getcmdpos()-1)<CR> >>532
>>534
ありがとうございます! 解決しました!
getmcdpos()関数なんてあったんですね。
僕はいったいどのような探し方をしていたのでしょうか…… ■ このスレッドは過去ログ倉庫に格納されています