• 締切済み
  • 困ってます

windows でのvimのにimap

windows版のgvim(ver 7.2)を使っています。 ファイルからの読み込みを楽に行いたくて、つぎのキーバインドを作りました。 map <F12> :r d:\vi\tmp\test.txt<CR> normal modeではうまくできるのですが、挿入モードでも同じことを行いたいと 次のキーバインドを作りましたが、うまく動作しません。 map! <F12> :r d:\vi\tmp\test.txt<CR> この場合は :r d:\vi\tmp\test.txt という文字列が表示されてしまいます。 normal modeと同じ動作をさせるには、どのようにすればよいのでしょうか。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数49
  • ありがとう数3

みんなの回答

  • 回答No.1

<ESC>を追加して、 map! <F12> <ESC>:r d:\vi\tmp\test.txt<CR> としたらどうでしょうか。ただし、これだと挿入モードからは抜けてしまいます。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ftpコマンドバッチファイルのリダイレクト結果

    以下のようなバッチファイルを作成しました ftp -s:ftpcmd.txt > ftplog.txt FIND /i "226 Transfer complete" ftplog.txt >NUL exit /b %ERRORLEVEL% ftpcmd.txt open hoge anonymous hoge prompt cd /xxxx/ put test.txt quit こうする事でftp送信が正常に終了したかどうかを exitの終了コードで判断しようとしていたのです バッチファイルを手動で動作させたところ成功です しかしこのバッチファイルを Webサーバのサーブレット(javaプログラム)から 動作させるとftplog.txtの出力結果がなぜか プログラムから実行した時のftplog.txt User (hoge:(none)): open hoge prompt cd /xxx/ put test.txt quit こんな結果になってしまうんです あれれ?ftpコマンドが出力するメッセージがリダイレクトされない んです 手動でこのバッチファイルを実行した時は 以下のようになります 226 Transfer complete. のメッセージがサーブレットからバッチファイルを実行しても ftplogファイルに出力されるように したいのですが 何かいい方法はないでしょうか? 手動実行した場合のftplog.txt ftp> Connected to hoge open hoge 220 Microsoft FTP Service User (hoge:(none)): 331 Anonymous access allowed, send identity (e-mail name) as password. 230 Anonymous user logged in. ftp> Interactive mode Off . ftp> prompt cd /xxx/ 250 CWD command successful. ftp> put test.txt 200 PORT command successful. 150 Opening ASCII mode data connection for test.txt. 226 Transfer complete. ftp: 59523 bytes sent in 0.00Seconds 59523000.00Kbytes/sec. ftp> quit 221

  • Excel : OpenTextメソッドが正常に動作しないのはなぜ?

    下記のようなマクロを作りました。 Sub sample() FileName = ThisWorkbook.Path & "\test.txt" Workbooks.OpenText FileName:=FileName, Comma:=True ActiveWorkbook.SaveAs FileName:=FileName, FileFormat:=xlCSV ActiveWorkbook.Close End Sub test.txt には次のテキストが書かれています。 "あ"," あ " 上記のマクロを実行すると、テキストの中身は次のようになってしまいます。 """あ"",""",あ,"""" 本来であれば、テキストの内容には変化が全くないはずだと思います。 原因が不明なのですが、マクロの動作確認をしたところ、 OpenTextメソッドでテキストを開いたときにすでに、 カンマの位置で区切られてセル内に入っていませんでした。 どのようにすればOpenTextメソッドは希望する動作をしてくれるのでしょうか?

  • Windows Vim インデント

    Windows上で、Vimの使い方の勉強を始めました。 インデントが旨く使えないので、質問します。 プログラムのソースを整列するのに利用したいのですが、 次のような点で困っています。 1.インデント用のタブとして、スペース4文字分を期待しています。 2.set tabstop=4 を設定すると、挿入モードではうまく行きましたが、   ノーマルモードの >> や << には変化がなく、8文字程度の空きができます。 3.またそのとき、4文字程度から左へは、カーソルが移動できません。   挿入モードでは、移動できます。 これらを統一するにはどうすればよいのでしょうか。 考え方の間違いや、設定の仕方を教えていただければ幸いです。

  • samba の共有ディレクトリで、特定のホストから編集できない場合がある

    ここ 2~3 日、トライ&エラーを繰り返してきましたが、 どうにもこうにも解決できませんので、質問させてください。 [環境] Fedora 10  ・Samba 3.2.15 Windows 2008 Server Windows 7(x86) SRV-A(Win2k8)    |    |-smb(samba@Fedora 10)    |    |-PC-A(Win 7)    |    |-PC-B(Win 7)    |    |-PC-C(Win 7) smb や、PC-A、B、C は SRV-A の Active Directory(以下 AD)に参加している状況です。 この AD に foo1 というユーザーを作成し、samba 上のファイルを編集しようとしています。 foo1 は、smb 上のユーザとしても、smb 上の samba ユーザとしても作成しています。 [状況] PC-A に foo1 でログオン。 smb で公開中のディレクトリ hoge をネットワークドライブとして設定。 (この hoge の create mode(mask) は 0764、directory mode(mask)は 755 です) 次に、hoge の中に test.txt というのを作成します。 すると -rwxrw-r-- foo1 foo1 test.txt というのができます(リンクカウント、タイムスタンプなどは割愛)。 当然、foo1 は、PC-A から、この test.txt を編集できます。 しかし、foo1 が、PC-B にログオンし、同一の手順を踏み、hoge ディレクトリを ネットワークドライブに設定しても、この test.txt が編集できません。 但し、PC-B で作成したファイルは編集が可能です。 ただ、同様の作業を、PC-C で行うと、今度は編集が可能です。 read only = no を追加してみたり(もちろん writable = yes にはしているので、 無意味と思われますが)share modes = no にしてみたり、smb に root で ログインし、該当ファイルのパーミッションを 0777 にしてみたりと、 思いついたこと、google 先生に聞いたこと、さまざま試してみましたが、 結局うまくいきませんでした。 まぁ、PC-A と、PC-C の動作が、設定通り (というか期待通り)ですが、PC-B で動かないというのは、PC-B の問題かと 推測するのですが、PC-B に特異な設定をしたわけでもないので、正直お手上げです。 似たような状況にあわれた方、いらっしゃいますでしょうか?

  • 双方向リスト 指定行の削除について

    現在、双方向リストを使用したプログラミングを作成しています。 コマンドラインから指定したファイルを読み込み、各行の文字列を データとする構造体に記録する。ひとつの構造体に1行の文字列を 記録し、それらの構造体を、行の順番に従ってつながった双方向 リスト構造として、ファイル全体を記録する。 さらに、キーボードから指定した行番号の行を削除する処理を行った後に、再度リストを順方向に表示する・・・といった内容です。 文字列を順、逆順ともに表示できるところまではできたのですが、肝心の行の削除の仕方がわからなくて、困ってます。 具体的には、入力した値をどのように関数に当てはめるのか、つまり行削除の関数の処理をどうすればよいのかがわかりません。 ↓は途中のプログラムです。 fcloseの上にキーボード入力と処理後の表示のコマンド、 一番最後のほうにリスト削除用の関数を入力するのだと思いますが・・・。 OSはLinuxです。 回答宜しくお願いします。 #include<stdio.h> #include<stdlib.h> #define LINE 1000 typedef struct num{ char line[LINE]; struct num *next; struct num *prev; }Num; void normal(Num **,Num **,char *); void reverse(Num *,Num *,char *); int main(int argc,char *argv[]) { FILE *fp; char line[LINE]; int i=0,j; Num *head,*tail,*p; head=NULL; tail=NULL; fp=fopen("test.txt","r"); if(fp==NULL){ fprintf(stdout,"File not found.\n"); exit(1); } while(fgets(line,LINE,fp)!=NULL) { normal(&head,&tail,line); } p=head; while(p!=tail){ printf("%s\n",p->line); p=p->next; } printf("%s\n",p->line); p=tail; while(p!=head){ printf("%s\n",p->line); p=p->prev; } printf("%s\n",p->line); fclose(fp); return 0; } void normal(Num **s,Num **e,char *g){ Num *tmp; int i; if(*s==NULL){ *s=(Num *)malloc(sizeof(Num)*1); (*e)=(*s); for(i=0;((g[i]!='\0')&&(g[i]!='\n'));i++){ (*s)->line[i]=g[i];} (*s)->next=*e; (*s)->prev=*s; } else{ tmp=(Num *)malloc(sizeof(Num)*1); for(i=0;((g[i]!='\0')&&(g[i]!='\n'));i++){ tmp->line[i]=g[i];} tmp->prev=(*e); (*e)->next=tmp; tmp->next=(*e); (*e)=tmp; } return ; } void reverse(Num *kan1,Num *kan2,char *g){ Num *tmp; int i; tmp=(Num *)malloc(sizeof(Num)*1); for(i=0;((g[i]!='\0')&&(g[i]!='\n'));i++){ tmp->line[i]=g[i];} tmp->prev=kan1; kan1->next=tmp; tmp->next=kan2; kan2->prev=tmp; return ; }

  • FTPの操作をbatファイル化したいです!

    windowsXP上から、UNIXのサーバーに対して、コマンドプロントを使用し、以下のようなコマンドを打ちたいのですが、毎回この作業をするのは大変なので、以下のコマンドをbatファイル化したいのですが、どのようにすればいいかわかりません。 参考になるようなサイトもいくつか見たのですが、いまいちわからないので、このサイトを参考にして下さいとの回答ではなく、ずばりbatファイルにどのように書けばいいのか教えてください。 お願いします。 C:\Documents and Settings\name>ftp ftp> open 10.1.1.1 Connected to 10.1.1.1. 220 ProFTPD 1.2.2 Server (ProFTPD) [tdc01s] User (10.1.1.1:(none)): loginname 331 Password required for loginname. Password: 230 User loginname logged in. ftp> cd .. 250 CWD command successful. ftp> cd .. 250 CWD command successful. ftp> cd tmp 250 CWD command successful. ftp> put test.txt 200 PORT command successful. 150 Opening ASCII mode data connection for test.txt. 226 Transfer complete. ftp: 4 bytes sent in 0.00Seconds 4000.00Kbytes/sec. ftp> bye 221 Goodbye.

  • vimに詳しい方教えて下さい

    vimで縦分割がしたいのですが :vspritと打ってもこのバージョンでは対応してませんとでてしまいます また:vnewやC-w、vもできません。 ちなみに :sprit や:newや C-w,sや C-w,nなどの横分割や横分割ウインドウ生成は問題なく可能です これは何が問題でできないのでしょうか 他にvimを解説しているサイトを見ると問題なくできているみたいですが… ちなみにバージョンは7.2です このバージョンだからできないのでしょうか…

  • vimについて

    vimを使って文字列を検索するとき /文字列  を使うと指定した文字列に色がつくんですが その色がファイルを閉じても消えないんですが、 消す方法がわかりません。 おしえてくださーい。

  • vim

    vimをインストールしたんですけど、これで組んだプログラムをコンパイルしたり実行するにはどうすればいいのでしょうか? 普段、学校ではリナックスのコンソールを使ってやってるんですけど、Windowsだとコマンドプロンプトだと思ってやってみたんですが、vimで作ったファイルを読み込めません。  

  • ExchangServer2010の設定について

    家でServerの勉強をしています。 WindowsServer2008R2、ExchangeServer2010の評価版をインストールしています。 まずWEBサーバーを構築するためルータの設定をしました。 コレガのルータでコレガでDDNSのサービスをしているのでとりあえず設定しました。 例えば test.corede.net という名前を使用したとします。WEB関連、メール関連のポートは解放しました。 まずドメインサーバーを構築しドメイン名はtest.corede.netで作りました。 仮想PCにXPとVistaのPCを作りドメイン参加も正常に行えました。 つぎにWEBサーバを構築し、外部から正常にHPも閲覧できるようになっています。 その後ExchaneServer2010をインストールしました。ActiveDirectryと連携してメールボックスを作成しました、tarouとhanakoとします。 仮想PC内でメールソフトをいれてそれぞれのアカウントでログオンして作ったサーバーに設定しました、メールアドレスは tarou@test.corede.net と hanako@test.corede.net になっていてそれぞれメールの送受信はできました。しかし、外部とやり取りしようとしても送受信ができません。 例えばtarou@test.corede.netから外部のメールに送信すると送信済みにはなりますが届きません。 また外部のメールかこのアドレスに送信すると宛先が見つかりませんとエラーが帰ってきます。 ExchangeServerの設定で必要なことなのあるのでしょうか。ファイアウォールは無効にしても変わりませんでいた。ExchangeServerの設定などあるのでしょうか、または特別なポートなど使用しているのでしょうか。いちおうOWAは外部からアクセスして正常に動作しています。